137
Phần 1 : Ôn tập PHP & MySQL 1

Phần 1 : Ôn tập PHP & MySQL

  • Upload
    tehya

  • View
    90

  • Download
    3

Embed Size (px)

DESCRIPTION

Phần 1 : Ôn tập PHP & MySQL. PHP at Yahoo! http://www.yahoo.com. The Internet’s most trafficked site. Nội dung. Giới thiệu PHP cơ bản Cấu trúc điều khiển Hàm & Mảng Form & Cơ chế truyền dữ liệu Kỹ thuật gửi tập tin Kết nối dữ liệu Cookie & Session. Cơ chế hoạt động của Webserver - PowerPoint PPT Presentation

Citation preview

Page 1: Phần 1 :  Ôn tập PHP & MySQL

1

Phần 1 :

Ôn tập PHP & MySQLPhần 1 :

Ôn tập PHP & MySQL

Page 2: Phần 1 :  Ôn tập PHP & MySQL

2

PHP at Yahoo!http://www.yahoo.com

The Internet’s most trafficked site

Page 3: Phần 1 :  Ôn tập PHP & MySQL

3

Nội dungNội dung

1. Giới thiệu

2. PHP cơ bản

3. Cấu trúc điều khiển

4. Hàm & Mảng

5. Form & Cơ chế truyền dữ liệu

6. Kỹ thuật gửi tập tin

7. Kết nối dữ liệu

8. Cookie & Session

Page 4: Phần 1 :  Ôn tập PHP & MySQL

4

GIỚI THIỆUGIỚI THIỆUNội dung 1

- Cơ chế hoạt động của Webserver- Môi trường phát triển PHP

Page 5: Phần 1 :  Ôn tập PHP & MySQL

5

CƠ CHẾ HOẠT ĐỘNG CỦA WEBSERVERCƠ CHẾ HOẠT ĐỘNG CỦA WEBSERVER

Nội dung 1.1

Page 6: Phần 1 :  Ôn tập PHP & MySQL

Cơ chế hoạt động của WebServerCơ chế hoạt động của WebServer

6

Users (clients) Browse

Internet

(WWW)

WWW Servers

Authors write HTML

Resources

(HTML files)

Page 7: Phần 1 :  Ôn tập PHP & MySQL

Cơ chế hoạt động của WebServerCơ chế hoạt động của WebServer

2Internet

or Intranet

www.example.comWebserver Apache

or IIS

ServerSide Script Parser

(PHP, ASP, ..)

DatabaseServer

Diskdriver

3

45

67

7

HTML

Page 8: Phần 1 :  Ôn tập PHP & MySQL

8

MÔI TRƯỜNG PHÁT TRIỂN PHPMÔI TRƯỜNG PHÁT TRIỂN PHPNội dung 1.2

Page 9: Phần 1 :  Ôn tập PHP & MySQL

9

Môi trường phát triểnMôi trường phát triển

• Webserver• Compiler• IDE• Database Server

Page 10: Phần 1 :  Ôn tập PHP & MySQL

10

Netbean for PHP (Jun-2010)Netbean for PHP (Jun-2010)

• Các thành phần cài đặt• Cấu hình Debug• Tạo project• Debug website

Page 11: Phần 1 :  Ôn tập PHP & MySQL

11

NetBeans IDE 6.8http://services.netbeans.org/bouncer/index.php?product=netbeans-6.8-ml-php&os=windows Full WebServer XAMP 1.7.3PHP Engine (5.3.1), Apache 2.2.14, MySQL (5.1.41)http://www.apachefriends.org/download.php?xampp-win32-1.7.3.exe

PHP Engine 5.3.2http://windows.php.net/downloads/releases/php-5.3.2-Win32-VC9-x86.msi Web Server Apache 2.2http://apache.multihomed.net/httpd/binaries/win32/httpd-2.2.15-win32-x86-no_ssl.msi Database Server MySQL 5.0http://dev.mysql.com/downloads/mirror.php?id=389367

PHP Debuger Xdebug 5.2http://www.xdebug.org/files/php_xdebug-2.1.0RC1-5.2-vc6-nts.dll

Netbean for PHP (Jun-2010) – Thành phầnNetbean for PHP (Jun-2010) – Thành phần

Page 12: Phần 1 :  Ôn tập PHP & MySQL

12

Netbean for PHP – Thành phầnNetbean for PHP – Thành phần• Setup XAMP + Control Panel

Page 13: Phần 1 :  Ôn tập PHP & MySQL

13

Netbean for PHP - Cấu hình debugNetbean for PHP - Cấu hình debug

• Enable Xdebug– Download Xdebug– Copy to Xamp/php/ext– Open and Edid Xamp/Apache/bin/php.ini

Page 14: Phần 1 :  Ôn tập PHP & MySQL

14

Netbean for PHP - Cấu hình debugNetbean for PHP - Cấu hình debug• Cấu hình XAMP• http://

netbeans.org/kb/docs/php/configure-php-environment-windows.html

• Cấu hình MySQL• http://

netbeans.org/kb/docs/ide/install-and-configure-mysql-server.html

• Cấu hình Xdebug• http://wiki.netbeans.org/HowToConfigureXDebug

Page 15: Phần 1 :  Ôn tập PHP & MySQL

15

Netbean for PHP – Tạo projectNetbean for PHP – Tạo project

Page 16: Phần 1 :  Ôn tập PHP & MySQL

16

Netbean for PHP – Tạo projectNetbean for PHP – Tạo project

Page 17: Phần 1 :  Ôn tập PHP & MySQL

17

Netbean for PHP – Tạo projectNetbean for PHP – Tạo project

Page 18: Phần 1 :  Ôn tập PHP & MySQL

18

Netbean for PHP - DebugNetbean for PHP - Debug

• Bắt đầu debug (Ctrl + F5):

• Continue (F5) – Nhảy đến Breakpoint kế tiếp• Step over (F8) – Nhảy từng bước• Step into (F7) – Nhảy vào hàm• Step out (Ctrl + F7) – Nhảy ra khỏi hàm• Run to Cursor (F4) – Nhảy đến con trỏ

• Stop (F5) :

Page 19: Phần 1 :  Ôn tập PHP & MySQL

19

PHP CƠ BẢNPHP CƠ BẢNNội dung 2

- Quy ước- Biến- Xuất dữ liệu- Kiểu dữ liệu

Page 20: Phần 1 :  Ôn tập PHP & MySQL

20

QUY ƯỚC TRONG PHPQUY ƯỚC TRONG PHPNội dung 2.1

Page 21: Phần 1 :  Ôn tập PHP & MySQL

21

Quy ướcQuy ước• Mã lệnh PHP được đặt trong các cặp thẻ

sau :Thẻ mở Thẻ đóng

<?php ?>

<? ?>

<script language="php"> <script>

<% %>

Page 22: Phần 1 :  Ôn tập PHP & MySQL

22

Quy ước – Ví dụ 1Quy ước – Ví dụ 1

http://lvminh.no-ip.org/01BasicPhp/01Quyuoc_VD1.php

Page 23: Phần 1 :  Ôn tập PHP & MySQL

23

Quy ước – Ví dụ 2Quy ước – Ví dụ 2

http://localhost/01BasicPhp/01Quyuoc_VD2.php

Page 24: Phần 1 :  Ôn tập PHP & MySQL

24

Quy ước – Ví dụ 3Quy ước – Ví dụ 3

Tham số Ý nghĩa

short_open_tag = Off Cho phép sử dụng <? ?>

asp_tags = Off Cho phép sử dụng <% %>

post_max_size = 8M Kích thước tối đa của dữ liệu gửi lên server

file_uploads = On Cho phép upload file

upload_max_filesize = 2M Kích thước tối đa của mỗi file upload

Chỉnh sửa php.ini

Không nên sử dụng cú pháp PHP viết tắt

http://localhost/01BasicPhp/01Quyuoc_VD3.php

Page 25: Phần 1 :  Ôn tập PHP & MySQL

25

Quy ước – Ví dụ 4Quy ước – Ví dụ 4

http://localhost/01BasicPhp/01Quyuoc_VD4.php

Cẩn thận với Javascript

Cú pháp ASP không hỗ trợ

PHP6

Page 26: Phần 1 :  Ôn tập PHP & MySQL

Quy ướcQuy ước

• Tất cả các câu lệnh php đều cách nhau bởi dấu ";"

• Không phân biệt khoảng trắng, Tab, xuống dòng trong câu lệnh<?php print "Hello"; print " World!"; ?> <?php

Print "Hello" ; print " World!";

?>

• Ghi chú : Theo cú pháp ghi chú của C++ & Perl// Đây là ghi chú

/* Đây là ghi chú nhiều dòng*/

# Đây là ghi chú26

Page 27: Phần 1 :  Ôn tập PHP & MySQL

27

Quy ước – Ví dụ ghi chúQuy ước – Ví dụ ghi chú

Page 28: Phần 1 :  Ôn tập PHP & MySQL

28

BIẾN TRONG PHPBIẾN TRONG PHPNội dung 2.2

Page 29: Phần 1 :  Ôn tập PHP & MySQL

29

Khai báo biến – Đặt tênKhai báo biến – Đặt tên

$tên_biến;

$tên_biến = giá_trị;

• Không cần khai báo kiểu dữ liệu• Biến tự khởi tạo khi được gán giá trị lần đầu

• Tên biến :– Chỉ bao gồm ký tự _ , (A..Z, a..z) và ký số (0..9)– Không bắt đầu tên bằng ký số– Phân biệt chữ hoa – chữ thường

Page 30: Phần 1 :  Ôn tập PHP & MySQL

30

Khai báo biến – Ví dụKhai báo biến – Ví dụ• Ví dụ :

STT Tên biến

1 $size

2 $0Zero

3 $my_drink_size

4 $_drinks

5 $Size

6 $drink4you

7 $$2hot4u

8 $drink-Size

9 Size

Biến sai ?

Bao nhiêu Biến?

Page 31: Phần 1 :  Ôn tập PHP & MySQL

31

Khai báo biến – Biến tham chiếuKhai báo biến – Biến tham chiếu

Tạo biến tham chiếu một biến khác theo 2 cách:

• Cách 1:$biến_1;$biến_2 =& $biến_1;

• Cách 2:$biến_1;$biến_2 = &$biến_1;

Page 32: Phần 1 :  Ôn tập PHP & MySQL

32

Khai báo biến – Phạm viKhai báo biến – Phạm viLoại Vị trí khai báo Phạm vi ảnh hưởng

Biến cục bộ Trong hàm Trong hàm

Tham số của hàm Khai báo hàm Trong hàm

Biến toàn cục Sau từ khóa GLOBAL Webpage

Biến tĩnh Sau từ khóa STATIC Webpage

Biến hệ thống $_SERVER, $_POST, … Website

Page 33: Phần 1 :  Ôn tập PHP & MySQL

33

Khai báo biến – Biến hằngKhai báo biến – Biến hằng• Khai báo biến hằng:define(tên_biến_hằng, Giá trị [, HoaThường]);

• Ví dụ:

Page 34: Phần 1 :  Ôn tập PHP & MySQL

34

XUẤT DỮ LIỆU RA TRÌNH DUYỆTXUẤT DỮ LIỆU RA TRÌNH DUYỆT

Nội dung 2.3

Page 35: Phần 1 :  Ôn tập PHP & MySQL

35

Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt

echo()

print()

printf()

sprintf()

Gồm các hàm sau :

Page 36: Phần 1 :  Ôn tập PHP & MySQL

36

Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt• Cú pháp:

void echo(tham số chuổi [, tham số chuổi [, tham số chuổi]])

• Ví dụ:

echo()

print()

printf()

sprintf()

Page 37: Phần 1 :  Ôn tập PHP & MySQL

37

Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt• Cú pháp:

int print(tham số)

• Ví dụ:

echo()

print()

printf()

sprintf()

Page 38: Phần 1 :  Ôn tập PHP & MySQL

38

Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt• Cú pháp:

boolean printf(string format [, mixed args])

• Ví dụ:

echo()

print()

printf()

sprintf()

Page 39: Phần 1 :  Ôn tập PHP & MySQL

39

Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt

Ký hiệu Kiểu tham số Thể hiện ra

%b Số nguyên Số nhị phân

%c Số nguyên 1 ký tự ACSII

%d Số nguyên Số nguyên

%f Số thực Số thực

%o Số nguyên Số bát phân

%s Chuỗi Chuỗi

%u Số nguyên Số nguyên không dấu

%x Số nguyên Số thập lục phân thường

%X Số nguyên Số thập lục phân hoa

echo()

print()

printf()

sprintf() printf("$%.2f", 43.2); // $43.20

Page 40: Phần 1 :  Ôn tập PHP & MySQL

40

Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt• Cú pháp:

string sprint(string format [, mixed args])

• Ví dụ:

echo()

print()

printf()

sprintf()

$cost = sprintf("$%.2f", 43.2);

// $cost = $43.20

Page 41: Phần 1 :  Ôn tập PHP & MySQL

41

Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt

echo()

print()

printf()

sprintf()

Xuất chuỗi “tĩnh”

Xuất chuỗi “động”

Page 42: Phần 1 :  Ôn tập PHP & MySQL

42

KIỂU DỮ LIỆU & TOÁN TỬKIỂU DỮ LIỆU & TOÁN TỬNội dung 2.4

Page 43: Phần 1 :  Ôn tập PHP & MySQL

43

Kiểu dữ liệuKiểu dữ liệu• boolean (bool)• integer (int)• double (float, real)• string

• array• object

1 Biến trong PHP có thể lưu bất kỳ kiểu dữ liệu nào

Page 44: Phần 1 :  Ôn tập PHP & MySQL

44

Kiểu dữ liệu – Kiểm tra kiểuKiểu dữ liệu – Kiểm tra kiểu

gettype is_string isset

is_integer is_array unset

is_double is_object empty

Page 45: Phần 1 :  Ôn tập PHP & MySQL

45

Kiểm dữ liệu – số nguyên, số thựcKiểm dữ liệu – số nguyên, số thực• Một số hàm xử lý số

– abs(…) pow(…,…) decbin(…) srand(seed)– ceil(…) sqrt(…) bindec(…) rand()– floor(…) log(…) dechex(…) rand(min,

max)– round(…) log10(…) hexdec(…) …

• Ví dụ// Phát sinh một "mầm" ngẫu nhiên$seed = (float) microtime( ) * 100000000;

// Khởi tạo bộ phát sinh số ngẫu nhiênsrand($seed);

// In con số ngẫu nhiênecho rand(); // Giá trị ngẫu nhiên từ 0 đến getmaxrand( )echo rand(1, 6); // Giá trị ngẫu nhiên từ 1 đến 6

Page 46: Phần 1 :  Ôn tập PHP & MySQL

46

Kiểu dữ liệu – ChuỗiKiểu dữ liệu – Chuỗi

• Chuỗi được chứa trong nháy đơn ‘ ’ hoặc nháy kép “ ”

• Một số hàm xử lý chuỗi– printf(…) trim(…) strtolower(…) – str_pad(…) str_replace(…) strtoupper(…) – Strlen(…) substr(…) strcasecmp(…)

• Toán tử nối chuỗi: dấu chấm .

$s = "Hello"." World"; // $s = "Hello World"

Page 47: Phần 1 :  Ôn tập PHP & MySQL

47

Kiểu dữ liệu – ChuỗiKiểu dữ liệu – Chuỗi

• Phân biệt dấu nháy đơn và nháy kép (print/printf/echo)

$user = "Bill";print 'Hi $user';print "Hi $user";print 'Hi'.$user;print 'Hi'.'$user';

Hi $user

Hi Bill

Hi $user

Hi Bill

Page 48: Phần 1 :  Ôn tập PHP & MySQL

Chuyển kiểu dữ liệuChuyển kiểu dữ liệu– Cách 1: (automatic)

– Cách 2: (datatype) $var– Cách 3: settype($var, "datatype")

$var (int)$var (bool)$var (string)$var

null 0 false ""

true 1 "1"

false 0 ""

"6 feet" 6 true

"foo" 0 true 48

$var = "100" + 15;

$var = "100" + 15.0;

$var = 100 + 15.0;

$var = 39 + " Steps";

$var = "Hello" + " World";

115 integer

115 double

115 double

39 integer

0 integer

Page 49: Phần 1 :  Ôn tập PHP & MySQL

49

Toán tửToán tửLoại Toán tử Ghi chú

new

. [ ] ( )

Toán học + - * / % ++ --

So sánh < > <= >= != == === !==

Luận lý && || ?: , !

Xử lý bit ~ << >> >>> AND OR XOR

Gán = += -= *= /= %= >>= <<= &= |= ^= .=

Ép kiểu (kiểu dữ liệu) (int) (double) (string)…

Page 50: Phần 1 :  Ôn tập PHP & MySQL

50

CẤU TRÚC ĐIỀU KHIỂNCẤU TRÚC ĐIỀU KHIỂNNội dung 3

- Từ khóa- Điều kiện chọn- Điều kiện lặp- Lệnh nhúng mã nguồn

Page 51: Phần 1 :  Ôn tập PHP & MySQL

51

Từ khóa break, continue, gotoTừ khóa break, continue, goto• break : Ngắt xử lý của khối lệnh / vòng lặp• continue : Tiếp tục bước kế tiếp của vòng lặp

• goto : Nhảy đến nhãn chỉ định PHP 5.3 trở lên

return;

Page 52: Phần 1 :  Ôn tập PHP & MySQL

52

Cấu trúc if elseCấu trúc if elseif (condition) { statement[s] if true} else{ statement[s] if false}

if (condition) { statement[s]} elseif (condition) { statement[s]}

$x isn’t less than 4

Page 53: Phần 1 :  Ôn tập PHP & MySQL

53

Cấu trúc switchCấu trúc switchswitch (expression)

{

case label :

      statementlist

break;

case label :

statementlist

break;

    ...

 default :

      statementlist

} You picked menu three You picked menu four

Page 54: Phần 1 :  Ôn tập PHP & MySQL

54

Cấu trúc whileCấu trúc whilewhile (expression) {

statements}

do

{

statements

}while (expression);

Page 55: Phần 1 :  Ôn tập PHP & MySQL

55

Cấu trúc forCấu trúc forfor ([initial expr]; [condition]; [update expr]) {

statement[s] inside loop}

Page 56: Phần 1 :  Ôn tập PHP & MySQL

56

Cấu trúc foreachCấu trúc foreachforeach (array as variable) {

    statements }

Page 57: Phần 1 :  Ôn tập PHP & MySQL

57

LỆNH NHÚNG DỮ LIỆULỆNH NHÚNG DỮ LIỆU

Page 58: Phần 1 :  Ôn tập PHP & MySQL

58

Lệnh nhúng dữ liệuLệnh nhúng dữ liệu

• include, include_once, require, require_once

• Cú pháp:

lệnh_nhúng(File_Web_path);

• Được sử dụng để nhúng trực tiếp một đoạn mã lệnh PHP/HTML từ một file PHP/HTML khác vào vị trí chèn lệnh nhúng này

• Ứng dụng:– Tái sử dụng code– Làm template cho Web

Page 59: Phần 1 :  Ôn tập PHP & MySQL

59

03_IncReq_MainTestInc.php

03_IncReq_MainTest.php

Page 60: Phần 1 :  Ôn tập PHP & MySQL

60

03_IncReq_MainTestInc.php

03_IncReq_MainTest.php

Bỏ được không?

Không

Chèn HTML ? Được

Page 61: Phần 1 :  Ôn tập PHP & MySQL

61

03_IncReq_MainTest.php

Sai đường dẫn ?

Page 62: Phần 1 :  Ôn tập PHP & MySQL

62

Thông báo lỗi tìm file

Vẫn tiếp tục nạp phần còn lại

Chặn lỗi ?

Page 63: Phần 1 :  Ôn tập PHP & MySQL

63

03_IncReq_MainTest.php

@

Page 64: Phần 1 :  Ôn tập PHP & MySQL

64

Ngăn chặn lỗi trong PHPNgăn chặn lỗi trong PHP

• Sử dụng hàm kiểm tra file– bool file_exists(string FilePath)

• Sử dụng từ khóa @ trước hàm gây lỗi.

• Sử dụng bổ sung– int mysql_errno(): Lấy mã lỗi– string mysql_error(): Lấy thông báo lỗi php

• Gặp các trường hợp lỗi nghiêm trọng– int die(string msg): ngừng biên dịch PHP

Page 65: Phần 1 :  Ôn tập PHP & MySQL

65

Phân biệt các lệnh nhúng dữ liệuPhân biệt các lệnh nhúng dữ liệuinclude include_once require require_once

Bắt buộc file phải có x x

Chèn nhiều lần x x

Chèn 1 lần x x

include / include_once require / require_once

Page 66: Phần 1 :  Ôn tập PHP & MySQL

Ứng dụng – Template layout 1Ứng dụng – Template layout 1

66

leftmenu.php

topmenu.php

footer.php

index.php search.php pays.php

Page 67: Phần 1 :  Ôn tập PHP & MySQL

67

Ứng dụng – Template layout 2Ứng dụng – Template layout 2

echo $Banner;

echo $Footer;

echo $Menu; echo $Content;

template.php

Page 68: Phần 1 :  Ôn tập PHP & MySQL

68

echo $Banner;

echo $Footer;

echo $Menu;

echo $Content;

template.phpleftmenu.php

$Temp = “…”;

footer.php

$Temp = “…”;

topmenu.php

$Temp = “…”;

Page 69: Phần 1 :  Ôn tập PHP & MySQL

69

topmenu.php

topmenu.php

Page 70: Phần 1 :  Ôn tập PHP & MySQL

70

echo $Banner;

echo $Footer;

echo $Menu;

echo $Content;

template.php

index.php?action=Timkiem

Page 71: Phần 1 :  Ôn tập PHP & MySQL

71

HÀM & MẢNGHÀM & MẢNGNội dung 4

HàmGọi hàmKhai báo hàmThư viện hàm cho PHPMảngKhai báo mảngThêm / xóa phần tửCác thao tác khác trên mảng

Page 72: Phần 1 :  Ôn tập PHP & MySQL

72

HÀM TRONG PHPHÀM TRONG PHPNội dung 4.1

Page 73: Phần 1 :  Ôn tập PHP & MySQL

73

Gọi hàmGọi hàm

• VD: Hàm tính lũy thừa

• Danh sách hơn 150 hàm của PHP– Offline: http://www.php.net/download-docs.php

– Online: http://www.php.net/manual/en/extensions.alphabetical.php

Page 74: Phần 1 :  Ôn tập PHP & MySQL

74

Khai báo hàmKhai báo hàmfunction functionName(){ function-body}

functionName Tên hàm : tuân theo quy tắc đặt tên biến

xuatDanhSachSV()

xuat_Danh_Sach_SV()XuatDanhSachSV()

xuatdanhsachsv() xuat_DanhSachSV()

Page 75: Phần 1 :  Ôn tập PHP & MySQL

75

Khai báo hàm có tham sốKhai báo hàm có tham sốfunction functionName(parameters){ function-body}

parameters Danh sách tham số Cách nhau bằng dấu phẩy Khai báo tên tham số theo quy tắc khai báo tên biến

Page 76: Phần 1 :  Ôn tập PHP & MySQL

76

Khai báo hàm có tham số kiểu tham chiếuKhai báo hàm có tham số kiểu tham chiếu

function functionName(parameters, &parameters){ function-body}

?

Page 77: Phần 1 :  Ôn tập PHP & MySQL

77

Khai báo hàm có tham số mặc địnhKhai báo hàm có tham số mặc địnhfunction functionName(parameters, paremeter=value){ function-body}

Page 78: Phần 1 :  Ôn tập PHP & MySQL

78

Khai báo hàm có giá trị trả vềKhai báo hàm có giá trị trả vềfunction functionName(parameters, paremeter=value){ function-body return value;}

value

Giá trị trả về của hàm có thể là Giá trị đơn Giá trị phức

Page 79: Phần 1 :  Ôn tập PHP & MySQL

79

Thư viện hàm cho PHPThư viện hàm cho PHP

• Lưu tất cả hàm trong một/nhiều file php thuần

• Lưu và Đặt tên file theo chủ đề• Sử dụng kết hợp với include_once (..)

Page 80: Phần 1 :  Ôn tập PHP & MySQL

80

MẢNGMẢNGNội dung 4.2

Page 81: Phần 1 :  Ôn tập PHP & MySQL

81

MảngMảng

• Là một tập các phần tử có cùng tính chất

• Mỗi phần tử có thể có – Cùng kiểu dữ liệu– Khác kiểu dữ liệu

• Một mảng gồm 2 phần thông tin– Thông tin chỉ mục– Thông tin giá trị tương ứng với chỉ mục

• Mảng đánh chỉ mục từ 0

Page 82: Phần 1 :  Ôn tập PHP & MySQL

82

Phân loại mảngPhân loại mảng

Gồm 2 loại• Mảng có chỉ mục là kiểu số (Numberd Array)• Ví dụ :

– Colors = {“Red”, “Green”, “Blue”, “Yellow”}– SoLuong = {12, 33, 3, 16}

• Mảng có chỉ mục là kiểu tên (Associated Array)

• Ví dụ :– GioHang = {“Red”=>12, “Green”=>33, “Blue”=>3, “Yellow=>16}

Page 83: Phần 1 :  Ôn tập PHP & MySQL

83

Khai báo mảngKhai báo mảng

• Không cần khai báo số lượng phần tử• Không cần phải khai báo mảng trước khi sử dụng

• Khai báo tường minh thông qua array()• Ví dụ:

– $colors = array(“red”, “green”, “blue”, “yellow”);– echo $colors[2];

• Khai báo không tường minh• Ví dụ:

– $colors[] = “red”;– $colors[] = “green”;– $colors[] = “blue”;

Page 84: Phần 1 :  Ôn tập PHP & MySQL

84

Khai báo mảngKhai báo mảng

• Khai báo mảng với mảng chỉ mục số có giá trị trong 1 khoảng cho trước

• array range(start, end, step)

• Ví dụ:– $number = range(0, 10);// $number = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);– $oddnumber = range(1, 10, 2);// $oddnumber = array(1, 3, 5, 7, 9);– $alph = range(“A”, “D”);// $oddnumber = array(“A”, “B”, “C”, “D”);

Page 85: Phần 1 :  Ôn tập PHP & MySQL

85

Rút trích nội dung mảngRút trích nội dung mảng

• Sử dụng toán tử []

• Sử dụng hàm void list(items)• Ví dụ:

– $prod = array(“redz”, “1”, 77, “blue”);– list($name, $id, $quantity, $color) = $prod;

Page 86: Phần 1 :  Ôn tập PHP & MySQL

86

FORM & CƠ CHẾ TRUỀN DỮ LIỆUFORM & CƠ CHẾ TRUỀN DỮ LIỆU

Nội dung 5

Form và Form Field

Cơ chế Truyền và Nhận dữ liệu giữa các trang webTruyền/Nhận qua Phương thức GETTruyền/Nhận qua Phương thức POST

Một số ví dụ

Page 87: Phần 1 :  Ôn tập PHP & MySQL

87

FORM & FORM FIELDFORM & FORM FIELDNội dung 5.1

Page 88: Phần 1 :  Ôn tập PHP & MySQL

88

Form và Form FieldForm và Form Field• Là container chứa các thành phần nhập liệu khác.

Các thuộc tính của <FORM>

NAME : tên FORM

ACTION : chỉ định trang web nhận xử lý dữ liệu từ FORM này khi có sự kiện click của button SUBMIT.

METHOD : Xác định phương thức chuyển dữ liệu (POST, GET)

<FORM NAME=“…” ACTION=“…” METHOD=“…”>

<!-- các thành phần của Form -->

</FORM>

Page 89: Phần 1 :  Ôn tập PHP & MySQL

Các thành phần của FormCác thành phần của Form

• Gồm các loại Form Field sau:

– Text field – Password field– Hidden Text field– Check box– Radio button– File Form Control– Submit Button, Reset Button, Generalized Button– Multiple-line text field– Label– Pull-down menu– Scrolled list– Field Set

89

Page 90: Phần 1 :  Ôn tập PHP & MySQL

90

Thẻ <input>Thẻ <input>

• Type: – text / password/ radio/ checkbox– hidden– submit / button

<INPUT

TYPE = “KiểuLoại”

NAME = string

VALUE = string

…………

>

Page 91: Phần 1 :  Ôn tập PHP & MySQL

91

Thẻ <select>Thẻ <select>

• Type: – Combobox– Listbox

<SELECT name=“??” multiple>

<optgroup label=“string”>

<option value=“”> XYZ </option>

<option value=“” selected> 123 </option>

</optgroup>

……

</SELECT>

Page 92: Phần 1 :  Ôn tập PHP & MySQL

92

CƠ CHẾ TRUYỀN NHẬN DỮ LIỆUCƠ CHẾ TRUYỀN NHẬN DỮ LIỆU

Nội dung 5.2

Page 93: Phần 1 :  Ôn tập PHP & MySQL

Cơ chế truyền nhận dữ liệuCơ chế truyền nhận dữ liệu

?

Page 94: Phần 1 :  Ôn tập PHP & MySQL

Cơ chế truyền nhận dữ liệuCơ chế truyền nhận dữ liệu• Trang web nhập dữ liệu :

– Sử dụng đối tượng <form>– Nhập liệu thông qua các formfield – Thực hiện việc truyền dữ liệu thông qua Submit

Trang web nhận dữ liệu (URL): Sử dụng các biến toàn cục của PHP

– $_POST[“FieldName”]

– $_GET[“FieldName”]

– $_REQUEST[“FieldName”]

<FORM ACTION=“URL” METHOD=“GET/POST”>…

<input type=“submit” value=“Xử lý”></FORM>

Page 95: Phần 1 :  Ôn tập PHP & MySQL

Cơ chế truyền nhận dữ liệu – Trang web nhập liệuCơ chế truyền nhận dữ liệu – Trang web nhập liệu

timSach.php<html>

<body><h1>Tìm sách</h1>

<form action="xlTimSach.php" Method="GET" >Từ khóa : <input type="text"

name="txtTukhoa"/> <input type="submit" value="Tìm"/>

</form></body>

</html>

Page 96: Phần 1 :  Ôn tập PHP & MySQL

Cơ chế truyền nhận dữ liệu – Trang web nhập liệuCơ chế truyền nhận dữ liệu – Trang web nhập liệu

xltimSach.php<html>

<body> <?php $sTukhoa = $_REQUEST["txtTukhoa"]; ?>

<h1>Tìm sách</h1> Từ khóa tìm sách là : <?php echo $sTukhoa; ?

> <br /> Kết quả tìm là :

</body></html>

Page 97: Phần 1 :  Ôn tập PHP & MySQL

Cơ chế truyền nhận dữ liệu – Trang web nhập liệuCơ chế truyền nhận dữ liệu – Trang web nhập liệu

xuly.php<html>

<body> <form action="xuly.php" Method="GET" > Từ khóa : <input type="text"

name="txtTukhoa"/> <input type="submit" value="Tìm"/> </form> <?php $sTukhoa = $_REQUEST["txtTukhoa"]; if (isset($sTukhoa)) { print "Từ khóa tìm sách là : $sTukhoa"; echo "<br>Kết quả tìm là : "; } ?>

</body></html>

Page 98: Phần 1 :  Ôn tập PHP & MySQL

Truyền/Nhận qua Phương thức GETTruyền/Nhận qua Phương thức GET

• Tham số truyền đi qua địa chỉ URL– http://domain/pathfile?fieldname1=value1&fieldname2=value2

– Ví dụ: • http://localhost/xuly.php?txtTukhoa=PHPHost

• Nhận dữ liệu thông qua biến toàn cục của PHP– $_GET[“FieldName”]– $_REQUEST[“FieldName”]

Page 99: Phần 1 :  Ôn tập PHP & MySQL

Phương thức GET – Ưu khuyết điểmPhương thức GET – Ưu khuyết điểm

• Khuyết điểm– Không thích hợp để truyền dữ liệu có tính bảo mật (password)– Dung lượng Dữ liệu truyền đi có giới hạn– URL submit bằng phương thức GET được lưu lại trên server

• Ưu điểm– Người dùng có thể bookmark địa chỉ URL– Người dùng có thể Giả lập phương thức GET để truyền dữ liệu

mà không cần thông qua FORM

Page 100: Phần 1 :  Ôn tập PHP & MySQL

Ví dụVí dụ

File: GET.HTM

<HTML>

<HEAD>

<TITLE>Input data</TITLE>

</HEAD>

<BODY>

<IMG SRC=“images/N72.jpg”><br>

<A HREF=‘chitiet.php?Ma=N72’>Xem chi tiết</A>

</BODY>

</HTML>

Page 101: Phần 1 :  Ôn tập PHP & MySQL

Ví dụ (tt)Ví dụ (tt)File: CHITIET.PHP

<HTML>

<HEAD>

<TITLE>Input data</TITLE>

</HEAD>

<BODY>

<?php

echo "Ma dien thoai la " . $_GET["Ma"];

?>

</BODY>

</HTML>

Page 102: Phần 1 :  Ôn tập PHP & MySQL

Truyền/Nhận qua Phương thức POSTTruyền/Nhận qua Phương thức POST

• Tham số truyền đi được ẩn bên trong FORM

• Nhận dữ liệu thông qua biến toàn cục của PHP– $_POST[“FieldName”]– $_REQUEST[“FieldName”]

Page 103: Phần 1 :  Ôn tập PHP & MySQL

Phương thức POST – Ưu khuyết điểmPhương thức POST – Ưu khuyết điểm

• Ưu điểm– Bảo mật hơn phương thức GET– Không giới hạn dung lượng dữ liệu truyền đi

• Khuyết điểm– Kết quả trang web trả về không thể bookmark– Có thể gây ra lỗi nếu người dùng muốn quay lại trang kết quả

(nhấn nút Back hoặc Refresh) do bị expired– Dữ liệu có thể không truyền đi được do vấn đề về security

Page 104: Phần 1 :  Ôn tập PHP & MySQL

104

KỸ THUẬT GỬI TẬP TINKỸ THUẬT GỬI TẬP TINNội dung 6

Cơ chế Upload File

Thiết kế Form để Upload tập tin

Mảng $_FILES và xử lý tập tin upload trên server

Vấn đề quyền truy cập tập tin trên server

Page 105: Phần 1 :  Ôn tập PHP & MySQL

PHP Temp

WebsiteABC

Cơ chế Upload FileCơ chế Upload File

105

Webserver

Internet or Intranet

Yêu cầu gọi trang xlupload.php

Diskdriver

file

Di chuyển / Sao chép

Page 106: Phần 1 :  Ôn tập PHP & MySQL

Thiết kế Form để Upload FileThiết kế Form để Upload File• Thiết lập thuộc tính Form

– Method = POST– Enctype = multipart/form-data

106

uploadForm.php

Page 107: Phần 1 :  Ôn tập PHP & MySQL

107

Mảng $_FILESMảng $_FILES

• Là một mảng 2 chiều, chứa tập hợp các thông tin liên quan đến các tập tin được upload lên web-server trong một lần gọi dịch vụ web.

fileAssigment1

fileAssigment2

fileAssigment3

fileAssigment4

fileAssigment5

$_FILES[……]

fileAssigment1 fileAssigment2 fileAssigment3 fileAssigment4 fileAssigment5

…… …… …… …… ……

…… …… …… …… ……

…… …… …… …… ……

…… …… …… …… ……

…… …… …… …… ……

Page 108: Phần 1 :  Ôn tập PHP & MySQL

108

Mảng $_FILESMảng $_FILES$_FILES[……]

fileAssigment1 …..

error ……

name ……

size ……

tmp_name ……

type ……

Lỗi phát sinh khi truyền tập tin lên serverVD: 0, 1, 2

Tên file và phần mở rộng của fileVD: 9912001.png

Đường dẫn lưu tạm tập tin upload trên serverVD: c:\xamp\tmp\phpA897x0.tmp

Kích thước của file (tính theo Byte)VD: 4500

Kiểu của file theo chuẩn MINEVD: image/png

Page 109: Phần 1 :  Ôn tập PHP & MySQL

109

Xử lý tập tin upload trên serverXử lý tập tin upload trên server• Sau khi tập tin đã được truyền xong cho server :

– Kiểm tra lỗi– Kiểm tra ràng buộc (kích thước, kiểu tập tin)– Đặt tên mới cho tập tin (nếu cần)– Sao chép / di chuyển tập tin về thư mục Website

• Một số hàmboolean is_uploaded_file(string filePathname)boolean copy(string filePathname, string dest)

boolean move_uploaded_file(string filePathname, string dest)

Page 110: Phần 1 :  Ôn tập PHP & MySQL

110

uploadForm.php

uploadManager.php

Page 111: Phần 1 :  Ôn tập PHP & MySQL

111

Page 112: Phần 1 :  Ôn tập PHP & MySQL

Vấn đề về quyền truy cập FileVấn đề về quyền truy cập File

PHP Warning: move_uploaded_file(upload/14.jpg) [function.move-uploaded-file]:

failed to open stream: Permission denied in.

Cấp quyền cho thư mục /upload

AccountIUSR_XXX

Lưu ý :• Chỉ cấp quyền ghi cho thư mục cần thiết

• Không cấp quyền ghi cho thư mục WebRoot

112

Page 113: Phần 1 :  Ôn tập PHP & MySQL

113

Page 114: Phần 1 :  Ôn tập PHP & MySQL

114

KẾT NỐI DỮ LIỆU MYSQLKẾT NỐI DỮ LIỆU MYSQLNội dung 7

Page 115: Phần 1 :  Ôn tập PHP & MySQL

Các bước thao tác CSDL trong PHPCác bước thao tác CSDL trong PHP

1. Kết nối với CSDL

2. Xây dựng câu truy vấn dữ liệu

3. Thực thi câu truy vấn

4. Xử lí kết quả trả về từ câu truy vấn SELECT

5. Ngắt kết nối với CSDL

115

Page 116: Phần 1 :  Ôn tập PHP & MySQL

1. Tạo Kết nối CSDL1. Tạo Kết nối CSDL

• Kết nối MySQL và Chọn CSDLresource mysql_connect(string host, string LoginName, string password)int mysql_select_db(string dbName, resource connection)

<?php

$connection = mysql_connect(“localhost",“root”,“root");

mysql_select_db(“TestDB", $connection);

?>

DatabaseApplication

Connection

116

Page 117: Phần 1 :  Ôn tập PHP & MySQL

2. Xây dựng câu truy vấn (tt)2. Xây dựng câu truy vấn (tt)

SQL Ví dụ

INSERT strSQL = “ INSERT INTO Users (UserName, Password) VALUES (‘admin',‘123')“

DELETE strSQL = “ DELETE FROM Users WHERE UserName = ‘lvminh’ “

UPDATE strSQL = “ UPDATE Users SET Password = ‘abc' WHERE UserName = ‘admin’ ”

SELECT strSQL = “ SELECT * FROM Users WHERE UserName = ‘admin’ ”

$sUserName = “admin”;$sPassword = “123”;

$strSQL ?117

Page 118: Phần 1 :  Ôn tập PHP & MySQL

SELECT [Liệt kê thuộc tính] FROM [Danh sách các bảng]WHERE [ĐK Kết+lọc] Group by [Thuộc tính Gom nhóm]Order by [Thuộc tính sắp thứ tự]HAVING [ĐK trên nhóm]

118

Page 119: Phần 1 :  Ôn tập PHP & MySQL

3. Thực thi câu truy vấn3. Thực thi câu truy vấn

<?php$strSQL = “INSERT INTO Users (UserName, Password) VALUES (‘admin',‘123‘)”;mysql_query($strSQL);?>

Application

Connection 011010011011010011

Query

Database

resource mysql_query(string SQL_cmd, resource connection)

Insert Delete Update

<?php$strSQL = “SELECT * FROM Users”;$result = mysql_query($strSQL);?>

Select

119

Page 120: Phần 1 :  Ôn tập PHP & MySQL

4. Xử lý kết quả trả về4. Xử lý kết quả trả về

UserName Password

A AA

B BB

C CC

D DD

… …

X XX

Y YY

Z ZZ

• Hiển thị dữ liệu trả về

– Sử dụng hàm $row = mysql_fetch_array($result)

– Số lượng FIELD$num = mysql_num_fields($result);

– Truy cập đến từng FIELDecho $row[“UserName”];Hoặc echo $row[0];

cursor

Ví dụ:CSDL BookstoreDB – Bảng T_UsersXuất records từ CSDL ra trang HTML

120

Page 121: Phần 1 :  Ôn tập PHP & MySQL

5. Ngắt kết nối dữ liệu5. Ngắt kết nối dữ liệu

bool mysql_close(resource connection) ;

Tự động thực thi khi kết thúc mã lệnh nhờ cơ chế tự động thu rác (garbage collector) – PHP4,5

121

Page 122: Phần 1 :  Ôn tập PHP & MySQL

122

Page 123: Phần 1 :  Ôn tập PHP & MySQL

Một số vấn đề - MySQL & Font UnicodeMột số vấn đề - MySQL & Font Unicode• Font UNICODE

<?php

mysql_query(“set names ‘utf-8’”);?>

Encode

Decode

123

Page 124: Phần 1 :  Ôn tập PHP & MySQL

Phân trang dữ liệuPhân trang dữ liệunumRows

rowsPerPage

maxPagepageNum

offset

124

Page 125: Phần 1 :  Ôn tập PHP & MySQL

Phân trang dữ liệuPhân trang dữ liệu

• Trường hợp dữ liệu lấy về có quá nhiều mẫu tin (hiển thị bảng quá dài)

• Chia dữ liệu hiển thị trên nhiều trang

– Tổng số kết quả trả về: $numRows

– Số kết quả hiển thị trên 1 trang: $rowsPerPage– Tổng số trang hiển thị: $maxPage

$maxPage = ceil($numRows / $rowsPerPage);

– Số thứ tự trang hiển thị: $pageNum = 1,2,…– Chỉ số kết quả bắt đầu trong trang thứ $pageNum:

$offset = ($pageNum - 1) * $rowsPerPage;

125

Page 126: Phần 1 :  Ôn tập PHP & MySQL

Phân trang dữ liệu (tt)Phân trang dữ liệu (tt)• Các bước thực hiện phân trang

– Tính các thông số phân trang ($rowsPerPage, $pageNum, $offset)

– Lấy thông tin cần hiển thị ($numRows)

– Hiển thị thông tin của trang hiện tại ($offset, $rowsPerPage)

– Tạo liên kết chỉ đến các trang ($maxPage $pageNum)

– Xem Ví dụ

126

(1) Select * From T_Book(2) Select * From T_Book LIMIT $offset, $rowsPerPage

Page 127: Phần 1 :  Ôn tập PHP & MySQL

127

COOKIE & SESSIONCOOKIE & SESSIONNội dung 8

Page 128: Phần 1 :  Ôn tập PHP & MySQL

128

COOKIECOOKIENội dung 8.1

Page 129: Phần 1 :  Ôn tập PHP & MySQL

Cookie – Giới thiệuCookie – Giới thiệu

Là 1 tập tin được server lưu xuống máy của client

Mỗi lần client gửi request 1 trang web, đồng thời sẽ gửi kèm file cookie đã lưu lần trước lên server

Các điều khiển xử lý thông tin (lưu, lấy) do server thực hiện

Thường được sử dụng để lưu thông tin cá nhân của client

Webserver

cookie

setcookie

$_COOKIE

Client

129

Page 130: Phần 1 :  Ôn tập PHP & MySQL

Cookie – Cú pháp sử dụngCookie – Cú pháp sử dụng• Lệnh ghi cookie

setcookie(name, value, expire, path, domain);setrawcookie(name, value, expire, path, domain);

• name : Tên cookie• value : Giá trị cookie• expire : Ngày/khoảng thời gian hết hạn hết hạn• path : Đường dẫn mà cookie được gởi đi• domain : Xác định tên miền mà cookie được gởi đi• Bắt buộc phải xuất hiện trước thẻ <html>

• Lấy giá trị cookieecho $_COOKIE[“cookieName"];

• Xóa cookiesetcookie(“cookieName", "", time() -3600);

130

Page 131: Phần 1 :  Ôn tập PHP & MySQL

Cookie – Ví dụCookie – Ví dụ

cookie

setcookie

$_COOKIE[fieldName]

Client

Lưu username & password

Webserver

131

Page 132: Phần 1 :  Ôn tập PHP & MySQL

132

SESSIONSESSIONNội dung 8.2

Page 133: Phần 1 :  Ôn tập PHP & MySQL

SessionSession

Là thông tin về client được server lưu trên máy của server

Sử dụng session lưu định danh duy nhất cho từng client

Mục đích lưu biến dữ liệu dùng chung cho nhiều trang trong 1 phiên làm việc của client

Webserver

Cookie: PHPSESSID

session_start

$_SESSION[sessionVar]

Client

133

Page 134: Phần 1 :  Ôn tập PHP & MySQL

Session – Cú pháp sử dụngSession – Cú pháp sử dụng• Khởi động Session

session_start();

– Bắt buộc phải xuất hiện trước thẻ <html>

• Ghi & Đọc giá trị Session$_SESSION[“sessionVar”] = value ;

$_SESSION[“sessionVar”] = array();$_SESSION[“sessionVar”][] = value;

if (isset($_SESSION[“sessionVar"])echo $_SESSION[“sessionVar"];

• Hủy Biến trong Sessionunset($_SESSION[“sessionVar”]);

• Hủy cả Sessionsession_destroy(); 134

Page 135: Phần 1 :  Ôn tập PHP & MySQL

Session - Ứng dụng cho Giỏ hàng (shopping cart)Session - Ứng dụng cho Giỏ hàng (shopping cart)

Session : Array : Mathang [ ]

Session : Array : Soluong[ ]

{‘Book1’, ‘Book2’, ‘Book3’}

{13, 2, 7}

Xóa biến trong Session

Ghi xuống CSDL

Ví dụ135

Page 136: Phần 1 :  Ôn tập PHP & MySQL

So sánh : Session – Cookie – Database So sánh : Session – Cookie – Database

Internet or Intranet

Web Server

Database Server

Client 3

Client 2

Client 1

Cookie3

Cookie2

Cookie1

Session 2 Session 3

Session 1

Thông tin chia sẽ Vị trí lưu trữ

Thời gian tồn tại

Số client Số trang web sử dụng

Database/File Server Dài Nhiều Nhiều

Session Server Ngắn 1 Nhiều

Cookies Client Dài 1 Nhiều136

Page 137: Phần 1 :  Ôn tập PHP & MySQL

137