You are on page 1of 56

Learning PHP & MySQL Updatesofts.

com
1 By TXP Lover, Incomplete, iSheep, Seneken.
Ci !t Web server - b%&c )u tin , h/c PHP!

"Tr!ng h$c" v'a khai gi(ng, trong lc +,i bi h$c +-u tin ra l, cho php t0 +,c "ma ru
qua m2t th, ci"!

Nh bc ngocha85 + ni, +5 h$c PHP v MySQL, m8t trong nh9ng th; c-n chu<n b= l web
server ch?y trn PC c@a mnh. B5 cho nhanh chng, theo t0 tCt nhDt nn ci b8 XAMPP.

Cu h1i 1: XAMPP l g?

Tr( l!i: XAMPP giCng v0i WAMP, nghEa l ng!i m0i h$c ko c-n ph(i biGt cch ci +Ht ring lI
t'ng thnh ph-n nh Apache, PHP v MySQL. ChJ c-n download m8t gi vL l xong.

Cc tnh nMng c trong XAMPP:

1. Apache 2 => server
2. PHP 5 => ngn ng9 lNp trnh
3. MySQL => c" sO d9 liPu
4. Webalizer => qu(n l statistic c@a site
5. Mercury => gi( lNp gQi email
6. FileZilla => gi( lNp FTP server
7. RDt nhiLu tnh nMng chuyn su khc...

Cu h1i 2: T3i sao ko dng WAMP?

Tr( l!i: V ci ny t0 cha dng bao gi! + Ci ny bc ngocha85 ch2c sR gi0i thiPu => trnh
+Sng hng l h"n. V0i l?i ci XAMPP ny theo t0 cTng rDt hay, thNm ch ko c-n ci +Ht, chJ c-n
copy v ch?y.

Cu h1i 3: Down XAMPP 4 u?

Tr( l!i: U +y: http://www.apachefriends.org/en/xampp.html
C +@ b8 XAMPP cho Windows, Linux, MacOS v c( Solaris, v vNy m$i hP +iLu hnh n +Lu
chDp tDt!

Cu h1i 4: Ci !t v s5 d6ng XAMPP nh% th8 no?

Tr( l!i: Sau khi t(i vL, b?n sR c 1 file zip. Gi(i nn file + ra 1 th mSc bDt kW, v dS C:\XAMPP.
B5 ch?y web server, b?n kch ho?t file xampp_control.exe, bDm nt Start bn c?nh Apache v
nt close +5 XAMPP Control tY +8ng chuy5n xuCng system tray.

Ngoi ra, b?n c th5 khOi +8ng MySQL nGu dng c" sO d9 liPu, FileZilla nGu dng FTP v
Mercury nGu dng email.

B5 biGt ch2c web server + ch?y +ng, b?n mO trnh duyPt web c@a mnh, g http://localhost
vo thanh Address, sau + enter. M8t trang thng bo sR hiPn ra, cho biGt qu trnh "ci +Ht" +
hon tDt.

Cu h1i 5: Lm th8 no , ch3y cc script vi8t b:ng PHP?

Tr( l!i: B?n cho script vo th mSc C:\XAMPP\htdocs\ sau + g$i file + qua URL
http://localhost/script_name.php

Learning PHP & MySQL Updatesofts.com
2 By TXP Lover, Incomplete, iSheep, Seneken.
VNy l hGt "bi chu<n b= cho bi khOi +8ng" c@a bc ngocha85 sR post trong vi ngy t0i. Tn
tn ten!

Th'a th2ng xng ln, t0 lm lun bi "Hello World".

Bi 1: Ni "hello world" v&i PHP

C)n chu;n b< nh>ng g?

1. Web server c-n +(m b(o sZn sng. Apache +,c khOi +8ng theo bi post O trn.
2. M8t script editor. Ci ny c rDt nhiLu, nh PHP Designer, Dev-PHP, ... ThNm ch dng
notepad cTng +,c. Nhng tCt nhDt nn dng m8t editor c h\ tr, unicode. Nh t0 dng
SCiTE.
Bn vo trang ny #$ xem list v review cc PHP editor: http://www.php-editors.com/
3. 5 pht th!i gian r(nh r\i.

B@t )u!!!

1. T?o m8t file mang tn "helloworld.php" trong th mSc htdocs. MO file + b]ng script editor.
2. G +o?n code sau vo editor:
PHP Code:
<?php
echo "Hello World!";
?>
3. MO trnh duyPt web, g http://localhost/helloworld.php [enter].
4. Nh2m m2t l?i trong 0.0001 giy. NGu mO m2t ra m b?n thDy dng ch9 Hello World l +
thnh cng r^i +!

GiAi thch
1. Dng th; nhDt c@a file helloworld.php l "<?php" v dng cuCi cng l "?>". By l 2 thI (tag)
+5 bo cho server biGt +i5m b2t +-u v kGt thc c@a m8t +o?n code PHP. Ni cch khc, b]ng
cch ny b?n c th5 nhng code PHP trong bDt c; file HTML c sZn no. Khi thYc thi file PHP,
web server sR chJ thYc hiPn nh9ng +o?n code +Ht trong 2 thI ny v b_ qua tDt t-n tNt nh9ng
ph-n cn l?i.
2. Dng 2 l m8t lPnh c@a PHP: LPnh echo. LPnh ny lm nhiPm vS in m8t xu ra ngoi mn
hnh. C-n nh0 m8t lPnh PHP lun kGt thc b]ng dDu chDm ph<y ";". NGu thiGu d chJ m8t dDu
chDm ph<y, code c@a b?n sR ko ch?y v d'ng l?i bi5u tnh ngay.
3. CTng O dng 2, xu "Hello World" +,c +Ht trong dDu ngoHc kp. NGu ko, sR c l\i.

MBt vi cu h1i

1. C c-n thiGt ph(i trnh by nh trn ko?
=> Ko. B?n c th5 trnh by code theo bDt c; cch no b?n muCn. Li vo 10 dDu cch, m\i
dng cch nhau 3 hng, ... BiLu + l ty b?n. Tuy nhin c-n ph(i viGt code cho thNt d` +$c v
d` hi5u +5 tiPn cho viPc sQa +ai v chia sI code sau ny.

2. C cch no bo hiPu m8t +o?n code PHP ngoi cch dng <?php ko?
=> C. NhiLu cch l +]ng khc. V dS b?n c th5 viGt


Learning PHP & MySQL Updatesofts.com
3 By TXP Lover, Incomplete, iSheep, Seneken.
PHP Code:
<?
// Code "y
?>
Tuy nhin cc cch khc +Lu t thng dSng v +,c khuyGn co ko nn sQ dSng.

3. C th5 +Ht xu Hello World trong dDu ngoHc +"n ko?
=> C th5. B?n c th5 dng dDu ngoHc kp v dDu nhy +"n +5 ch;a xu. SY khc nhau gi9a
chng sR +,c th(o luNn sau.

4. NGu trong xu cTng c dDu ngoHc / xu l m8t +o?n vMn b(n rDt di th sao?
=> Ko c g ph(i lo l2ng. Ci g cTng c cch gi(i quyGt. VDn +L l cch + ko n]m trong bi
h$c hm nay. HGt 5 pht r^i, b?n hy nghJ ng"i +. :P

Bi tCp

V Bi 1 hGt s;c +"n gi(n, chJ theo tinh th-n Hello World nn bi tNp cTng sR chJ c bi, v cTng
rDt rDt +"n gi(n.

Hy cho biGt l\i sai trong cc +o?n code sau:

1.
PHP Code:
echo "Hello World!";


2.
PHP Code:
<?php
echo "Hello World!"
?>

3.
PHP Code:
<?php
echo "Hello World!';
?>

4.
Learning PHP & MySQL Updatesofts.com
4 By TXP Lover, Incomplete, iSheep, Seneken.
PHP Code:
<?php
echo "Hello World!";
?>

Bi 2 - M6c 1: L%u tr> d> liDu trong PHP. Vi iEu c)n ni vE bi8n.

Tr0c khi b2t +-u bi 2, t0 xin trnh by vL cch ch thch (comment) trong PHP. By c th5 coi
l m8t kb nMng cTng +,c, v b?n rDt KHNG NN viGt code m ko c ch thch. C th5 +o?n
code rDt d` hi5u vo th!i +i5m viGt, nhng nGu ko c ch thch, chJ vi thng sau b?n c th5
qun ngay mnh + viGt ci g. ViGt ch thch ngay vo th!i +i5m code l cch tCt nhDt.

Trong PHP, m8t dng ch thch +,c +Ht sau 2 dDu sa cho //

V dS
PHP Code:
// #y l m$t dng ch thch


NGu ch thch c@a b?n di h"n 1 dng, b?n c th5 +5 n trong 1 block, mO +-u b]ng /* v kGt
thc b]ng */
PHP Code:
/*
Ch thch dng th' nh)t
Th' 2
Th' 3
Vn vn...
*/

Cn m8t cch n9a, KHNG pha biGn (t ra l t0 thDy thG), + l ch thch +Ht sau dDu #. Ch
thch ny cTng chJ cho php 1 dng giCng nh //

M8t +iLu khc cTng rDt c-n ch + l PHP ko cho php +Ht ch thch trong ch thch (nested
comment).

Ta b2t +-u vo Bi 2.

Bi 2: L%u tr> d> liDu trong PHP

Khi b2t tay vo lNp trnh m8t ch"ng trnh, hi5n nhin ta sR c-n ph(i lu tr9 d9 liPu. CS th5, d9
liPu c th5 +,c lu tr9 b]ng biGn (variable). Khc v0i cc ngn ng9 lNp trnh khc, trong PHP
cc biGn ko c-n ph(i khai bo (declare) tr0c khi sQ dSng. B5 sQ dSng biGn, b?n chJ c-n gn
(assign) cho n m8t gi tr= (value). BiGn sR tY +8ng +,c t?o. CYc kW +"n gi(n v nhanh chng!
Learning PHP & MySQL Updatesofts.com
5 By TXP Lover, Incomplete, iSheep, Seneken.

1. Bi8n. Khai bo. F!t tn.

BiGn trong PHP b2t +-u b]ng dDu dollar ($), theo sau l tn biGn. Tn biGn c th5 b2t +-u b]ng
dDu g?ch d0i (_ g$i l underscore) hoHc ch9 ci. TiGp sau + l cc ch9 ci, sC hoHc l?i l dDu
g?ch d0i. M8t sC k tY mO r8ng (extended character) c th5 +,c sQ dSng, nhng tCt nhDt l
nn trnh.

M8t sC v dS vL biGn BNG: $uds, $update_softs, $uds_has_more_than_26000_members

BiGn sai: abc v thiGu dDu dollar, $124adfd v b2t +-u b]ng sC

CTng c-n th(o luNn thm m8t cht: CTng v sY d` di trong viPc ko ph(i khai bo biGn nn sR
c lc b?n g nh-m tn biGn. V dS $uds g thnh $usd (Hc!)

V dS:
PHP Code:
<?php
$uds ="Welcome to UDS!";
echo $uds;
?>

May m2n lm sao, t' b(n PHP 5 trO ln, sR c m8t c(nh bo (warning) khi b?n ch?y script, cho
biGt b?n cha gn gi tr= cho biGn $usd.

, cn m8t vDn +L cha ni +Gn: B l trong PHP, tn biGn C phn biPt ch9 hoa ch9 th!ng
(case-sensitive). NghEa l $uds hon ton khc v0i $UDS hay $uDs. Ni chung nn trnh viPc
+Ht tn biGn chJ khc nhau cch viGt hoa th!ng ny, v'a +c mDt cng gi9 Shift, v'a +c nh0
nh-m tn biGn.

MSc 2 sR mang tn MBt sH ki,u d> liDu trong PHP. M$i ng!i +n +$c nh!

Bi tCp
Trong cc biGn sau +y, biGn no +,c +Ht tn +ng, biGn no b= +Ht tn sai:

1. this_is_a_variable
2. $yet another variable
3. $simplevariable
4. $blah_blah_blah_123456789_______
5. $123456789_____abacabadfskdjsfksdfkdserwuewrjfdksj fdksljf
6. $^^
7. $___A___VARIABLE____
8. $THiS_iS_THe_LaST_ONe


Bi 2 - M6c 2: L%u tr> d> liDu trong PHP. MBt sH ki,u d> liDu c' bAn
[updated]

Learning PHP & MySQL Updatesofts.com
6 By TXP Lover, Incomplete, iSheep, Seneken.
Ngoi l( m*t cht: Lc #,u t- c0ng ko #3nh tch Bi 2 ra lm m5y thread, nh7ng n8u #$ nh7 th8
kia th di qu, s9 #:c theo cc bc m;t m<t => n>n lng.

Ta c m8t sC ki5u d9 liPu c" b(n sau +y trong PHP:

a. Ki5u sC (number)
b. Ki5u xu (string)
c. Ki5u boolean (boolean)

a. Ki,u sH

Trong ki5u sC (l?i) c 2 ki5u c" b(n khc: SC nguyn (int) v sC thYc (float). SC nguyn c th5
bi5u di`n b]ng sC thNp phn (hP 10 - decimal), hP 8 (octal) v hP 16 (hexadecimal).

V dS ta gn gi tr= cho m8t sC biGn ki5u NGUYN nh sau:
PHP Code:
<?php
$a =27;
$b =-27;
$c =027;
$d =-027;
$e =0x27;
$f =-0x27;
?>

U v dS trn, c( 6 biGn t' $a +Gn $f +Lu c gi tr= l 27 hoHc -27. Tuy nhin, v0i biGn $a v $b,
ta dng ki5u bi5u di`n sC thNp phn (viGt nh sC ta viGt hng ngy). V0i $c v $d, dng ki5u sC
hP 8 (b2t +-u v0i ch9 sC 0). V0i $e v $f dng ki5u hP 16 (b2t +-u v0i ch9 sC 0 v ch9 ci x).

NGu + t'ng h$c qua Pascal, ch2c ch2n b?n sR h_i t0: ThG nGu t0 dng 1 biGn ki5u int, gn cho
n m8t gi tr= cao b]ng max c@a int, th khi +em sC + c8ng v0i 1, gi tr= c b= chuy5n thnh m
do trn sC (overflow) ko?

Cu tr( l!i l ko. M8t biGn ki5u int c gi tr= cYc l0n trong PHP l 2147483647, khi c8ng 1 vdn
sR tr( gi tr= +ng l 2147483648, nhng l-n ny sR thu8c ki5u float. Ni cch khc, PHP tY
chuy5n sC b= trn ln ki5u float.

NGu thch +Ht cu h_i, ch2c ch2n (l?i m8t l-n n9a) b?n sR h_i t0: Sao cNu biGt +iLu Dy?

Cu tr( l!i rDt +"n gi(n: B?n hy cng t0 lm v dS v0i +o?n code sau:
PHP Code:
<?php
$a =2147483647;
var_dump($a);
$a =$a +1;
Learning PHP & MySQL Updatesofts.com
7 By TXP Lover, Incomplete, iSheep, Seneken.
var_dump($a);
?>

Sau khi ch?y script, kGt qu( tr( vL sR l

int(2147483647) float(2147483648)

=> Bng nh t0 ni nh!

T0 xin gi(i thch nh thG ny:

U dng th; nhDt, ta +em gn gi tr= 2147483647 cho $a. By l m8t gi tr= cYc to, nhng vdn
n]m trong int, v vNy $a sR thu8c ki5u int.
Dng th; 2 v th; 4, ta dng lPnh var_dump($a); By l lPnh in ra ki5u v gi tr= c@a m8t biGn
trong PHP. Ch nh, lPnh ny kh pha biGn v hay +,c dng +5 debug code.
U dng th; 3, ta dng lPnh gn $a = $a + 1; V0i cc b?n + h$c lNp trnh, +iLu ny cheng c g
kh hi5u. Sau khi thYc thi lPnh, $a sR mang gi tr= c@a $a c8ng thm v0i 1. Cn nGu (cheng
may) b?n cha h$c lNp trnh bao gi!, th t0 (l?i) xin gi(i thch nh thG ny:
- DDu b]ng O +y l lPnh gn, +em gi tr= c@a vG ph(i gn cho vG tri, ch; ko ph(i l dDu b]ng
trong bi5u th;c ton h$c m mnh vdn h$c. Do +, ko c g l tri v0i lR tY nhin c(. :P

M8t +iLu khc m b?n nn nh0, + l hy THfT c<n thNn khi sQ dSng sC ki5u float trong PHP.
N lun chJ l nh9ng gi tr= xDp xJ, v ko hL chnh xc tuyPt +Ci. Do + tCt nhDt l chuy5n sC
float sang int khi c th5. Cch lm sR +,c th(o luNn sau.

Gi! ta sang ki5u xu.

b. Ki,u xu

B=nh nghEa m8t ci no: Xu l m8t chu\i cc k tY. M8t cu t0 x pam l m8t xu. C( ci bi
viGt ny cTng c th5 l m8t xu.

B5 sQ dSng xu, c 3 cch (hic, b2t +-u ph;c t?p r^i => m$i ng!i +;ng dNy v"n vai ci cho
tJnh to! :P):

Cch 1 l dng nhy +"n.
Cch 2 l dng ngoHc kp (hay g$i l nhy kp g cTng +,c).
Cch 3 l dng ki5u HEREDOC.

Ni r nh:

Cch 1: Xu +,c +Ht trong dDu nhy +"n.
PHP Code:
<?php
echo '#y l xu "+t trong d)u nhy "!n';
?>

SR c b?n h_i t0 (sao h_i nhiLu thG!): Trong xu c th5 +Ht dDu nhy +"n +,c ko? Ki5u nh
Learning PHP & MySQL Updatesofts.com
8 By TXP Lover, Incomplete, iSheep, Seneken.
xu l I'm a student .
Cu tr( l!i l b?n ph(i thm m8t dDu s,c (hay su8c g ) tr0c dDu nhy +"n "bDt th!ng" .
Nh thG ny:
PHP Code:
echo 'Trong nhy "!n l-i c m$t nhy "!n nh( th. ny \', v nh( th. ny n0a \'.';


BHt ci dDu + (\) g$i l "escape the character". Ni nh_ nh: Bi t0 viGt hay chn tiGng Anh vo
l +5 cc b?n +c "bc ngc" khi +$c tut hay doc b]ng Eng.

M8t l-n n9a, (l?i) c m8t cu h_i +,c +Ht ra: NGu trong xu cTng c m8t dDu \ th sao?
Cu tr( l!i cTng rDt gi(n d=: Dng thm m8t dDu \ n9a ngay tr0c dDu \ . Nh thG ny \\

L-n ny, sR ko c m8t cu h_i, m sR l m8t tiGng thO di: Sao l2m th; thG? Cn ci dDu no
ph(i "escape" nh dDu \ v ' ko?
C. B l:
1. \n : Bo hiPu xuCng dng trong PHP. GiCng nh <br /> trong HTML.
2. \t : Thay mHt cho Tab
3. \$ : DDu dollar (trnh "c?nh tranh lnh m?nh" v0i tn biGn m! :P)
4. ... B5 gHp ni sau. Ni nhiLu e "t<u h_a nhNp ma" chGt!

Qun mDt, tr' \' v \\, mDy ci escape ny chJ dng trong tr!ng h,p xu +Ht trong dDu ngoHc
kp.

H! h!, l?i qun m8t +iLu ph(i ni tr0c khi chuy5n qua ph-n kG tiGp: NGu trong xu ta ko thm
dng dDu \, cTng kc thm dng dDu ', m dng c( \' cho "dn ch"i" th sao?
Tr( l!i: Th c; lm nh bnh th!ng thi. Nh thG n: \\\'. DDu \ th; 1 +5 escape cho dDu \ th;
2. DDu \ th; 3 +5 escape cho dDu ' cuCi cng. Th!ng thi!

Cch 2: Xu +,c +Ht trong dDu ngoHc kp (hay nhy kp - whatever)

Tr!ng h,p ny rDt giCng v0i sQ dSng dDu nhy +"n + ni O trn.
PHP Code:
<?php
echo "Xu ny "+t trong d)u ngo+c kp";
?>

SO dE ni RhT giCng m ko ph(i HON TON giCng v gi9a chng c +i5m khc nhau: Khi thYc
thi, PHP sR tm v thay thG trong xu nh9ng k tY +Hc biPt +,c escape (nh \n, \t...) nh +
ni O trn, cng v0i cc biGn (nGu c) trong xu.

V dS:
PHP Code:
<?php
$a =1;
Learning PHP & MySQL Updatesofts.com
9 By TXP Lover, Incomplete, iSheep, Seneken.
echo "Bi.n \$a c gi tr2 l $a";
?>

SR cho ta kGt qu(: BiGn $a c gi tr= l 1

Trong khi +, nGu sQ dSng dDu nhy +"n:
PHP Code:
<?php
$a =1;
echo 'Bi.n \$a c gi tr2 l $a';
?>

L?i in ra: BiGn \$a c gi tr= l $a

BiLu + cho thDy: Khi sQ dSng dDu nhy +"n, gi tr= c@a biGn trong xu, cng v0i cc k tY +Hc
biPt c-n escape sR ko +,c in ra. Cc b?n nh0 kb +iLu ny nh!

Ta sang cch th; 3: Xu +Ht trong cDu trc HEREDOC

U cch 1, PHP sR nhNn thDy 1 xu +,c b2t +-u v0i dDu nhy +"n th; nhDt v kGt thc v0i dDu
nhy +"n th; 2. T"ng tY v0i cch 2, nhng l dDu ngoHc kp.

U cch 3 ny, PHP sR coi m8t xu b2t +-u b]ng 3 dDu nh_ h"n viGt liLn nhau <<<, +i km v0i 1
tn +=nh danh (identifier) ty b?n +Ht tn, v dS l HERE, kGt thc l tn + km theo dDu ;

Nghe c vI h"i ph;c t?p, nhng b?n hy cng t0 g v dS sau: (ch l ch9 HERE c th5 thay
b]ng bDt c; ch9 g, tn b?n cheng h?n, mi`n l n tun theo nguyn t2c +Ht tn biGn c@a PHP.
, m nh0 l mO b]ng <<<HERE th ph(i +ng b]ng HERE; nh, ko +,c mO cQa ra vo, +ng
cQa sa +u!)
PHP Code:
<?php
echo <<<HERE
Xu &#273;(4c ghi dng th' nh)t
Dng th&#7913; 2
Dng th&#7913; 3
Vn vn
HERE;
?>

Nhn vo v dS trn, b?n c nhNn xt g?

Learning PHP & MySQL Updatesofts.com
10 By TXP Lover, Incomplete, iSheep, Seneken.
Th; nhDt, xu ko nhDt thiGt ph(i thu8c m8t dng. N ko nhDt thiGt ph(i ng2n g$n, m c th5 di
"trng giang +?i h(i" ra mDy chSc dng cTng +,c. BiLu ny rDt tiPn nGu b?n muCn echo m8t
lc c( m8t bi th" cheng h?n!

Th; hai, ch9 HERE; O dng cuCi cng t0 ko cMn lL v0i ch9 echo O dng 1. B l LUfT, d t0
thDy h"i "bDt cng" v "nghiPt ng" m8t t:
- Sau <<<HERE ph(i xuCng dng. Ko +,c php c d chJ 1 k tY tr2ng (dDu cch )
- Tr0c v sau HERE; cTng thG. Ko +,c php c d chJ 1 k tY tr]ng. Ni cch khc, +'ng d?i
g cMn lL cho dng ny.

Ci g l LUfT th ph(i THEO, ci ko +,c Cn nGu ko theo, PHP sR bo l\i:
Quote:
Parse error: parse error, unexpected T_SL in E:\XAMPP\htdocs\test.php on line 2

T0 ni dng di nh vNy l v + t'ng mDt bao nhiu th!i gian m0i tm ra +,c l\i sai c@a mnh.
ChJ v m8t dDu cch m ch"ng trnh +nh cng, ko thm ch?y! Kinh nghiPm x"ng mu!

Cn m8t n9a: NGu t' ny +Gn gi! b?n chJ +$c "chay", ko thYc hnh th (cha ch2c) + nhNn
thDy: Khi ch?y ch"ng trinh, thay v in ra mDy dng nh trn, PHP l?i in m$i th; ra cng 1
dng:
Quote:
Xu +,c ghi O dng th; nhDt Dng th; 2 Dng th; 3 Vn vn

SQa ch9a +iLu ny cTng kh +"n gi(n:
PHP Code:
<?php
$s =<<<HERE
Xu &#273;(4c ghi dng th' nh)t
Dng th&#7913; 2
Dng th&#7913; 3
Vn vn
HERE;
echo nl2br($s);
?>

C g b <n O +y ko? Thay v echo theng mDy dng kia ra, ta +i "vng vo" m8t cht b]ng cch
gn xu ch;a mDy dng + cho biGn $s, sau + echo nl2br($s) ra mn hnh.

nl2br() +,c g$i l m8t hm (function). N nhNn m8t xu lm tham sC (parameter), O +y l xu
$s, sau + in ra theo luNt: C; gHp dDu xuCng dng trong code l chuy5n thnh dDu xuCng dng
trong HTML.
Learning PHP & MySQL Updatesofts.com
11 By TXP Lover, Incomplete, iSheep, Seneken.

Ci tn nl2br cTng cheng ph(i th-n ch g kh nh0, n rDt gi(n d=: chJ l viGt t2t c@a new-line-to-
br. New-line l dDu xuCng dng trong code, 2 l to , br l <br /> (thI xuCng dng trong
HTML).

VNy l vDn +L + +,c gi(i quyGt. KGt qu( in ra +ng nh mong +,i:
Quote:
Xu +,c ghi O dng th; nhDt
Dng th; 2
Dng th; 3
Vn vn

Ki5u d9 liPu c" b(n cuCi cng m t0 sR ni t0i chnh l Ki5u boolean.

c. Ki,u boolean

By l ki5u d9 liPu +"n gi(n nhDt trong PHP (+c qu!). tOng rDt +"n gi(n: M$i th; chJ thu8c
vo 1 trong 2 lo?i: Bng hoHc Sai, C v Khng, 1 v 0. Khng c ngo?i lP. Anh ko l True th
sR l False. U +y ko c ch\ cho ng!i ba ph(i!!!

Gi tr= c@a biGn ki5u boolean l TRUE hoHc FALSE. Hai t' ny hon ton ko phn biPn hoa
th!ng, v vNy c th5 viGt nh thG no cTng +,c: TRue, tRUe, true, ...

V dS:
PHP Code:
<?php
$a =TRUE;
$b =false;
?>

M8t ki5u d9 liPu +"n gi(n +^ng nghEa v0i viPc ko c-n gi(i thch nhiLu vL v dS c@a n.

Nhng n l?i ko +^ng nghEa v0i viPc: Ki5u boolean cheng c g +ng ni! ThYc tG l ki5u ny rDt
hay dng trong PHP, v dS khi tnh ton m8t bi5u th;c v xem gi tr= c@a n c l0n h"n m8t sC
no +Dy hay ko... (bi5u th;c +iLu kiPn)

Xin +,c kGt thc Bi 2 t?i +y. C(m "n qu v= + quan tm theo di...

COMING UP NEXT: MBt sH hm c)n thi8t khi debug code


Bi 2 - M6c 3: Cc ki,u d> liDu quan tr/ng khc

TiGp sau mSc 2: Cc ki5u d9 liPu c" b(n, t0 xin gi0i thiPu thm m8t vi ki5u d9 liPu quan tr$ng
khc c@a PHP: M(ng, BCi t,ng, Null v Resource (sozy v 2 ki5u cuCi ko r d=ch nh thG no)

1. MAng (array)
Learning PHP & MySQL Updatesofts.com
12 By TXP Lover, Incomplete, iSheep, Seneken.

M(ng +,c sQ dSng khi b?n muCn lu tr9 m8t sC l,ng l0n cc biGn. M8t v dS hGt s;c +"n
gi(n: M8t l0p c 50 h$c sinh, v b?n muCn qu(n l c( 50 h$c sinh +. B5 +?i diPn cho m8t h$c
sinh, tDt nhin b?n sR muCn 1 biGn. Nhng nGu +Ht tn l hs1, hs2, ... hs50 th qu( l qu mDt
th!i gian! V +y chnh l l do +5 m(ng c "+Dt dSng v".

M(ng ch;a rDt nhiLu gi tr= (value), m\i gi tr= +,c truy cNp nh! kha (key). Kha c th5 chJ l
nh9ng sC +Gm thng th!ng nh 1, 2, 3, hay c th5 l xu, nh "abc", "def", "ghi". M(ng c
kha l xu nh vNy +,c g$i l associative array.

B5 khai bo m8t m(ng, chng ta c th5 sQ dSng cch nh v dS sau:
PHP Code:
<?php
$a =array(1, 2, 3, 4);
$b =array("a", "b", "c");
$c =array(1, "a", array(3, 4));
?>

Nh O v dS trn, $a, $b, $c +Lu l m(ng. M(ng $a ch;a cc sC t' 1 +Gn 4, m(ng $b ch;a cc
xu "a", "b", "c". Cn m(ng $c snh +iPu h"n, ch;a c( sC ldn xu, thm c( m8t m(ng O bn
trong n n9a.

Sau khi khOi t?o gi tr= trong m(ng $a, mHc +=nh m\i ph-n tQ (element) trong n sR +,c gn
cho m8t kha l sC nguyn. N b2t +-u t' 0, ko ph(i l 1. Do +, ph-n tQ th; 0 sR l 1, th; 1 sR
l 2, vn vn.

V dS:
PHP Code:
<?php
echo $a[2];
?>

SR in ra mn hnh gi tr= 3 - t;c l ph-n tQ mang kha l 2 trong m(ng $a.

Nh t0 + ni O trn, m8t kha c th5 l m8t xu, nghEa l ng!i ta c th5 truy cNp m(ng $d
(cheng h?n) b]ng cch dng $d["blah"]. VNy ta khOi t?o gi tr= c@a $d nh thG no?

RDt +"n gi(n, ta sQ dSng ton tQ (operator) =>
PHP Code:
<?php
$d =array("blah" =>1, "abc" =>2, "def" =>"ghi");
?>
Learning PHP & MySQL Updatesofts.com
13 By TXP Lover, Incomplete, iSheep, Seneken.

C th5 d` dng +on +,c: NGu dng lPnh echo $d["def"] sR cho ra kGt qu( l "ghi".

Tm hi5u su thm vL M(ng, ki5u d9 liPu m?nh mR c@a PHP, sR l ph-n viPc c@a m8t Bi h$c
sau ny.

FHi t%Ing (object)

PHP5 l m8t ngn ng9 lNp trnh h0ng +Ci t,ng (OO - Object Oriented). Ni m8t cch +"n
gi(n nhDt (nhng vdn nghe tai nGu b?n cha nghe vL +Ci t,ng bao gi!) th lNp trnh h0ng
+Ci t,ng (OOP - Object Oriented Programming) l viPc t?o ra m8t ki5u d9 liPu m0i (+Ci t,ng
- object hay l0p - class). Thay v viPc ph(i t?o m8t dy cc hm lin quan +Gn +Ci t,ng +, b?n
sQ dSng thu8c tnh (properties) v ph"ng th;c (method) trYc tiGp c@a +Ci t,ng .

Hy nh2m m2t vo tOng t,ng. B?n c m8t qu( bng bay. Qu( bng c nh9ng thu8c tnh
g? , rDt +"n gi(n thi: B c th5 l kch th0c, mu s2c hay +8 cMng - xjp c@a bng.

Cn ph"ng th;c: Qu( bng c th5 cMng ln, hoHc xjp +i. RDt d` dng ph(i ko?

Gi! hy tOng t,ng, b?n c m8t +Ci t,ng mang tn QB (qu( bng ). B5 t?o ra m8t qu(
bng, b?n dng lPnh:
PHP Code:
<?php
$bong =new QB();
?>

Qu( bng c kch th0c (KT), mu s2c (MS) v +8 cMng - xjp (CX). B5 $bong mang mu +_,
b?n c th5 viGt:
PHP Code:
<?php
$bong->MS =red;
?>

T"ng tY, ni +Gn kch th0c, +8 cMng - xjp c@a qu( bng, ta c th5 dng $bong->KT, $bong-
>CX.

ThG cn ph"ng th;c? Nh + ni, qu( bng c th5 cMng ln (CL) hoHc xjp +i (XD). B5 thYc
thi cc ph"ng th;c ny, ta lm nh v dS sau:
PHP Code:
<?php
$bong->CL();
?>
Learning PHP & MySQL Updatesofts.com
14 By TXP Lover, Incomplete, iSheep, Seneken.

T?m d'ng viPc "cci ngYa xem hoa" ph-n +Ci t,ng t?i +y.

3. Null

M8t biGn +,c coi l NULL (ko c gi tr=) nGu n th_a mn c( 3 +iLu kiPn sau:
1. N +,c gn l NULL (ko phn biPt hoa th!ng)
2. N cha bao gi! "+,c" (hay "b=") gn gi tr=.
3. N + b= "xQ +jp" b]ng unset - hm h@y b_ cc biGn chJ +=nh.

B5 ki5m tra m8t biGn c l NULL hay ko, ta c th5 sQ dSng hm is_null(biGn). V dS:
PHP Code:
<?php
$test =NULL;
echo is_null($test);
?>

Cho ra kGt qu( l 1.

4. Resource

C nh9ng lc PHP c-n xQ l cc +Ci t,ng nh kGt nCi c" sO d9 liPu hay cc +Ci t,ng c@a hP
+iLu hnh. Chng sR +,c coi l resource.

Ni chung trong h-u hGt cc tr!ng h,p, b?n thNm ch ko nhNn ra viPc mnh c ph(i +ang lm
viPc v0i resource hay ko.


Bi 3: K8t hIp PHP v HTML

Ni +Gn PHP, ng!i ta ni +Gn lNp trnh web. Ni +Gn HTML, ng!i ta cTng ni +Gn lm web.
VNy ko c l g HTML v PHP l?i ko +i +,c cng v0i nhau! Bi 3 sR +L cNp t0i m8t vDn +L rDt
pha biGn khi lNp trnh PHP: KGt h,p m PHP v0i HTML.

Tr0c hGt, chng ta hy dnh t pht tm hi5u cch th;c ho?t +8ng c@a World Wide Web
(WWW).

Hy tOng t,ng, b?n +ang muCn truy cNp trang web www.example.com/welcome.html. B?n
mO trnh duyPt web, g vo +=a chJ: www.example.com/welcome.html v bDm Enter. Trang
web sR hiPn ra, g-n nh ngay t;c kh2c (O +y ko ni +Gn m?ng dial up siu chNm nh )

VNy, +iLu g + x(y ra t' lc b?n bDm Enter cho +Gn lc trang web xuDt hiPn? Hy cng t0 xem
xt nh9ng +o?n bMng "behind the scene" ny:

1. Ngay sau khi b?n bDm Enter, trnh duyPt b?n +ang dng sR gQi m8t thng +iPp (message) ln
m?ng, cho biGt b?n +ang muCn yu c-u (request) trang www.example.com/welcome.html
2. Thng +iPp + +,c chuy5n t0i my tnh t?i +=a chJ www.example.com/welcome.html
3. My ch@ trn my tnh + sR nhNn +,c thng +iPp v b2t +-u tm kiGm file HTML +,c yu
c-u.
4. My ch@ gQi file HTML + vL my tnh v'a yu c-u (chnh l my tnh c@a b?n). NGu ko tm
Learning PHP & MySQL Updatesofts.com
15 By TXP Lover, Incomplete, iSheep, Seneken.
thDy file HTML +,c yu c-u, +"n gi(n l my ch@ sR tr( l?i m8t thng bo l\i.
5. Trnh duyPt c@a b?n, sau khi nhNn vL trang HTML, sR hi5n th= n ra mn hnh.

U b0c th; 4, nGu file b?n yu c-u l 1 file mang +ui .php, thay v gQi tr( l?i n8i dung nguyn
gCc c@a file, my ch@ sR l-n l,t thYc hiPn thm cc b0c:
1. Qut file trong chG +8 HTML, gQi tr( vL n8i dung HTML.
2. Ngay khi gHp <?php, my ch@ sR chuy5n sang chG +8 PHP, b2t +-u thYc thi cc lPnh PHP
cho +Gn khi gHp ?>. Hi5n nhin nGu cc lPnh PHP c output, my ch@ sR tr( nh9ng output +
cho trnh duyPt.
3. KGt thc chG +8 PHP (ra ngoi ?>), my ch@ quay l?i chG +8 HTML.
Qu trnh c; thG tiGp tSc, cho +Gn khi kGt thc file .php.

VNy l + xong ph-n ni ngoi lL. Gi! ta b2t +-u vo Bi 3.

U Bi 1, t0 + cng cc b?n viGt ch"ng trnh +-u tin, Hello World, b]ng PHP. Gi! thQ nhn
m8t file .php cTng mang n8i dung Hello World:
HTML Code:

<html>
<head>
<title>Hello World</title>
</head>
<body>
<p>Hello World!</p>
</body>
</html>

Nh v dS trn +y, cc b?n c th5 thDy: By chJ +"n thu-n l m8t file HTML, mang +ui .php.
Cheng c g +Hc biPt! V khi trnh duyPt yu c-u file ny, my ch@ chJ viPc gQi tr( n8i dung
nguyn gCc m ko c-n ph(i xQ l m8t cht lPnh no c(.

Gi! hy thQ nng cDp file .php + b]ng cch thm vo n m8t cht m PHP:
PHP Code:
<html>
<head>
<title>Hello World</title>
</head>
<body>
<?php
echo "<p>Hello World!</p>";
?>
Learning PHP & MySQL Updatesofts.com
16 By TXP Lover, Incomplete, iSheep, Seneken.
</body>
</html>

Khi ch?y script ny, kGt qu( khi view source code cTng ko khc g v dS +-u tin. ChJ c cch
lm l khc, thay v chJ sQ dSng HTML, ta kGt h,p c( PHP v HTML trong cng m8t file.

Gi!, nGu ta muCn in ra mn hnh ch9 Hello O m8t dng, v World O m8t dng, ta sR lm ntn?

NGu cc b?n c biGt vL HTML, th sR nghE ngay +Gn thI <br />:
PHP Code:
<html>
<head>
<title>Hello World</title>
</head>
<body>
<?php
echo "<p>Hello<br />World!</p>";
?>
</body>
</html>

KGt qu( output thNt mb mn v cheng c g +ng ni.

Tuy vNy, nGu cc b?n cn nh0, t0 + t'ng ni \n c th5 dng +5 xuCng dng trong PHP. VNy,
th'a th2ng xng ln, b?n sR thay <br /> b]ng \n:
PHP Code:
<html>
<head>
<title>Hello World</title>
</head>
<body>
<?php
echo "<p>Hello\nWorld!</p>";
?>
</body>
</html>

KGt qu(? ThDt b?i. Trn mn hnh, ch9 Hello v World vdn n]m cng m8t dng. T?i sao l?i nh
Learning PHP & MySQL Updatesofts.com
17 By TXP Lover, Incomplete, iSheep, Seneken.
vNy? Lm thG no +5 gi(i quyGt vDn +L ny?

Tr( l!i: \n +ng l +5 xuCng dng, nhng + l xuCng dng trong PHP output, n ko +(m b(o
viPc xuCng dng khi ci PHP output + +,c trnh duyPt xQ l d0i d?ng m HTML.

B5 trnh duyPt xQ l chnh xc nh9ng vDn +L ntn, ta cho ton b8 xu + vo thI <pre>, thI
quyGt +=nh viPc gi9 nguyn +=nh d?ng c@a xu:
PHP Code:
<html>
<head>
<title>Hello World</title>
</head>
<body>
<?php
echo "<p><pre>Hello\nWorld!</pre></p>";
?>
</body>
</html>

M8t l-n n9a, kGt qu( hiPn ra thNt mb mn.

Ta xt thm m8t v dS n9a.
PHP Code:
<?php
print_r($_SERVER);
?>

Script trn lm tr g vNy ta? Cha c-n biGt print_r v $_SERVER l g, b?n chJ c-n thDy
+o?n n output ra mDy dng sau: (t0 ph(i post (nh v UDS ko cho php +a +o?n vo bi
viGt)

Learning PHP & MySQL Updatesofts.com
18 By TXP Lover, Incomplete, iSheep, Seneken.


Ph(n ;ng +-u tin? B?n sR thDy h"i chng mHt ph(i ko ?? B?n sR tY h_i: NhiLu th; thG kia viGt
lu ru vo nhau th ai m +$c +,c? T?i sao ko tch dng ra ch;?

, ni +Gn tch dng, b?n sR nh0 ngay t0i thI <pre> m t0 ni bn trn. B?n sR thm n vo
script c@a mnh:
PHP Code:
<?php
echo "<pre>";
print_r($_SERVER);
echo "</pre>";
?>

KGt qu( tr( vL ko th5 ni l d` +$c, m ph(i ni l rDt d` +$c , tuy (c th5) b?n cheng hi5u ci
g sDt!

Hy t?m hi lng v0i nh9ng g mnh v'a lm +,c v th gin m8t cht tr0c khi ta b0c vo
Bi 4.

BNt m tr0c: Chng ta + biGt t0i hm var_dump in ra ki5u v gi tr= c@a biGn, hm print_r (b?n
+on l) in ra cc gi tr= c@a m8t ci $_SERVER g +. VNy trong Bi 4, ta sR cng tm hi5u
print_r l g, sQ dSng ra sao, v cn nh9ng hm no nh vNy n9a.


Bi 4: Cc ton t5

B5 thYc hiPn viPc tnh ton cc gi tr= trong PHP, ta sQ dSng ton tQ (operator).

1. Gn (assignment)

Ton tQ gn (dDu =) +,c sQ dSng hGt s;c +"n gi(n. V dS:
PHP Code:
<?php
$a =1;
$b =1;
$c ="cool";
?>

Sau v dS, biGn $a v $b mang gi tr= 1, $c mang gi tr= "cool".

B5 cho ng2n g$n, thay v ph(i mDt 2 dng khai bo $a v $b, ta c th5 g8p:
PHP Code:
Learning PHP & MySQL Updatesofts.com
19 By TXP Lover, Incomplete, iSheep, Seneken.
<?php
$a =$b =1;
// Ho+c: $b =$a =1;
?>

KGt qu( vdn +ng nh mong +,i.

2. Ton t5 sH h/c (arithmetic)

Cc ton tQ ny g^m c: + (c8ng - addition), - (tr' - subtraction), * (nhn - multiplication), / (chia
- division) v % (tnh modul - modulus).

V dS:
PHP Code:
<?php
$a =10;
$b =5;
$c =$a +$b; // $c =15
$d =$c - $a; // $d =5
$e =$a / $b; // $e =2
$f =$e * $b; // $f =10
$g =$a % $e; // $g =0
?>

Ngoi ra, +5 sau khi tnh ton, gi tr= $a b]ng $a nhn 2 cheng h?n, thay v viGt $a = $a * 2; ta
c th5 viGt ng2n g$n: $a *= 2;

T"ng tY, c th5 viGt $a += 10; $a -= 1; $a /= 3; $a %= 1; CDu trc ny rDt giCng C v C++, nn
nGu b?n + biGt qua 2 ngn ng9 ny th ko c g ph(i bc ngc.

3. Ton t5 so snh (comparision)

Ton tQ so snh g^m nh9ng ton tQ sau:

== Mang gi tr= TRUE khi 2 vG mang cng gi tr=
=== Mang gi tr= TRUE khi 2 vG mang cng gi tr= V cng ki5u
!= Mang gi tr= TRUE khi 2 vG ko cng gi tr=
<> Mang gi tr= TRUE khi 2 vG ko cng gi tr=
!== Mang gi tr= TRUE khi 2 vG ko cng gi tr= HOkC ko cng ki5u
< Mang gi tr= TRUE khi vG tri mang gi tr= nh_ h"n vG ph(i
> Mang gi tr= TRUE khi vG tri mang gi tr= l0n h"n vG ph(i
<= Mang gi tr= TRUE khi vG tri mang gi tr= nh_ h"n hoHc b]ng vG ph(i
>= Mang gi tr= TRUE khi vG tri mang gi tr= l0n h"n hoHc b]ng vG ph(i

Learning PHP & MySQL Updatesofts.com
20 By TXP Lover, Incomplete, iSheep, Seneken.
Ta sR viGt l $a == $b, $a !== $b, $a > $b...

V dS:
PHP Code:
<?php
"123" ==123 // #ng
"123" ===123 // Sai
"123" ==="123" // #ng
?>

Cn m8t lo?i ton tQ so snh n9a, +,c viGt d0i d?ng:

exp1 ? exp2 : exp3

V dS:
PHP Code:
<?php
$a =($b >1) ? 2 : 1;
?>

C th5 gi(i thch nh sau: NGu $b > 1 th $a mang gi tr= 2, cn ko $a mang gi tr= 1.

4. Ton t5 logic (logical)

G^m c:

&& Mang gi tr= TRUE nGu c( 2 vG +Lu l TRUE
|| Mang gi tr= TRUE nGu m8t trong 2 vG l TRUE
! Mang gi tr= TRUE nGu vG c gi tr= FALSE
xor Mang gi tr= TRUE nGu c +ng 1 trong 2 vG l TRUE

Ta viGt: $a && $b, $a xor $b...

C th5 dng "and" thay cho && v "or" thay cho || cTng ko sao.

5. Ton t5 bit (bitwise)

Ton tQ +5 xQ l bit bao g^m:

& Php And
| Php Or
^ Php Xor
~ Php Not
<< Php Shift Left
>> Php Shift Right
Learning PHP & MySQL Updatesofts.com
21 By TXP Lover, Incomplete, iSheep, Seneken.

C th5 viGt $a >> 2, $b | $c,...

6. Ton t5 dng trong xu

B5 nCi 2 xu, ta dng ton tQ nCi xu (concatenation), bi5u di`n b]ng dDu chDm (.)

V dS $a . $b, "Xu" . "M8t xu khc"

Hi5n nhin c th5 viGt $a .= "M8t xu no +"

6. Ton t5 dng trong mAng

+ G8p 2 m(ng (union)
== So snh b]ng, mang gi tr= TRUE nGu cc ph-n tQ c@a 2 m(ng mang cng kha & gi tr= (c
th5 th; tY khc nhau)
!= hoHc <> Mang gi tr= TRUE nGu cc ph-n tQ c@a 2 m(ng ko cng kha & gi tr=
=== So snh b]ng, mang gi tr= TRUE nGu cc ph-n tQ c@a 2 m(ng mang cng kha & gi tr= &
th; tY giCng nhau
!== Mang gi tr= TRUE nGu 2 m(ng ko giCng hPt nhau (non-identical)

7. Cc ton t5 khc

Cc ton tQ khc c th5 k5 +Gn ton tQ tY tMng (auto-increment) v tY gi(m (auto-decrement),
k hiPu t"ng ;ng l ++ v --.

V dS $a++, $b--, --$c, ++$d

M8t ton tQ khc l ton tQ @, cho php PHP b_ qua l\i c@a m8t l-n g$i hm.

V dS:

$test = @file('B?n ko c quyLn s! +Gn file ny');



TCn d6ng m nguJn c sKn b:ng cch include file

Sau khi +$c xong bi SQ dSng hm trong PHP, b?n sR c trong tay rDt nhiLu hm c-n thiGt khi
code. SC l,ng hm ny ch2c ch2n sR tMng d-n theo th!i gian.

V dS b?n +ang viGt rDt nhiLu hm vL tnh ton v0i hnh trn:
PHP Code:
function tinh_dien_tich_hinh_tron($ban_kinh) {
// code
}

function tinh_chu_vi_hinh_tron($ban_kinh) {
// code
}
Learning PHP & MySQL Updatesofts.com
22 By TXP Lover, Incomplete, iSheep, Seneken.

// r)t nhi5u hm khc


Thay v copy v paste cc hm trn vo tDt c( cc file dnh dng +Gn viPc tnh ton v0i hnh
trn, b?n hy cho nh9ng hm + vo 1 file ring, +Ht tn l hinh_tron.php cheng h?n. M\i l-n
muCn sQ dSng cc hm trong file hinh_tron.php +, b?n chJ viPc include n vo file hiPn t?i b]ng
m8t trong cc cch sau:

1. Dng include
PHP Code:
include(tn_file);


2. Dng require
PHP Code:
require(tn_file);


File +,c include c th5 mang +=nh d?ng bDt kW, php, inc, lib... ty b?n ch$n.

Cu h_i 1: include v0i require lm g?

Khi b?n include/require 1 file no +, ko c-n biGt file + mang +=nh d?ng g, PHP sR qut n8i
dung file + v b2t +-u xQ l 2 tr!ng h,p:
- V0i nh9ng +o?n n]m trong thI php, PHP sR thYc thi nh v0i file PHP thng th!ng
- V0i nh9ng +o?n n]m ngoi thI php, PHP sR output ra mn hnh

Cu h_i 2: include khc require O ch\ no?

M8t file +,c include nGu (cheng may) ko t^n t?i sR khiGn PHP bo l\i, tuy nhin ph-n cn l?i
c@a script vdn sR +,c thYc thi.
Ng,c l?i, m8t file +,c require nGu (xui xIo) ko t^n t?i sR khiGn PHP +;ng lun, ko ch?y tiGp
script. Ni cch khc, file +,c require l file tCi quan tr$ng, (nh hOng t0i viPc thYc thi 1 script.

Ngoi viPc sQ dSng include v require, b?n cn c th5 dng include_once v require_once. VL
c" b(n, include v include_once giCng nhau. require v require_once cTng thG.

Bi5m khc biPt l khi sQ dSng require_once hay include_once, file + chJ +,c include +ng 1
l-n duy nhDt.

Hy xt 1 v dS: B?n c 3 script A, B, C. Trong + A include B, B include C v C include l?i A.

NGu b?n chJ dng include() trong c( 3 tr!ng h,p, ch2c ch2n PHP sR bo l\i. B5 trnh tr!ng
h,p ny, b?n chJ viPc sQa 3 ci include() thnh include_once() => VDn +L +,c gi(i quyGt!
Learning PHP & MySQL Updatesofts.com
23 By TXP Lover, Incomplete, iSheep, Seneken.



CMu trc iEu khi,n trong PHP

Cc cu lPnh +iLu kiPn: cc cu lPnh ny cho php chng ta phn biPt cc khCi m lPnh m sR
+,c thYc thi chJ khi gHp ph(i cc +iPu kiPn no +. PHP cung cDp hai cDu trc lPnh +iLu kiPn.
B-u tin l if...elseif...else, cho php chng ta c th5 ki5m tra m8t sC l,ng cc bi5u th;c v
thYc thi cc cu lPnh theo gi tr= c@a chng. NGu chng ta mong muCn ki5m tra m8t bi5u th;c
+"n lI v0i m8t sC l,ng cc gi tr=, PHP cTng cung cDp m8t cDu trc switch...case m c th5
lm +"n gi(n ho +i php ton ny.

1) Cu lDnh If: Cu lDnh If l mBt trong nh>ng !c tnh quan tr/ng nhMt cNa mOi ngn ng>
lCp trnh. N cho php thPc thi ch/n lPa cc dng m lDnh chQ khi thoA mn cc iEu kiDn
c6 th,.
Cheng h?n:

PHP Code:
if ($country=="ca")echo ("Canada");//Canada "(4c in ra khi bi.n $country l ca




NGu nhiLu h"n m8t cu lPnh +,c thYc hiPn khi tho mn +iLu kiPn th sQ dSng dDu {} +5 chJ ra
nh9ng dng lPnh no l n]m trong khCi if:



//Canada sR chJ +,c in nGu biGn $country l ca
PHP Code:
if ($country=="ca"){

echo("Canada");

echo("Ottawa");

}


BiLu kiPn +,c ki5m tra trong dDu {} ph(i tr( vL gi tr= Boolean, hoHc l true hoHc l false. CTng
nh bDt kW +iLu kiPn no m khng +,c tho mn, zero hay l chu\i r\ng (""), cc gi tr=
khng +,c +=nh nghEa th tDt c( +Lu tr( vL gi tr= l false. Cc +iLu kiPn c th5 +,c nCi v0i
nhau b]ng cc ton tQ logic and (&&), or(||) v xor.V dS nh sau:


Learning PHP & MySQL Updatesofts.com
24 By TXP Lover, Incomplete, iSheep, Seneken.
PHP Code:
if (((4 <5) && (3 >2)) xor (5 ==5)) echo ("This will not print");




Cc +iLu kiPn phn nhnh: NGu +iLu kiPn +,c ki5m tra m tr( vL false, th PHP cho php ta
chJ ra m8t khCi lPnh khc c-n +,c thYc hiPn b]ng cch dng t' kho else. M\i th; trong khCi
m lPnh thYc thi +iLu kiPn ny +,c xem nh l m8t phn nhnh v m\i nhnh ph(i +,c +=nh
v= trong cc dDu ngoHc nGu ch;c nhiLu h"n m8t dng lPnh.V dS:

PHP Code:
if ($h <0) {

echo ("Negative");

}else {

echo ("Positive");

}


PHP cTng cung cDp t' kho elseif +5 ki5m tra cc +iLu kiPn lYa ch$n nGu +iLu kiPn trong cu
lPnh if l khng +ng. M8t sC cu lPnh elseif c th5 +,c sQ dSng v0i cu lPnh if. Nhnh else
cuCi cng cho php chng ta +=nh v= +o?n m m nn +,c thYc hiPn nGu c( +iLu kiPn if v
elseif +Lu khng +ng.

PHP Code:
if ($h <0) {

echo ("Negative");

}elseif ($h ==0) {

echo ("Zero");

}else {

Learning PHP & MySQL Updatesofts.com
25 By TXP Lover, Incomplete, iSheep, Seneken.
echo ("Positive");

}




Ta cTng c th5 ki5m tra nh9ng +iLu kiPn hon ton khc nhau khi sQ dSng elseif:
PHP Code:
if ($country =="ca") {

// do something ...

}elseif ($position =="h") {

// do something else ...

}


Ch : c( hai +iLu kiPn trn +Lu l true, nhng chJ c nhnh lPnh th; nhDt l +,c thYc hiPn.

CTng c th5 sQ dSng cc cu lPnh if l^ng nhau trong cu lPnh if khc.V dS:
PHP Code:
if ($country =="ca") {

if ($position =="h") {

echo ("Human resources positions in Canada.");

}elseif ($position =="a") {

echo ("Accounting positions in Canada.");

}

}

Learning PHP & MySQL Updatesofts.com
26 By TXP Lover, Incomplete, iSheep, Seneken.

Cc cu lPnh trn cTng t"ng tY nh sau:
PHP Code:
if ($country =="ca" && $position =="h") {

echo ("Human resources positions in Canada.");

}elseif ($country =="ca" && $position =="a") {

echo ("Accounting positions in Canada.");

}


PHP cTng cung cDp m8t c php lYa ch$n cho cu lPnh if,+ l if....endif.V dS:
PHP Code:
if ($country =="ca"):

echo ("Canada");

elseif ($country =="cr"):

echo ("Costa Rica");

else:

echo ("the United States");

endif;


2) Cu lDnh switch: %Ic s5 d6ng khi mBt bi8n ring rS ang %Ic ki,m tra so v&i cc
gi tr< khc.
V dS:
PHP Code:
switch ($country) {

Learning PHP & MySQL Updatesofts.com
27 By TXP Lover, Incomplete, iSheep, Seneken.
case "ca":

echo ("Canada");

break;

case "uk":

echo ("the United Kingdom");

break;

default:

echo ("the United States");

}


Khi cu lPnh switch thYc hiPn ki5m tra gi tr= c@a biGn $country v so snh n v0i m\i m8t trong
cc gi tr= trong cc mPnh +L case. Khi m8t gi tr= thch h,p +,c tm thDy, cc cu lPnh kGt
h,p v0i case +,c thYc hiPn cho +Gn khi gHp cu lPnh break. Cn nGu khng tm ra +,c gi
tr= thch h,p no th cu lPnh default sR +,c thYc hiPn. Ch r]ng lPnh switch trong PHP th
linh ho?t h"n nhiLu so v0i h-u hGt cc ngn ng9 khc. Khng giCng nh C, Java v ngay c(
JavaScript, cc gi tr= case cTng c th5 l m8t trong cc lo?i v h0ng, bao g^m tDt c( cc sC
,cc chu\i v ngay c( cc biGn.V dS:
PHP Code:
$val =6;$a =5;$b =6;

switch ($val) {

case $a:

echo ("five");

break;

case $b:

Learning PHP & MySQL Updatesofts.com
28 By TXP Lover, Incomplete, iSheep, Seneken.
echo ("six");

break;

default:

echo ("$val");

}


Cc m(ng v cc +Ci t,ng chJ l nh9ng lo?i d9 liPu l khng ph(i l nh9ng nhn +ng c@a
case trong PHP.


Vng l!p: Cc vng l!p chnh l cc ph%'ng tiDn cNa viDc thPc thi mBt khHi m lDnh
trong mBt sH l)n cho tr%&c hay l cho 8n khi g!p phAi mBt iEu kiDn nhMt <nh. PHP c
hai lo3i vng l!p: vng l!p while ki,m tra iEu kiDn tr%&c hay l sau mOi b%&c tnh l!p i
l!p l3i v thPc hiDn l!p l3i chQ khi iEu kiDn l ng. MBt ki,u l!p khc l for, trong tr%Tng
hIp ny, sH l%Ing b%&c tnh l!p i l!p l3i %Ic qui <nh tr%&c khi l!p l)n )u v khng
th, b< thay Vi.

1. Vng l!p while: l cu lDnh l!p 'n giAn nhMt. C php t%'ng tP nh% cu lDnh if:
PHP Code:
while (condition) {

//cc cu l7nh

}


M8t vng lHp while sR ki5m tra m8t bi5u th;c Boolean. NGu bi5u th;c l false th +o?n m bn
trong dDu ngoHc mc sR +,c b_ qua. Ng,c l?i, nGu c gi tr= true th +o?n m bn trong dDu
ngoHc mc sR +,c thYc hiPn. Khi gHp dDu } th +iLu kiPn ki5m tra sR +,c thYc hiPn l?i v nGu
c gi tr= l true th +o?n m trong vng lHp sR +,c thYc hiPn l?i. BiLu ny sR tiGp tSc cho +Gn
khi gHp ph(i +iLu kiPn . Ch r]ng +iLu kiPn chJ +,c ki5m tra m\i khi b2t +-u vng lHp, bOi
vNy ngay khi sY chnh xc c@a +iLu kiPn thay +ai trong suCt +o?n gi9a c@a khCi lPnh ,th m
lPnh sR vdn +,c thYc thi cho +Gn hGt. B5 thot kh_i vo th!i +i5m s0m h"n,ta c th5 sQ dSng
lPnh break. V dS:
PHP Code:
$i =11;

while (--$i) {
Learning PHP & MySQL Updatesofts.com
29 By TXP Lover, Incomplete, iSheep, Seneken.

if (my_function($i) =="error") {

break; // d8ng vng l+p!

}

++$num_bikes;

}


Trong v dS ny, nGu ta hnh dung r]ng hm my_function khng tr( vL bDt k l\i no th vng lHp
sR lHp +i lHp l?i 10 l-n v d'ng l?i khi biGn $i =0. Cn nGu my_function tr( vL l\i, th cu lPnh
break sR +,c thYc hiPn v vng lHp sR d'ng l?i. C nhiLu tr!ng h,p m chng ta mong
muCn kGt thc chJ khi sY lHp l?i hiPn th!i c@a vng lHp khng ph(i l ton b8 vng lHp c@a chnh
n. B5 +?t +,c +iLu ny, ta sQ dSng lPnh continue.V dS:
PHP Code:
$i =11;

while (--$i) {

if (my_function($i) =="error") {

continue;

}

++$num_bikes;

}


Bo?n m ny cTng lHp +i lHp l?i 10 l-n nGu khng c l\i no +,c tr( vL bOi hm my_function.
Tuy nhin t?i lc ny, nGu c l\i x(y ra, viPc thYc hiPn sR l0t qua sY lHp l?i kG tiGp c@a vng
lHp, m khng tMng biGn +Gm $num_bikes.Gi( sQ biGn $i vdn l0n h"n 0, vng lHp sR tiGp tSc
nh bnh th!ng.



Learning PHP & MySQL Updatesofts.com
30 By TXP Lover, Incomplete, iSheep, Seneken.
2. Vng l!p do...while: vng l!p ny cWng giHng nh% while, ngo3i trX iEu kiDn %Ic
ki,m tra t3i cuHi mOi vng l!p, thay v l 4 )u. FiEu ny c nghYa l vng l!p sS lun
lun thPc hiDn t nhMt mBt l)n.
V dS:
PHP Code:
echo ("<SELECT name='num_parts'>\n");

$i =0;

do {

echo ("\t<OPTION value=$i>$i</OPTION>\n");

}while (++$i <$total_parts);

echo ("</SELECT>\n");


V0i +o?n m trn, gi tr= zero lun lun xuDt hiPn nh l m8t ty ch$n trong thnh ph-n
<SELECT>, ngay c( nGu biGn $total_parts=0.

Cc cu lPnh while v do...while th!ng +,c dng v0i cc ton tQ tMng hay gi(m +5 +iLu
khi5n khi no th b2t +-u v d'ng nh v dS trn. Cc biGn th!ng +,c dng cho mSc +ch
ny +i khi +,c +=nh nghEa nh l cc biGn +iLu khi5n vng lHp.Thng th!ng sQ dSng cc
cu lPnh while trong viPc +$c cc records t' m8t truy vDn c" sO d9 liPu, t' cc dng trong m8t
file hay l t' cc nhn tC trong m8t m(ng.



3. Vng l!p for: CMu trc cNa vng l!p for l kh phZc t3p h'n m!c d)u cc vng l!p for
th%Tng tiDn lIi h'n cc vng l!p while:
PHP Code:
for ($i =1; $i <11; ++$i) {

echo ("$i <BR>\n"); //In t8 1 ".n 10

}


Cu lPnh for ch;a ba bi5u th;c bn trong dDu ngoHc +"n c@a n, phn biPt v0i nhau bOi dDu
chDm ph<y.Bi5u th;c th; nhDt l m8t cu lPnh gn +5 khOi t?o biGn +iLu khi5n vng lHp. Cu
lPnh ny +,c thYc thi chJ m8t l-n tr0c sY lHp l?i l-n +-u c@a vng lHp.Bi5u th;c th; hai l
Learning PHP & MySQL Updatesofts.com
31 By TXP Lover, Incomplete, iSheep, Seneken.
bi5u th;c Boolean m +,c thYc thi t?i +-u m\i l-n lHp. NGu gi tr= tr( vL l true th vng lHp sR
tiGp tSc thYc hiPn. NGu l false th vng lHp kGt thc. Bi5u th;c th; ba l m8t cu lPnh m thYc
thi t?i giai +o?n cuCi c@a m\i l-n lHp c@a vng lHp. N th!ng +,c dng +5 tMng hay gi(m cc
biGn +iLu khi5n vng lHp .



Hm (Functions) trong PHP

Khng th$ khng ni #8n hm trong vi;c l@p trnh, nhA c n m ch7.ng trnh cCa chng ta trD
nn dE dng tG chHc h.n. Nh7 cc ngn ngI khc, PHP c kh> nJng cung c5p nhIng hm do
ng7Ai dng tK #3nh nghLa. NOng thAi, PHP c0ng c m*t sP c>i ti8n #$ vi;c vi8t hm #79c dE
ch3u v mnh mQ h.n.

F<nh nghYa v g/i hm

RDt d` +5 <nh nghYa mBt hm trong PHP:
PHP Code:
<?php

function tn_hm([cc tham s&#7889; truy5n vo ...])
{
[thn hm ...]
}

?>
- T' kho function bo cho PHP biGt r]ng +y l m8t hm. TiGp theo + l tn hm. Tn hm
c@a PHP c th5 l bDt c; k tY Unicode g (k5 c( tiGng ViPt, tiGng Trung, nhng khng +,c
php b2t +-u b]ng sC). ThNt sY m?nh mR, nhng b?n sR gHp vDn +L khi lu file +. Thi th c;
+Ht tn khng dDu l an nhDt . V dS:
PHP Code:
<?php
function this_is_m&#7897;t_hm()
{
echo "Hon ton h4p l7 !!!";
}
?>
- Sau tn hm l danh sch tham sC truyLn vo v ph-n thn hm. Ph-n thn hm ph(i b2t +-u
v kGt thc b]ng cHp dDu { }. Ph-n thn ny +,c thYc thi khi tn hm +Y"c g$i.

- Ch : m\i tn hm chJ +,c +=nh nghEa m8t l-n. V0i m8t sC ngn ng9 khc, hm c th5 +,c
g$i + khi danh sch tham sC truyLn vo l khc nhau (Java cheng h?n), nhng PHP th khng
c viPc +.
Learning PHP & MySQL Updatesofts.com
32 By TXP Lover, Incomplete, iSheep, Seneken.

G/i hm cTng kh d`. B?n chJ viPc g$i tn hm cng danh sch tham sC +i km. Hay h"n, viPc
g$i hm KHNG PHN BIlT CHn HOA-CHn THopNG. Tuy nhin, khuyGn co l nn g$i
hm theo +ng tn hm + +Ht, nh thG d` qu(n l h"n.
PHP Code:
<?php

generate_left_menu_bar();
GeNeRaTe_LeFt_MEnu_BaR(); // c9ng "(4c, nh(ng khng nn dng !!!
process_user_information($current_user, "new user", 65.0);
generate_copyright_notices();
generate_left_menu_bar; // Sai !! V khng c d)u ()!!

?>

Ch v dS trn, khi g$i tn hm, lun ph(i c cHp dDu ( ) nGu hm khng nhNn tham sC no
(cn nGu nhNn tham sC th tDt nhin cHp dDu + +5 ch;a tham sC r^i, ph(i khng ).

NgXng viDc thPc thi hm
- Vo bDt c; th!i +i5m no trong qu trnh thYc thi hm, b?n cTng +Lu c th5 d'ng cng viPc
c@a hm b]ng t' kho return.
PHP Code:
<?php

function work_work_work()
{
$dow =date('l');

if ($dow =='Saturday' or $dow =='Sunday')
{
// ngh; vi7c vo cu=i tu>n
return;
}

// work hard
work_harder();
}

?>
Learning PHP & MySQL Updatesofts.com
33 By TXP Lover, Incomplete, iSheep, Seneken.
- Khi m hm work_work_work +,c g$i vo th; 7 hoHc Ch@ nhNt, n tr( vL "khng g c(", cn
nGu khng, n tr( vL gi tr= "lm viPc chMm chJ h"n +i !!" (V dS chJ mang tnh minh h$a ).

F%a tham sH vo hm

- V dS cho m8t cDu trc c" b(n:
PHP Code:
<?php

function my_new_function($param1, $param2, $param3, $param4)
{
echo <<<DONE
You passed in: <br/>
\$param1: $param1 <br/>
\$param2: $param2 <br/>
\$param3: $param3 <br/>
\$param4: $param4 <br/>

DONE;
}

?>
- Khi +a m8t sC tham sC vo hm, b?n ph(i phn cch chng b]ng dDu ph<y (,). B?n c th5
truyLn bDt kW tham sC no vo hm, bDt k5 l biGn, h]ng sC.. hoHc thNm ch l m8t hm khc:
PHP Code:
<?php

// g?i hm v@i nhi5u lo-i tham s= truy5n vo
my_new_function($userName, 6.22e23, pi(), $a or $b);

?>

Gi tr< trA vE cNa hm

- Thng th!ng, ng!i ta lNp trnh hm chJ +5 xQ l m8t cng viPc nhDt +=nh mang tnh lHp l?i,
v gi tr= tr( vL c@a hm l khng c (null). Nhng khng hZng tDt c( m$i tr!ng h,p +Lu nh
vNy:
PHP Code:
Learning PHP & MySQL Updatesofts.com
34 By TXP Lover, Incomplete, iSheep, Seneken.
<?php

function is_even_number($number)
{
if (($number % 2) ==0)
return TRUE;
else
return FALSE;
}

?>
-> Hm trn c gi tr= tr( vL l m8t gi tr= boolean True hoHc False.

LTi k8t:
Hm l m8t cng cS rDt m?nh trong PHP. ViPc sQ dSng hm khng chJ +5 tCi u cc +o?n code,
n cn lm cho ch"ng trnh d` +$c h"n v thch h,p +5 lm trong m8t nhm v0i nhau.

Chc b?n thnh cng,
iSheep



Ki,u d> liDu PHP (ti8p theo - bon tren)

PHP h\ tr, tm ki5u d9 liPu nguyn thuq.
BCn ki5u thng th!ng l: boolean, integer, floating-point number(float), string.
Hai ki5u ph;c t?p l: mAng( array) v Hi t%Ing ( object). V cuCi cng l hai ki5u +Hc biPt :
resource v NULL. Lo?i d9 liPu c@a biGn thng th!ng khng +,c gn bOi ng!i lNp trnh
m +,c quyGt +=nh t?i th!i gian ch?y c@a PHP, phS thu8c vo ng9 c(nh m biGn +,c dng.

1. Boolean: +y l ki5u +"n gi(n nhDt. M8t ki5u boolean bi5u th= m8t gi tr= thNt. N c th5 l
TRUE hay FALSE.

C php: +5 chJ +=nh m8t gi tr= boolean, c th5 sQ dSng t' kho TRUE hay l FALSE. C( hai
+Lu khng phn biPt ch9 hoa hay ch9 th!ng.

V dS:
Code:
$foo=True; // gn gi tr2 TRUE cho bi.n $foo.

B5 c th5 chuy5n m8t gi tr= sang ki5u boolean, chng ta c th5 dng (bool) hay (boolean). Tuy
nhin trong h-u hGt cc tr!ng h,p b?n khng c-n ph(i sQ dSng viPc p ki5u ny, bOi gi tr= sR
+,c tY +8ng chuy5n nGu n l m8t ton tQ, hm hay l cDu trc +iLu khi5n +i h_i m8t tham sC
ki5u boolean.

Learning PHP & MySQL Updatesofts.com
35 By TXP Lover, Incomplete, iSheep, Seneken.
Ch : -1 +,c xem l TRUE, giCng nh cc gi tr= khc 0 khc ( bDt k5 l sC d"ng hay m).


2. Integer: l mBt tCp hIp bao gJm cc sH {...,-2,-1,0,1,2,...}.
C php: Integer c th5 +,c chJ +=nh trong c" sC 10, c" sC thNp lSc phn hay c" sC bt phn,
tuW ch$n +i tr0c bOi dDu - hay +. NGu b?n sQ dSng v0i c" sC bt phn, b?n ph(i theo th; tY
v0i 0 +;ng tr0c, cn +Ci v0i sC thNp lSc phn th 0x.





V dS nh sau:
Code:
$a =1234; #s= thAp phn

$a =-123; #s= m

$a =0123; #s= bt phn

$a =0x1A; #s= thAp lBc phn


Kch th0c c@a ki5u d9 liPu ny l 32bit, v PHP khng h\ tr, ki5u unsigned integer. NGu b?n
chJ +=nh m8t sC v,t qua bin c@a ki5u d9 liPu integer, n sR +,c xem nh ki5u float. T"ng
tY nh vNy, khi b?n thYc hiPn m8t php ton m kGt qu( tr( vL l m8t sC v,t qua bin c@a
ki5u integer, th ki5u float sR +,c tr( vL. Tuy nhin, c m8t l\i trong PHP m khng ph(i bao
gi! +iLu ny cTng +ng, n lin quan +Gn cc sC m. Cheng h?n, khi b?n thYc hiPn -50000*
$million, kGt qu( sR l 429496728. Tuy nhin, khi c( hai ton tQ +Lu l sC d"ng th khng c
vDn +L g x(y ra.

B5 chuy5n m8t gi tr= sang ki5u integer, ta c th5 dng ton tQ p ki5u (int) hay (integer). Tuy
nhin, trong h-u hGt cc tr!ng h,p b?n khng c-n ph(i dng ton tQ p ki5u +, bOi gi tr= sR
+,c tY +8ng chuy5n sang nGu ton tQ, hm hay cDu trc +iLu khi5n +i h_i m8t +Ci sC integer.


3. Ki5u sC thYc (floats,doubles,hay real numbers) : c th5 +,c chJ +=nh b]ng cch sQ dSng
m8t trong cc c php sau:
Code:
$a =1.234; $a =1.2e3; $a =7E-10;

Kch cc c@a ki5u float ty thu8c vo platform, gi tr= l0n nhDt l xDp xJ 1.8e308



Learning PHP & MySQL Updatesofts.com
36 By TXP Lover, Incomplete, iSheep, Seneken.


4. String: l nh9ng chu\i cc k tY.Trong PHP,m8t k tY cTng t"ng tY nh m8t byte,do + c
chnh xc 256 k tY khc nhau.

C php: c th5 khai bo b]ng ba cch khc nhau nh sau:

DDu nhy +"n: cch d` dng nhDt +5 chJ +=nh m8t chu\i +"n gi(n l +ng n trong m8t dDu
nhy +"n.V dS:echo 'le bao vy';

DDu nhy kp: nGu chu\i +,c +ng trong dDu nhy kp("),PHP hi5u sR c thm cc chu\i
cho cc k tY +Hc biPt ..... V dS: \n;\t;\\;\$;

Heredoc: cc khc +5 phn +=nh chu\i l sQ dSng c php ("<<<"). ChJ nn cung cDp m8t +=nh
danh sau <<<, sau + l chu\i v tiGp l cng tn +=nh danh +5 +ng dDu nhy. B=nh danh dng
+5 +ng ph(i b2t +-u b]ng c8t +-u tin c@a dng. B=nh danh +,c dng ph(i c tn giCng nh
trong cc quy luNt +Ht tn biGn trong PHP.





5. M(ng : l m8t danh sch cc ph-n tQ c cng ki5u d9 liPu.M(ng c th5 l m(ng m8t chiLu
hay nhiLu chiLu.

M(ng m8t chiLu c chJ mSc: l m(ng +,c qu(n l b]ng cch sQ dSng chJ sC d0i ki5u
integer +5 bi5u th= v= tr c@a gi tr= yu c-u.C php: $name[index1];

V dS: m8t m(ng m8t chiLu c th5 +,c t?o ra nh sau:

Code:
$meat[0]="chicken";

$meat[1]="steak";

$meat[2]="turkey";

NGu b?n thYc thi dng lPnh sau: print $meat[1]; th trn trnh duyPt sR hi5n th= dng sau: steak.

B?n cTng c th5 sQ dSng hm array( ) c@a PHP +5 t?o ra m8t m(ng.V dS:

Code:
$meat=array("chicken","steak","turkey");
M(ng m8t chiLu kGt h,p: rDt thuNn l,i khi dng +5 nh x? m8t m(ng sQ dSng cc t' h"n l sQ
dSng cc integer, n gip ta gi(m b0t th!i gian v cc m yu c-u +5 hi5n th= m8t gi tr= cS th5.
Learning PHP & MySQL Updatesofts.com
37 By TXP Lover, Incomplete, iSheep, Seneken.
V dS: b?n muCn ghi l?i tDt c( cc th;c Mn v cc cHp r,u ngon.

Code:
$pairings["zinfandel"] ="Broiled Veal Chops";

$pairings["merlot"] ="Baked Ham";

$pairings["sauvignon"] ="Prime Rib";
M8t cch khc l b?n c th5 sQ dSng hm array( ) c@a PHP +5 t?o ra m8t m(ng lo?i ny, v dS
nh sau:

Code:
$pairings =array( zinfandel =>"Broiled Veal Chops",

merlot =>"Baked Ham",sauvignon =>"Prime Rib",

sauternes =>"Roasted Salmon";
M(ng nhiLu chiLu c chJ mSc: ch;c nMng c@a n cTng giCng nh m(ng m8t chiLu c chJ mSc,
ngo?i tr' viPc n c thm m8t m(ng chJ mSc +,c dng +5 chJ +=nh m8t ph-n tQ. C php:
$name[index1] [index2]..[indexN];

M8t m(ng hai chiLu c chJ mSc +,c t?o ra nh sau:

Code:
$position =$chess_board[5][4];
M(ng +a chiLu kGt h,p: kh h9u ch trong PHP. Gi( sQ b?n muCn ghi l?i cc cHp r,u-th;c
Mn, khng chJ lo?i r,u, m c( nh s(n xuDt. B?n c th5 thYc hiPn nh sau:

Code:
$pairings["Martinelli"] ["zinfandel"] ="Broiled Veal Chops";

$pairings["Beringer"] ["merlot"] ="Baked Ham";

$pairings["J arvis"] ["sauvignon"] ="Prime Rib";
Learning PHP & MySQL Updatesofts.com
38 By TXP Lover, Incomplete, iSheep, Seneken.

6. Object: b?n c th5 xem object nh l m8t biGn m minh ho? m8t ki5u mdu template +,c g$i
l class. Khi niPm c@a +Ci t,ng v l0p +,c sQ dSng nhiLu trong ngn ng9 lNp trnh h0ng
+Ci t,ng OOP. Khng giCng nh cc ki5u d9 liPu khc trong PHP, object ph(i +,c khai
bo.BiLu quan tr$ng l ph(i nhNn ra r]ng object khng h"n g m8t minh ho? c@a m8t l0p, v
ho?t +8ng nh l m8t khun mdu cho viPc t?o cc object c cc +Hc tnh v ch;c nMng cS th5.
Cho nn, l0p(class) ph(i +,c +=nh nghEa tr0c khi khai bo m8t object. B5 khOi t?o m8t +Ci
t,ng, b?n sQ dung cu lPnh new +5 minh ho? +Ci t,ng v0i m8t biGn.V dS:

Code:
<?php

class foo{

function do_foo(){

echo "Doing foo.";

}

}

$bar =new foo;

$bar->do_foo();

?>
7. Resource: l m8t biGn +Hc biPt, ch;a m8t tham chiGu +Gn m8t resource bn ngoi. Cc
resource +,c t?o ra v sQ dSng bOi cc hm +Hc biPt.
Gi(i phng resources: bOi do tham chiGu +Gm c@a hP thCng +,c gi0i thiPu trong PHP4 Zend-
engine, n sR tY +8ng pht hiPn khi m8t resource khng c-n thiGt cho lu di. Khi O trong
tr!ng h,p ny, tDt c( cc resource m + +,c dng cho resource ny +,c gi(i phng bOi
"b8 phNn thu nhHt rc". Do +, hiGm khi thNt sY c-n thiGt +5 gi(i phng b8 nh0 thng th!ng
b]ng cch sQ dSng hm free_result().

8. NULL: gi tr= NULL +Hc biPt dng +5 th5 hiPn m8t biGn khng c gi tr=. M8t biGn +,c xem l
NULL nGu:

o N +,c gn gi tr= h]ng sC NULL.

o N cha +,c khOi t?o gi tr= no.

o N l hm unset( )
Learning PHP & MySQL Updatesofts.com
39 By TXP Lover, Incomplete, iSheep, Seneken.

Ch thch: unset () l m8t hm dng +5 h@y b_ cc biGn chJ +=nh.

C php: chJ c m8t lo?i gi tr= c@a ki5u NULL. B?n c th5 khai bo nh v dS sau:
Code:
$var=NULL;



Lm viDc v&i mAng trong PHP

Cc v5n #( chnh sQ #79c #( c@p:
- Lm th8 no #$ to 1 m>ng trong PHP.
- Cch duy;t qua t5t c> cc ph,n tR trong 1 m>ng.
- S. l79c v( m>ng nhi(u chi(u

M4 )u

M(ng l m8t cch hiPu qu( +5 nhm m8t l,ng d9 liPu l?i v0i nhau thnh m8t khCi duy nhDt.
M(ng trong PHP cTng nh cc ngn ng9 khc (C/Java/VB), n bao g^m 2 ph-n: kho v gi tr=
(key v value). Nhng vdn c sY khc biPt, cc kho v gi tr= trong PHP +,c dng m8t cch
tY do, khng theo m8t rng bu8c qu m;c no c(. B?n hon ton c th5 dng m8t chu\i +5 lm
kho, cTng nh nhm cc gi tr= khng cng ki5u d9 liPu v0i nhau l?i lm thnh m8t m(ng.

SK khc bi;t trong cch sR dSng m>ng cCa PHP v-i cc ngn ngI khc

T?o v thm d9 liPu vo m(ng

M(ng +,c t?o d` dng b]ng t' kho array, v c th5 thm d9 liPu ngay trong ph-n n8i dung
c@a m(ng. NGu b?n thch dng m8t key theo thch c@a mnh th c th5 dng ton t' => +5
thm d9 liPu (value) cho key +.

H"i kh hi5u, nhng b?n hy xem nh9ng v dS d0i +y +5 biGt r h"n vL cch t?o m(ng cTng
nh cch lu tr9 gi tr= trong m(ng c@a PHP:
PHP Code:
<?php

// PHP tC "$ng gn key khi b-n t-o m$t mDng, bEt ">u t8 key 0
Learning PHP & MySQL Updatesofts.com
40 By TXP Lover, Incomplete, iSheep, Seneken.
// trong v dB d(@i, key 0 c gi tr2 l "Piper",
// t(!ng tC cho key 1, 2 v 3.
$airplanes =array("Piper", "Cessna", "Beech", "Cirrus");

// Chng ta c9ng c thF t-o key theo thch cGa chng ta,
//khng bEt bu$c phDi l s=
$home =array("size" =>1800, "style" =>"ranch",
"yearBuilt" =>1955, "numBeds" =>3,
"numBaths" =>2, "price" =>150000);
?>

PHP Code:
<?php

// key cGa m$t mDng khng bEt bu$c bEt ">u phDi l 0.
// ChHng h-n, key 123 "(4c dng lm key bEt ">u trong v dB ny.
$noises[123] ="hissssssss";

// v khi khai bo nh( th. ny, key ti.p theo cGa mDng sI l 124
$noises[] ="gobble gobble";

?>

Truy xuDt vo 1 ph-n tQ c@a m(ng

B?n c th5 truy xuDt ph-n tQ c@a m(ng b]ng cch g$i key c@a n:
PHP Code:
<?php
// v dB v5 cch g?i key l 1 s=
$breads =array("baguette", "naan", "roti", "pita");
echo "I like to eat ". $breads[3] . "<br/>\n";

$computer =array("processor" =>"Muncheron 6000",
"memory" =>2048, "HDD1" =>80000,
"graphics" =>"NTI Monster GFI q9000");

// v dB v5 cch g?i key l 1 chuJi
Learning PHP & MySQL Updatesofts.com
41 By TXP Lover, Incomplete, iSheep, Seneken.
echo "My computer has a " . $computer['processor']
. " processor<br/>\n";

?>

Xo ph-n tQ kh_i m(ng

B5 xo 1 ph-n tQ no + c@a m(ng, b?n dng t' kha unset cho ph-n tQ +:
PHP Code:
<?php

$drinks =array("Coffee", "Caf au Lait", "Mocha", "Espresso",
"Americano", "Latte");
unset($drinks[3]); // xa ph>n tK "Mocha" khLi mDng.

?>
Cn muCn xo ton b8 ph-n tQ c@a m(ng, b?n cTng dng t' kho unset, nhng cho ton b8
m(ng:
PHP Code:
<?php

unset($drinks); // mDng $drinks giM " b2 xa s-ch d0 li7u

?>
BGm sC ph-n tQ c@a m(ng

SQ dSng t' kho count:
PHP Code:
<?php

$drinks =array("Coffee", "Caf au Lait", "Mocha", "Espresso",
"Americano", "Latte");
$elems =count($drinks);

// k.t quD sI l 6.
echo "The array \$drinks has $elems elements<br/>\n";
Learning PHP & MySQL Updatesofts.com
42 By TXP Lover, Incomplete, iSheep, Seneken.

?>

II. DuyDt tMt cA cc ph)n t5 cNa mAng

Vng lHp foreach
PHP Code:
foreach (array as [key =>] values)
kh&#7889;i l7nh


Vng lHp ny sR duyPt qua t'ng ph-n tQ m8t trong m(ng, n sQ dSng m8t biGn cho tr0c +5
t?o m8t b(ng copy ph-n tQ m n +ang duyPt t0i v xQ l trn biGn +. Vng lHp kGt thc khi
khng cn ph-n tQ no +5 duyPt.
PHP Code:
<?php

$drinks =array("Coffee", "Caf au Lait", "Mocha", "Espresso",
"Americano", "Latte");
foreach ($drinks as $drink)
{
echo "We serve $drink<br/>\n";
}

?>

Vng lHp thng th!ng (for)

Vng lHp for hon ton c th5 +,c dng +5 duyPt qua tDt c( cc key c@a m(ng:
PHP Code:
<?php

$drinks =array("Coffee", "Caf au Lait", "Mocha", "Espresso",
"Americano", "Latte");

for ($x =0; $x <count($drinks); $x++)
{
Learning PHP & MySQL Updatesofts.com
43 By TXP Lover, Incomplete, iSheep, Seneken.
echo "We serve '$drinks[$x]'<br/>\n";
}

?>

III. MAng nhiEu chiEu (Multi-Dimensional Arrays)

RDt nhiLu tr!ng h,p b?n muCn lu tr9 nhiLu m(ng trong 1 m(ng c sZn. Khi +, chng ta c
m(ng m8t nhiLu chiLu. V rDt may m2n l PHP h\ tr, rDt m?nh mR v d` dng trong viPc t?o
m(ng nhiLu chiLu.

ThNt vNy, +y l cch m m(ng nhiLu chiLu +,c t?o trong PHP :
PHP Code:
<?php

$bikes =array();
$bikes["Tourmeister"] =array("name" =>"Grande Tour Meister",
"engine_cc" =>1100,
"price" =>12999);
$bikes["Slasher1000"] =array("name" =>"Slasher XYZ 1000",
"engine_cc" =>998,
"price" =>11450);
$bikes["OffRoadster"] =array("name" =>"Off-Roadster",
"engine_cc" =>550,
"price" =>"4295");

?>
Cn +y l cch truy xuDt vo cc ph-n tQ c@a m(ng nhiLu chiLu:
PHP Code:
<?php

$names =array_keys($bikes);

foreach ($names as $name)
{
print $bikes[$name] . " costs: " . $bikes[$name]["price"]
. "<br/>\n";
Learning PHP & MySQL Updatesofts.com
44 By TXP Lover, Incomplete, iSheep, Seneken.
}

?>

IV. LTi k8t

M(ng l m8t khai bo rDt d` dng trong PHP. ViPc h$c vL m(ng thNt ra khng c g kh, chJ c-n
+$c qua cc v dS, b?n cTng hon ton c th5 rt ra cho mnh +,c ph"ng th;c m PHP t?o
m8t m(ng +"n gi(n.

Have fun.


Tm ki8m v thay th8 trong xu v&i Regular Expression

U bi tr0c, chng ta + xem xt qua m8t sC hm th!ng gHp khi xQ l xu trong PHP. B5 tm
kiGm trong xu, ta c th5 dng strpos() hoHc substr(), nhng v0i nh9ng hm ny ta chJ c th5
tm kiGm m8t cch hGt s;c h?n chG. Hy thQ tOng t,ng, nGu b?n muCn ki5m tra xem 1 xu
c ph(i l m8t +=a chJ IP, hay m8t +=a chJ email +ng +2n hay ko, sR ph(i sQ dSng rDt nhiLu cu
lPnh if.

Trong nh9ng tr!ng h,p nh thG ny, ta sR sQ dSng Regular Expression. Regular Expression,
viGt t2t l RegEx, c rDt nhiLu +=nh nghEa. By l m8t trong sC cc +=nh nghEa +"n gi(n nhDt:

Regular Expression l m*t cch thHc th$ hi;n dI li;u d7-i dng cc k tK #i di;n. N #79c
dng trong cc thu@t ton tm ki8m, thay th8 xu.

By l v dS vL m8t RegEx dng +5 ki5m tra xem m8t xu c ph(i l +=a chJ IP +ng +2n hay ko:
Code:
([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})

Nhn th c vI rDt ph;c t?p ch; thYc ra RegEx trn rDt +"n gi(n v d` hi5u m8t khi b?n + n2m
+,c cch sQ dSng.

Ta sR quay trO l?i v dS trn sau khi + h$c +,c m8t sC +iLu c-n thiGt. Gi! hy dnh th!i gian
vo viPc tm hi5u c php, cch viGt 1 RegEx:

1.RegEx C phn biDt k tP hoa - th%Tng. (case sensitive)

V dS ta c m8t xu nh sau:
Code:
Hello, UDS

Khi + RegEx Hello sR ph h,p v0i ph-n +-u c@a xu ni trn, cn hello th ko.
Learning PHP & MySQL Updatesofts.com
45 By TXP Lover, Incomplete, iSheep, Seneken.

2. M/i k tP trong RegEx Eu Zng v&i mBt k tP trong xu c)n ki,m tra, k, cA k tP tr@ng
(dMu cch, dMu tab, dMu xuHng dng).

V dS v0i xu:
Code:
Hello, UDS

Th Hello, UDS sR ph h,p cn Hello, UDS ko.

3. MBt sH k tP c nghYa !c biDt. K tP ^ chQ sP b@t )u mBt xu, cn $ chQ sP k8t thc.

V dS: Xu
Code:
UDS is UDS

^UDS sR ph h,p v0i +o?n UDS +-u xu, trong khi UDS$ sR ph h,p v0i +o?n UDS cuCi xu.

4. CWng nh% trong PHP, k tP \ %Ic s5 d6ng , escape mBt sH k tP !c biDt. V d6 \$,
\^, \-

Xu:
Code:
$abc$

\$ ph h,p v0i k tY $ +-u xu.

5. K tP . ph hIp v&i m/i k tP

V dS:

RegEx ... ph h,p v0i 3 k tY +-u trong xu
Code:
UDS is a great community!!!

DE nhin, +5 1 k tY trong RegEx ph h,p v0i dDu . (thNt) th c-n ph(i escape dDu . Dy nh thG
ny \.

V dS:
Code:
Learning PHP & MySQL Updatesofts.com
46 By TXP Lover, Incomplete, iSheep, Seneken.
O.K.

\. sR ph h,p v0i dDu . th; nhDt sau k tY O.


6. MBt danh sch cc k tP c th, !t trong dMu ngo!c vung []. Khi bMt cZ k tP no
trong ngo!c vung %Ic tm thMy, k tP sS %Ic coi l ph hIp. TrCt tP cc k tP
trong ngo!c l ko quan tr/ng.

V dS:
Code:
How do you do?

[oyu] sR ph h,p v0i k tY o trong t' How

[dH]. sR ph h,p v0i k tY Ho trong t' How.

7. MBt dAi (range) cc k tP c th, %Ic th, hiDn b:ng c php [ - ]. C th, c nhiEu dAi
trong mBt c!p ngo!c [].

V dS:
Code:
ABCDEFGHIJ KLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

[C-K] sR ph h,p v0i k tY C.

[a-d] sR ph h,p v0i k tY a.

[C-Ka-d2-6] sR ph h,p v0i k tY C.

8. N8u mBt l&p cc k tP !t trong dMu [] %Ic m4 )u b:ng k tP ^, nh>ng k tP sS
%Ic coi l ko ph hIp.

V dS:
Code:
ABCDEFGHIJ KLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 0123456789

[^CDghi45] sR ko ph h,p v0i cc k tY C, D, g, h, i, 4, 5.

9. Cc xu khc nhau c th, %Ic !t trong dMu () v phn cch b:ng k tP |.

V dS:
Learning PHP & MySQL Updatesofts.com
47 By TXP Lover, Incomplete, iSheep, Seneken.
Code:
Monday Tuesday Friday

(on|ues|rida) sR ph h,p v0i +o?n on trong t' Monday, ues trong t' Tuesday,...

10. C th, chQ ra sH l)n k tP sS xuMt hiDn. K tP * ph hIp v&i "ko ho!c nhiEu h'n th8",
+ ph hIp v&i "mBt ho!c nhiEu h'n th8", ? ph hIp v&i "ko ho!c mBt".

V dS:
Code:
aabc abc bc

a*b hoHc a+b ph h,p v0i aab.

a?b ph h,p v0i ab.


11. DMu ngo!c mc {} %Ic s5 d6ng , chnh xc ha sH l%Ing k tP ta mong muHn.
Trong :

{m} cho bi8t k tP xuMt hiDn FNG m l)n
{m,n} cho bi8t k tP xuMt hiDn T NH[T m l)n v NHI^U NH[T n l)n.
{m,} cho bi8t k tP xuMt hiDn T NH[T m l)n.
{,n} cho bi8t k tP xuMt hiDn NHI^U NH[T n l)n.

V dS:
Code:
One ring to bring them all and in the darkness bind them

.{5} sR ph h,p v0i +o?n k tY One r.

[els]{1,3} sR ph h,p v0i k tY e.

[a-z]{3,} sR ph h,p v0i +o?n ring.

C)n ch : "*", "+", v "?" l tr%Tng hIp !c biDt cNa luCt thZ 11. "*" t%'ng Zng v&i {0,},
"+" t%'ng Zng v&i {1,} cn "?" t%'ng Zng v&i {0,1}.

VNy, trn +y t0 + gi0i thiPu m8t sC luNt quan tr$ng v c-n nh0 khi sQ dSng Regular
Expression +5 tm kiGm v thay thG trong xu. Bi tiGp theo sR ni t0i m8t sC v dS v5 Regular
Expression v viPc p dSng vo PHP.

Cc b?n c th5 tham kh(o thm vL Regular Expression O Zvon:

RegEx Tutorial: http://www.zvon.org/other/PerlTutori...put/index.html
Learning PHP & MySQL Updatesofts.com
48 By TXP Lover, Incomplete, iSheep, Seneken.

RegEx Reference: http://www.zvon.org/other/reReference/Output/index.html

Chnh bi viGt ny cTng + +,c d=ch t' RegEx Tutorial.



T%'ng tc v&i server b:ng form

ViPc t"ng tc v0i server b]ng form c lR l m8t trong nh9ng cng viPc m cc b?n rDt hay gHp
khi lNp trnh web. Hy nghE +"n gi(n, d0i gc +8 m8t user trong UDS, b?n + ph(i t"ng tc
v0i bao nhiu l form: form register, form login, form post bi nhanh - post bi advance, form +5
report cho mod... NhiLu qu ha... chng mHt

Cc form + +Lu c +i5m chung: BLu +,c viGt b]ng HTML. Hy cng nh2c l?i +i cht vL
cch t?o form v0i HTML:

Tr0c hGt, b?n hy dnh 30 giy trong qub th!i gian "t _i" c@a mnh +5 ngdm l?i: HTML c cDu
trc nh thG no?

Ni m8t cch ng2n g$n, m8t file HTML c cDu t?o nh sau:
HTML Code:
<html>
<head>
<title><!-- Tiu ! --></title>
</head>
<body>
<!-- N%i dung -->
</body>
</html>

Form trong HTML +,c +Ht trong ph-n <body></body>. V dS nh sau:
HTML Code:
<form action="process.php" method="GET">
Tn: <input type="text" name="name" /><br />
TuNi: <input type="text" name="age" /><br />
<input type="submit" value="Submit!" />
</form>


Bo?n code HTML trn c tc dSng g? RDt +"n gi(n, n gip t?o ra 1 form v0i 2 +5 nhNp d9
liPu: Tn v tuai. Km theo + l 1 nt lPnh mang ch9 Submit. RDt gi(n d= v ko c g kh hi5u
Learning PHP & MySQL Updatesofts.com
49 By TXP Lover, Incomplete, iSheep, Seneken.
O +y c(.

, c 1 +iLu ny c-n gi(i thch: U dng +-u tin c@a +o?n code, thI form c 2 thu8c tnh: action
v method. Hai thu8c tnh ny c mSc +ch g?

1. action="process.php" nghEa l sau khi bDm submit, d9 liPu sR +,c chuy5n qua file
process.php n]m cng th mSc v0i file HTML ny
2. method="GET" nghEa l ph"ng th;c truyLn d9 liPu sR l GET.

VNy, b?n + biGt d9 liPu sR +,c chuy5n qua file process.php, m hi5n nhin file process.php
ny cha t^n t?i, nn m8t +iLu rDt tY nhin l ta sR t?o file process.php v0i n8i dung sau:
PHP Code:
<?php
$name =$_GET["name"];
$age =$_GET["age"];
echo "Tn b-n: $name";
echo "TuNi cGa b-n: $age";
?>

Hai dng cuCi c@a v dS trn c lR cheng c j` +5 bn. ChJ +"n gi(n l echo 2 biGn $name v
$age ra mn hnh. VDn +L n]m trong 2 dng +-u.

Ta lDy dng th; 1 +5 ma xI: $name = $_GET["name"]; U +y ai cTng biGt gi tr= c@a $name
+,c gn t' $_GET["name"]. VNy l chJ cn duy nhDt 1 +iLu c-n th2c m2c: $_GET l g?

$_GET l m(ng +5 ch;a cc gi tr= +,c chuy5n t' form sang. U +y $_GET g^m 2 ph-n tQ:
$_GET["name"] v $_GET["age"].

M$i vDn +L +Gn +y +,c gi(i quyGt.

Gi! ta thQ xt form O V dS ban +-u. B?n hy lm m8t php thay +ai nh_: Bai method="GET"
b]ng method="POST".

Khi + hi5n nhin process.php sR ko ho?t +8ng

NGu suy di`n m8t cch educated, b?n sR ngay lNp t;c sQa sai b]ng cch thay +ai $_GET b]ng
$_POST. KGt qu(? Bng goi

BGn +y ta c th5 sung s0ng rt ra kGt luNn: B5 nhNn biGn t' form chuy5n sang, c th5 sQ
dSng m(ng $_GET hoHc $_POST, ty vo ph"ng th;c truyLn d9 liPu c@a form.

Bi h$c kGt thc O +y +,c r^i nhJ?

Cha +u b?n ?. Cn m8t +iLu cha ni +Gn: SY khc nhau gi9a $_GET v $_POST l j`? Hay
+ng h"n, sY khc nhau gi9 method GET v POST l g?

Ni +Gn GET v POST, tr0c hGt ta sR ni +Gn HTTP Request.
Learning PHP & MySQL Updatesofts.com
50 By TXP Lover, Incomplete, iSheep, Seneken.

M8t HTTP Request +,c gQi t0i server c +=nh d?ng nh sau:
Code:
<request-line>
<headers>
<blank line>
[<request-body>]

M8t HTTP Request +,c gQi t0i trang web www.abc.com t' trnh duyPt Firefox sR t"ng tY
nh v dS sau:
Code:
GET / HTTP/1.1
Host: www.abc.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive

T"ng tY, m8t Request gQi +Gn trang www.abc.com/def sR c d?ng nh sau:
Code:
GET /def/ HTTP/1.1
Host: www.abc.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive

Nh cc b?n c th5 thDy, 2 v dS trn +Lu dng ph"ng th;c GET +5 request d9 liPu.

Gi! hy tOng t,ng, sau khi +iLn vo form 1 gi tr= name l admin, age l 20, b?n bDm nt
submit +5 gQi d9 liPu +Gn file process.php.

Trn thanh address sR hiPn ra url: process.php?name=admin&age=20

NGu xem xt m8t cch kb lcng HTTP Request, ta sR thDy n nh sau:
Code:
GET /process.php?name=admin&age=20 HTTP/1.1
Host: www.abc.com
Learning PHP & MySQL Updatesofts.com
51 By TXP Lover, Incomplete, iSheep, Seneken.
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive

Tm l?i, khi dng ph"ng th;c GET, trnh duyPt sR gQi Request t0i server v0i cc tham sC +Ht
trong dng +-u tin (request-line).

Cn v0i ph"ng th;c POST th sao? Thay n]m trong request-line, nh9ng tham sC ny +,c
+Ht trong ph-n request-body.

V dS ta gi9 nguyn form trn, chJ thay method="GET" b]ng method="POST" v bDm Submit.
Khi + +y sR l HTTP Request "behind the scene":
Code:
POST / HTTP/1.1
Host: www.abc.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive

name=admin&age=20

C th5 d` dng thDy r]ng, ngoi viPc thm m8t sC dng vo ph-n header:
Code:
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive

th ph"ng th;c POST + "cDt" cc tham sC c@a mnh trong ph-n request-body. BiLu ny hi5n
nhin khc hen ph"ng th;c GET.

Bi h$c hm nay chnh th;c +,c kGt thc O +y <:-P

(v t0 cTng +i xem phim smallville tiGp +y )


Xu - Cc php ton th%Tng g!p

Learning PHP & MySQL Updatesofts.com
52 By TXP Lover, Incomplete, iSheep, Seneken.
T0 xin nh2c l?i m8t cch ng2n g$n: Xu l m8t tNp h,p cc k tY. V dS "abc",
"sadfsks12dsfsdfjkee123" c th5 coi l m8t xu. Trong PHP, xu +,c th5 hiPn b]ng m k tY 8
bit (8-bit character code) v +,c coi l n]m trong b(ng m ISO-8859-1.

Gi! ta hy xem xem xt m8t sC php ton th!ng gHp trn xu:

1. strlen - lMy B di 1 xu

C lR cc b?n cTng d` dng +on +,c, strlen l string length - +8 di xu. Cch sQ dSng hm
strlen() rDt +"n gi(n:
PHP Code:
<?php
echo strlen("Updatesofts");
?>
KGt qu( in ra sR l 11 - sC k tY trong xu "Updatesofts".

2. trim - c@t b1 ph)n thXa trong xu

Hm trim() nhNn tham sC l 1 xu v n sR lo?i b_ m$i kho(ng tr2ng (whitespace) b2t +-u v
kGt thc xu. C-n ch O +y, kho(ng tr]ng ko chJ bao g^m dDu cch (" ", mang m ASCII 32)
m n cn g^m:
- Tab ("\t", m ASCII 9)
- DDu xuCng dng ("\r" v "\n", m t"ng ;ng 10 v 13)
- K tY NULL ("\0", m 0)
- Tab d$c (vertical tab - m 11). DDu ny gi! l "c@a hiGm". Du

V dS:
PHP Code:
<?php
$str =" \t\t\t\t \nXu ny lEm th' linh tinh th. nh \r\n \t \t ";
echo trim($str);
?>
KGt qu( output ra hon ton c th5 +on +,c: "Xu ny l2m th; linh tinh thG nhO"

3. ltrim v rtrim

Sau khi biGt vL hm trim(), ch2c hen b?n sR +Ht cu h_i: ThG nhc t0 chJ muCn c2t b_ mDy ph-n
linh tinh O +-u/cuCi xu thi th sao?
Tr( l!i: Hon ton c th5. Hy dng ltrim() v rtrim() - b?n sR thik ngay m

ltrim dng +5 b_ cc ph-n linh tinh b2t +-u xu.
rtrim dng +5 b_ cc ph-n linh tinh kGt thc xu.

4. strpos - tm ki8m trong xu

Hm strpos() nhNn 3 tham sC:
Learning PHP & MySQL Updatesofts.com
53 By TXP Lover, Incomplete, iSheep, Seneken.
1. 1 xu
2. xu c-n tm trong xu trn
3. b2t +-u tm t' k tY th; mDy trong xu, mHc +=nh l 0

V dS strpos("Updatesofts", "Update") sR tr( vL kGt qu( l 0. strpos("ABCABC", "A", 2) sR tr( vL
kGt qu( l 3.

VNy nGu ko t^n t?i xu c-n tm th sao? B"n gi(n l2m b?n ?, kGt qu( tr( vL sR l FALSE.

M8t +iLu c-n ch n9a: NGu v= tr b2t +-u tm l sC m (v dS -1), PHP sR tm kiGm t' cuCi xu
trO l?i (ng,c v0i cch tm mHc +=nh)

Gi! hy xt 1 v dS:
PHP Code:
<?
$res =strpos($haystack, $needle);
if ($res ==FALSE) {
echo "Ko th)y!";
}else {
echo "Th)y i!";
}
?>
B?n c $haystack l "Updatesofts", $needle l "Up", h_i PHP sR echo ra ci g? B?n +on l
"ThDy i" +ng ko?

TiGc l sai r^i b?n ? KGt qu( l "Ko thDy", v $needle +,c tm thDy O BrU $haystack, nghEa l
v= tr th; 0, m 0 l?i +^ng nghEa v0i FALSE

Kh l confusing ph(i ko h( b?n?

B5 xQ l tr!ng h,p ny, ta sR dng ton tQ so snh === thay v == (b]ng b]ng b]ng thay v
b]ng b]ng ). PHP sR ki5m tra c( gi tr= v ki5u c@a biGn, do + 0 v FALSE sR l 2 khi niPm
hon ton khc nhau v vDn +L + +,c gi(i quyGt g$n ghR.

5. substr - tch (extract) 1 ph)n trong xu

C php c@a hm substr() nh sau:

substr(xu, v= tr b2t +-u, [sC k tY - nGu c-n])

V dS: substr($str, 1) tr( vL xu b2t +-u t' k tY th; 1. substr($str, 3, 2) tr( vL 2 k tY c@a xu
b2t +-u t' k tY th; 3.

CTng nh strpos, tham sC th; 2 c th5 l m. Khi + PHP sR xQ l ng,c t' cuCi.

Trn +y l 5 hm th!ng gHp khi xQ l xu trong PHP. Hi5n nhin viPc liPt k tDt c( cc hm l
impossible, v vNy nGu b?n c-n thm vL cc hm xQ l xu trong PHP, hy tm +Gn PHP.net:

Learning PHP & MySQL Updatesofts.com
54 By TXP Lover, Incomplete, iSheep, Seneken.
http://www.php.net/manual/en/ref.strings.php

Coming Up Next: SQ dSng Regular Expression +5 tm kiGm v thay thG trong xu.

TsO FORM Bt UPLOAD FILE

Form +5 upload file c-n tho mn cc +iLu kiPn sau:

* method l POST
* enctype l multipart/form-data

M HTML c@a form sR t'a tYa nh sau:

<form method="POST" enctype="multipart/form-data" action="process_upload.php">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
<input type="file" name="file_upload" size="20">
<input type="submit" value="Upload">
</form>

Bo?n code trn sR t?o 1 form v0i 1 nt Browse... +5 ban ch$n file c-n upload, v 1 nt Upload
+5 b?n submit form. Form sR +,c submit t0i file process_upload.php n]m cng th mSc v0i
file ch;a form.

M8t sC browser support MAX_FILE_SIZE sR ki5m tra dung l,ng file tr0c khi form +,c
submit, tuy nhin khng ph(i browser no cTng vNy. Cho nn b?n +'ng nn tin tOng tuyPt +Ci
vo server! U v dS trn, nGu browser h\ tr,, nhng file c dung l,ng l0n h"n 30000 byte sR
+,c browser thng bo l\i khi submit form.

Xv L Dn LIlU BowC SUBMIT LN SERVER

By gi! ta hy xem xt t0i ph-n xQ l d9 liPu +,c submit ln server trong file
process_upload.php. PHP lu thng tin vL file +,c upload ln server trong biGn global
$_FILES. V0i form O v dS trn, PHP sR truyLn cho script process_upload.php cc thng tin
sau:

* $_FILES['file_upload']['name']: tn file gCc trn my client. TuW vo browser, tn file c th5
+,c truyLn ln server O d?ng C:\folder\filename.ext hoHc chJ l filename.ext. Ch"ng trnh
ph(i tY ki5m tra v trch ra tn file nGu c-n thiGt.
* $_FILES['file_upload']['type']: ki5u c@a file, +,c lu O d?ng MINE (V dS: image/gif,
audio/wav).
* $_FILES['file_upload']['size']: dung l,ng c@a file tnh theo byte.
* $_FILES['file_upload']['tmp_name']: sau khi upload, server sR lu file vo m8t file t?m trn
server, biGn ny cho ta biGt +!ng ddn v tn c@a file t?m +. Ch"ng trnh sR +$c file t?m ny
+5 lDy n8i dung c@a file +,c upload.
* $_FILES['file_upload']['error']: m l\i, ch"ng trnh nn ki5m tra biGn ny +5 b(o +(m r]ng
qu trnh upload khng x(y ra l\i.
o UPLOAD_ERR_OK ( = 0 ): khng c l\i, qu trnh upload thnh cng.
o UPLOAD_ERR_INI_SIZE ( = 1 ): dung l,ng file upload v,t qu gi0i h?n +,c chJ +=nh
trong file php.ini.
o UPLOAD_ERR_FORM_SIZE ( = 2 ): dung l,ng file upload v,t qu gi0i h?n +,c chJnh
+=nh bOi MAX_FILE_SIZE.
o UPLOAD_ERR_PARTIAL ( = 3 ): file chJ +,c upload 1 ph-n (c th5 l do l\i +!ng truyLn
trong qu trnh upload).
o UPLOAD_ERR_NO_FILE ( = 4 ): khng c file no +,c upload (c th5 l file O client khng
Learning PHP & MySQL Updatesofts.com
55 By TXP Lover, Incomplete, iSheep, Seneken.
t^n t?i).

Khi + c ton b8 cc thng tin c-n thiGt, xQ l file nh thG no l quyGn +=nh c@a b?n. B?n c
th5 +$c n8i dung c@a file v lu vo database, hoHc di chuy5n file v lu vo th mSc upload
c@a b?n. Sau +y l 1 v dS c@a file process_upload.php.

B-u tin, ki5m tra xem tc vS c ph(i l upload hay khng:

if ( $_SERVER["REQUEST_METHOD"] != "POST" ) {
//thng bo l\i khng ph(i l method POST
//v thot
exit(-1);
} //end if


TiGp theo ki5m tra xem qu trnh upload c l\i g khng:

if ( !isset($_FILES["file_upload"]["error"] ||
$_FILES["file_upload"]["error"] != 0 ) {
//thng bo l\i dYa vo gi tr= c@a $_FILES["file_upload"]["error"]
//v thot
exit(-1);
} //end if

//ta cTng c th5 ki5m tra xem dung l,ng file c v,t qu gi0i h?n
//c@a ch"ng trnh hay khng
if ( $_FILES["file_upload"]["size"] > $MAX_FILE_SIZE ) {
//thng bo l\i
//v thot
exit(-1);
}

Tch tn file t' client:

$temp = preg_split('/[\/\\\\]+/', $_FILES["file_upload"]["name"]);
$filename = $temp[count($temp)-1];

//ta cTng c th5 ki5m tra ph-n mO r8ng c@a file nGu c-n thiGt
if ( !preg_match('/\.(gif|jpg)$/i', $filename ) {
//thng bo l\i file upload khng ph(i l d?ng GIF hoHc JPG
//v thot
exit(-1);
} //end if


V cuCi cng, lu file +,c upload vo n"i c-n thiGt:

$upload_dir = "/home/nbthanh/public_html/uploads/";
$upload_file = $uploaddir . $filename;
if ( move_uploaded_file($_FILES["file_upload"]["tmp_name"], $upload_file) ) {
//file + +,c upload v copy sang th mSc lu tr9 thnh cng
} else {
//c l\i x(y ra
} //end if
Learning PHP & MySQL Updatesofts.com
56 By TXP Lover, Incomplete, iSheep, Seneken.


CC HM PHP BowC DNG TRONG V Dx

* exit: d'ng/thot ch"ng trnh ngay lNp t;c.
* isset: ki5m tra xem biGn c t^n t?i hay khng. Trong v dS c@a bi viGt, ta dng hm isset +5
ki5m tra xem biGn $_FILES["file_upload"]["error"] c t^n t?i hay khng.
* preg_split: tch m8t chu\i thnh t'ng ph-n nh_ theo regular expression. Trong v dS c@a bi
viGt, ta dng hm ny +5 tch tn file cng +!ng ddn ra thnh t'ng ph-n nh_ (phn cch nhau
b]ng k tY \ hoHc /, ta khng biGt ch2c +,c client l Windows hay Linux nn ta tch theo
tr!ng h,p tang qut). Sau khi tch, ph-n tQ cuCi cng sR l tn file.
M8t cch khc +5 lDy tn file l dng hm basename. Tuy nhin sQ dSng hm ny sR c m8t sC
vDn +L n(y sinh, b?n tham kh(o thm O +y:
http://www.php.net/manual/en/function.basename.php.
* count: +Gm sC l,ng ph-n tQ trong m(ng. $a[count($a)-1] sR truy cNp t0i ph-n tQ cuCi cng
c@a m(ng $a.
* preg_match: sQ dSng regular expression +5 tm xem chu\i con c xuDt hiPn trong chu\i mj
hay khng. Trong v dS c@a bi viGt, ta dng hm ny +5 ki5m tra xem tn c@a c@a c +,c kGt
thc b]ng .gif hoHc .jpg hay khng.
* move_uploaded_file: di chuy5n file +,c upload t' client +Gn 1 th mSc khc trn server.

TI LIlU THAM KHzO

* PHP Manual: http://www.php.net/manual/en/index.php
o Regular Expression Functions (Perl-Compatible): http://www.php.net/manual/en/ref.pcre.php
o Handling file uploads: http://www.php.net/manual/en/features.file-upload.php
* T' Google: t' kho php tutorial upload file

Source from DDTH

You might also like