You are on page 1of 56

Learning PHP & MySQL

Updatesofts.com

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: T 3i sao ko dng WAMP? Tr( l!i: V ci ny t0 ch a 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 v Ny 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 s R 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 " s O 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

By TXP Lover, Incomplete, iSheep, Seneken.

Learning PHP & MySQL

Updatesofts.com

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 s Zn sng. Apache + , c khO i +8ng theo bi post O trn. 2. M8t script editor. Ci ny c rDt nhiLu, nh PHP Designer, Dev-PHP, ... ThNm ch dng notepad c Tng + ,c. Nh ng tCt nhDt nn dng m8t editor c h\ tr, unicode. Nh t0 dng SCiTE. B n 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 s Zn 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 v S 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 s R 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

By TXP Lover, Incomplete, iSheep, Seneken.

Learning PHP & MySQL

Updatesofts.com

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 s R + ,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.

By TXP Lover, Incomplete, iSheep, Seneken.

Learning PHP & MySQL

Updatesofts.com

PHP Code:

<?php echo "Hello World!"; ?>

Bi 2 - M6c 1: L%u tr> d> liDu trong PHP. Vi iEu c)n ni vE bi8n.
Tr 0c khi b2t +-u bi 2, t0 xin trnh by v L 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, nh ng 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 l u tr9 d9 liPu. CS th5, d9 liPu c th5 + , c l u 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) tr 0c khi sQ dSng. B5 sQ dSng biGn, b?n chJ c -n gn (assign) cho n m8t gi tr= (value). BiGn s R tY +8ng + ,c t?o. CYc kW +"n gi(n v nhanh chng!
By TXP Lover, Incomplete, iSheep, Seneken. 4

Learning PHP & MySQL

Updatesofts.com

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 d 0i (_ g$i l underscore) hoHc ch9 ci. TiGp sau + l cc ch9 ci, sC hoHc l?i l dDu g?ch d 0 i. M8t s C k tY mO r8ng (extended character) c th5 + , c sQ dSng, nh ng 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 ch a gn gi tr= cho biGn $usd. , cn m8t vDn +L ch a 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 s R 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]

By TXP Lover, Incomplete, iSheep, Seneken.

Learning PHP & MySQL

Updatesofts.com

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 s C 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, v0 i 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 s C hP 8 (b2t +-u v 0i ch9 sC 0). V0 i $e v $f dng ki5u hP 16 (b2t +-u v0 i ch9 sC 0 v ch9 ci x). NGu + t'ng h$c qua Pascal, ch2c ch2n b?n s R 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 + c 8ng v 0i 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= c Yc l0 n trong PHP l 2147483647, khi c8ng 1 vdn sR tr( gi tr= +ng l 2147483648, nh ng 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;

By TXP Lover, Incomplete, iSheep, Seneken.

Learning PHP & MySQL

Updatesofts.com

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. B y l m8t gi tr= cYc to, nh ng 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 c 8ng thm v0 i 1. Cn nGu (cheng may) b?n ch a 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 s C 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 c Tng 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 c Tng + ,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
By TXP Lover, Incomplete, iSheep, Seneken. 7

Learning PHP & MySQL

Updatesofts.com

xu l I'm a student . Cu tr( l! i l b?n ph(i thm m8t dDu s ,c (hay su8c g ) tr 0c 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 tr 0c 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 tr 0c khi chuy5n qua ph-n kG tiGp: NGu trong xu ta ko thm dng dDu \, c Tng 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 v 0i s Q 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 s R 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; By TXP Lover, Incomplete, iSheep, Seneken. 8

Learning PHP & MySQL

Updatesofts.com

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 v 0i 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 s R nhNn thDy 1 xu + ,c b2t +-u v0 i dDu nhy +"n th; nhDt v kGt thc v0 i dDu nhy +"n th; 2. T "ng tY v 0i cch 2, nh ng l dDu ngoHc kp. U cch 3 ny, PHP s R 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, nh ng 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 c Qa ra vo, +ng cQa s a +u!)
PHP Code:

<?php echo <<<HERE Xu &#273;(4c ghi Dng th&#7913; 2 Dng th&#7913; 3 Vn vn HERE; ?> dng th' nh)t

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

By TXP Lover, Incomplete, iSheep, Seneken.

Learning PHP & MySQL

Updatesofts.com

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 c Tng + ,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 c Mn 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 ) - Tr 0 c v sau HERE; c Tng 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
Quote:

Cn nGu ko theo, PHP sR bo l\i:

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 (ch a 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 c Tng kh +"n gi(n:


PHP Code:

<?php $s = <<<HERE Xu &#273;(4c ghi Dng th&#7913; 2 Dng th&#7913; 3 Vn vn HERE; echo nl2br($s); ?> dng th' nh)t

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.

By TXP Lover, Incomplete, iSheep, Seneken.

10

Learning PHP & MySQL

Updatesofts.com

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-tobr. New-line l dDu xuCng dng trong code, 2 l to , br l <br /> (thI xuCng dng trong HTML). VNy l v Dn +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!). t O ng 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 v0 i viPc ko c-n gi(i thch nhiLu vL v dS c@a n. Nh ng 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 s C 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 gi0 i 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)
By TXP Lover, Incomplete, iSheep, Seneken. 11

Learning PHP & MySQL

Updatesofts.com

M(ng + ,c s Q dSng khi b?n muCn l u tr9 m8t sC l ,ng l0 n cc biGn. M8t v dS hGt s;c +"n gi(n: M8t l0 p 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 s R muCn 1 biGn. Nh ng 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 s C 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 s R 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 c Np 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"); ?>

By TXP Lover, Incomplete, iSheep, Seneken.

12

Learning PHP & MySQL

Updatesofts.com

C th5 d` dng +on + ,c: NGu dng lPnh echo $d["def"] sR cho ra kGt qu( l "ghi". Tm hi5u su thm v L 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 h 0ng +Ci t ,ng (OO - Object Oriented). Ni m8t cch +"n gi(n nhDt (nh ng v dn nghe tai nGu b?n ch a nghe vL +Ci t ,ng bao gi!) th lNp trnh h 0 ng +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 t Ong 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 th 0c, mu s 2c 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 t Ong t , ng, b?n c m8t +Ci t ,ng mang tn QB (qu( bng bng, b?n dng lPnh:
PHP Code:

). B5 t?o ra m8t qu(

<?php $bong = new QB(); ?>

Qu( bng c kch th 0c (KT), mu s 2c (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 th 0c, +8 c Mng - 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(); ?>

By TXP Lover, Incomplete, iSheep, Seneken.

13

Learning PHP & MySQL

Updatesofts.com

T?m d'ng viPc "c c i 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 ch a 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 s Q 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 v 0i 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 c Tng ni +Gn lm web. VNy ko c l g HTML v PHP l?i ko +i + ,c cng v 0i nhau! Bi 3 sR +L c Np t0i m8t vDn +L rDt pha biGn khi lNp trnh PHP: KGt h,p m PHP v 0i HTML. Tr 0c hGt, chng ta hy dnh t pht tm hi5u cch th;c ho?t +8ng c@a World Wide Web (WWW). Hy t O ng t ,ng, b?n +ang muCn truy c Np 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 s R 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 + s R nhNn + ,c thng +iPp v b2t +-u tm kiGm file HTML + ,c yu c-u. 4. My ch@ gQi file HTML + v L my tnh v 'a yu c-u (chnh l my tnh c@a b?n). NGu ko tm
By TXP Lover, Incomplete, iSheep, Seneken. 14

Learning PHP & MySQL

Updatesofts.com

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 v L trang HTML, sR hi5n th= n ra mn hnh. U b 0c 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 b 0c: 1. Qut file trong chG +8 HTML, gQi tr( v L 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@ s R 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>"; ?>

By TXP Lover, Incomplete, iSheep, Seneken.

15

Learning PHP & MySQL

Updatesofts.com

</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 s R lm ntn? NGu cc b?n c biGt vL HTML, th s R 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

By TXP Lover, Incomplete, iSheep, Seneken.

16

Learning PHP & MySQL

Updatesofts.com

vNy? Lm thG no +5 gi(i quyGt v Dn +L ny? Tr( l!i: \n +ng l +5 xuCng dng, nh ng + l xuCng dng trong PHP output, n ko +(m b(o viPc xuCng dng khi ci PHP output + + ,c trnh duyPt xQ l d 0i d?ng m HTML. B5 trnh duyPt xQ l chnh xc nh9ng v Dn +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? Ch a 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)

By TXP Lover, Incomplete, iSheep, Seneken.

17

Learning PHP & MySQL

Updatesofts.com

Ph(n ;ng +-u tin? B?n s R 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 s R 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 g sDt!

, tuy (c th5) b?n cheng hi5u ci

Hy t?m hi lng v 0i nh9ng g mnh v'a lm + ,c v th gin m8t cht tr 0c khi ta b 0c vo Bi 4. BNt m tr 0c: 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 s R cng tm hi5u print_r l g, s Q dSng ra sao, v cn nh9ng hm no nh v Ny n9a.

Bi 4: Cc ton t5
B5 thYc hiPn viPc tnh ton cc gi tr= trong PHP, ta s Q dSng ton tQ (operator). 1. Gn (assignment) Ton tQ gn (dDu =) + ,c s Q 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:

By TXP Lover, Incomplete, iSheep, Seneken.

18

Learning PHP & MySQL

Updatesofts.com

<?php $a = $b = 1; // Ho+c: $b = $a = 1; ?>

KGt qu( v dn +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 v G 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 v G 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 v G ph(i

By TXP Lover, Incomplete, iSheep, Seneken.

19

Learning PHP & MySQL

Updatesofts.com

Ta s R viGt l $a == $b, $a !== $b, $a > $b... V dS:


PHP Code:

<?php "123" == 123 "123" === 123 ?> // #ng // Sai

"123" === "123" // #ng

Cn m8t lo?i ton tQ so snh n9a, + ,c viGt d 0i 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 v G +Lu l TRUE || Mang gi tr= TRUE nGu m8t trong 2 vG l TRUE ! Mang gi tr= TRUE nGu v G 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

By TXP Lover, Incomplete, iSheep, Seneken.

20

Learning PHP & MySQL

Updatesofts.com

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 s R 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 v0 i hnh trn:
PHP Code:

function tinh_dien_tich_hinh_tron($ban_kinh) { // code } function tinh_chu_vi_hinh_tron($ban_kinh) { // code }

By TXP Lover, Incomplete, iSheep, Seneken.

21

Learning PHP & MySQL

Updatesofts.com

// 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: - V0 i nh9ng +o?n n]m trong thI php, PHP s R thYc thi nh v0i file PHP thng th ! ng - V0 i 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 v dn 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 h Ong 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 s Q 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!

By TXP Lover, Incomplete, iSheep, Seneken.

22

Learning PHP & MySQL

Updatesofts.com

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 s R + ,c thYc thi chJ khi gHp ph(i cc +iPu kiPn no +. PHP cung c Dp 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 v 0i m8t sC l ,ng cc gi tr=, PHP c Tng cung c Dp 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( v L 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( v L 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:

By TXP Lover, Incomplete, iSheep, Seneken.

23

Learning PHP & MySQL

Updatesofts.com

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 c Tng 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 s Q 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 {

By TXP Lover, Incomplete, iSheep, Seneken.

24

Learning PHP & MySQL

Updatesofts.com

echo ("Positive"); }

Ta c Tng 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, nh ng 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."); } }

By TXP Lover, Incomplete, iSheep, Seneken.

25

Learning PHP & MySQL

Updatesofts.com

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 c Tng 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) {

By TXP Lover, Incomplete, iSheep, Seneken.

26

Learning PHP & MySQL

Updatesofts.com

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 v 0i 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 v 0i 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 h 0 ng, 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:

By TXP Lover, Incomplete, iSheep, Seneken.

27

Learning PHP & MySQL

Updatesofts.com

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 s R 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 s R 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 s R vdn + ,c thYc thi cho +Gn hGt. B5 thot kh_i vo th! i +i5m s0 m h"n,ta c th5 sQ dSng lPnh break. V dS:
PHP Code:

$i = 11; while (--$i) { By TXP Lover, Incomplete, iSheep, Seneken. 28

Learning PHP & MySQL

Updatesofts.com

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( v L 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( v L l\i, th cu lPnh break sR + , c thYc hiPn v vng lHp s R 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 c Tng 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 l 0 t qua s Y lHp l?i kG tiGp c@a vng lHp, m khng tMng biGn +Gm $num_bikes.Gi( s Q biGn $i vdn l0n h"n 0, vng lHp sR tiGp tSc nh bnh th !ng.

By TXP Lover, Incomplete, iSheep, Seneken.

29

Learning PHP & MySQL

Updatesofts.com

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 v0 i 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 " s O 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 v 0i 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 tr 0c s Y lHp l?i l-n +-u c@a vng lHp.Bi5u th;c th; hai l

By TXP Lover, Incomplete, iSheep, Seneken.

30

Learning PHP & MySQL

Updatesofts.com

bi5u th;c Boolean m + ,c thYc thi t?i +-u m\i l-n lHp. NGu gi tr= tr( v L l true th vng lHp s R 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 c 5p nhIng hm do ng7Ai dng tK #3nh nghLa. NOng thAi, PHP c0ng c m*t s P c>i ti8n #$ vi;c vi8t hm #79c dE ch3u v m nh 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, nh ng khng + ,c php b2t +-u b]ng s C). ThNt sY m?nh mR, nh ng b?n sR gHp vDn +L khi l u 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 c Hp 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 s C truyLn vo l khc nhau (Java cheng h?n), nh ng PHP th khng c viPc +.
By TXP Lover, Incomplete, iSheep, Seneken. 31

Learning PHP & MySQL

Updatesofts.com

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 c Hp dDu ( ) nGu hm khng nhNn tham sC no (cn nGu nhNn tham sC th tDt nhin cHp dDu + +5 ch;a tham s C 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 c Tng +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(); } ?>

By TXP Lover, Incomplete, iSheep, Seneken.

32

Learning PHP & MySQL

Updatesofts.com

- 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 c Du 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 s C tham s C 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( v L c@a hm l khng c (null). Nh ng khng hZng tDt c( m$i tr !ng h,p +Lu nh vNy:
PHP Code:

By TXP Lover, Incomplete, iSheep, Seneken.

33

Learning PHP & MySQL

Updatesofts.com

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

-> Hm trn c gi tr= tr( v L l m8t gi tr= boolean True hoHc False. LTi k8t: Hm l m8t cng c S 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 v 0i 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= s R + ,c tY +8ng chuy5n nGu n l m8t ton tQ, hm hay l c Du trc +iLu khi5n +i h_i m8t tham s C ki5u boolean.

By TXP Lover, Incomplete, iSheep, Seneken.

34

Learning PHP & MySQL

Updatesofts.com

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" s C thNp lSc phn hay c" sC bt phn, tuW ch$n +i tr 0c bOi dDu - hay +. NGu b?n s Q dSng v 0i c " s C bt phn, b?n ph(i theo th; tY v0 i 0 +;ng tr 0c, cn +Ci v0i s C 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 th 0c 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 s C 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 s C 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= s R + ,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 c c c @a ki5u float ty thu8c vo platform, gi tr= l0n nhDt l xDp xJ 1.8e308

By TXP Lover, Incomplete, iSheep, Seneken.

35

Learning PHP & MySQL

Updatesofts.com

4. String: l nh9ng chu\i cc k tY.Trong PHP,m8t k tY c Tng 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 d 0i 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 s R hi5n th= dng sau: steak. B?n c Tng 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.

By TXP Lover, Incomplete, iSheep, Seneken.

36

Learning PHP & MySQL

Updatesofts.com

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 s Q 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 c Tng 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( s Q 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["Jarvis"] ["sauvignon"] = "Prime Rib";

By TXP Lover, Incomplete, iSheep, Seneken.

37

Learning PHP & MySQL

Updatesofts.com

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 h 0ng +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, l0 p(class) ph(i + ,c +=nh nghEa tr 0c 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 v0 i 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 s Q dSng bOi cc hm +Hc biPt. Gi(i phng resources: bOi do tham chiGu +Gm c @a hP thCng + ,c gi0i thiPu trong PHP4 Zendengine, 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 ch a + , c khOi t?o gi tr= no. o N l hm unset( )
By TXP Lover, Incomplete, iSheep, Seneken. 38

Learning PHP & MySQL

Updatesofts.com

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 v 5n #( chnh sQ #79c #( c @p: - Lm th8 no #$ t o 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). Nh ng v dn c s Y 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 v 0i nhau l?i lm thnh m8t m(ng.

SK khc bi;t trong cch sR dSng m>ng c Ca 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, nh ng b?n hy xem nh9ng v dS d 0i +y +5 biGt r h"n vL cch t?o m(ng cTng nh cch l u 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 By TXP Lover, Incomplete, iSheep, Seneken. 39

Learning PHP & MySQL

Updatesofts.com

// 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

By TXP Lover, Incomplete, iSheep, Seneken.

40

Learning PHP & MySQL

Updatesofts.com

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, nh ng 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";

By TXP Lover, Incomplete, iSheep, Seneken.

41

Learning PHP & MySQL

Updatesofts.com

?>

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 s R duyPt qua t'ng ph-n tQ m8t trong m(ng, n s Q dSng m8t biGn cho tr 0 c +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++) {

By TXP Lover, Incomplete, iSheep, Seneken.

42

Learning PHP & MySQL

Updatesofts.com

echo "We serve '$drinks[$x]'<br/>\n"; } ?>

III. MAng nhiEu chiEu (Multi-Dimensional Arrays) RDt nhiLu tr !ng h,p b?n muCn l u 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 v Ny, +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";

By TXP Lover, Incomplete, iSheep, Seneken.

43

Learning PHP & MySQL

Updatesofts.com

} ?>

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 tr 0c, chng ta + xem xt qua m8t s C hm th !ng gHp khi xQ l xu trong PHP. B5 tm kiGm trong xu, ta c th5 dng strpos() hoHc substr(), nh ng v 0i nh9ng hm ny ta chJ c th5 tm kiGm m8t cch hGt s ;c h?n chG. Hy thQ t Ong 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, s R ph(i sQ dSng rDt nhiLu cu lPnh if. Trong nh9ng tr !ng h,p nh thG ny, ta s R 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 d ng cc k tK # i di;n. N #79c dng trong cc thu@t ton tm ki8m, thay th8 xu. By l v dS v L 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 s R quay trO l?i v dS trn sau khi + h$c + ,c m8t s C +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 v0 i ph-n +-u c @a xu ni trn, cn hello th ko.


By TXP Lover, Incomplete, iSheep, Seneken. 44

Learning PHP & MySQL

Updatesofts.com

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 s R 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 s R ph h,p v0i +o?n UDS +-u xu, trong khi UDS$ sR ph h,p v0 i +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:

By TXP Lover, Incomplete, iSheep, Seneken.

45

Learning PHP & MySQL

Updatesofts.com

O.K.

\. sR ph h,p v 0i 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 v0 i k tY o trong t' How [dH]. sR ph h,p v 0i 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:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

[C-K] sR ph h,p v0 i k tY C. [a-d] sR ph h,p v 0i k tY a. [C-Ka-d2-6] sR ph h,p v 0i 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:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 0123456789

[^CDghi45] s R 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:
By TXP Lover, Incomplete, iSheep, Seneken. 46

Learning PHP & MySQL

Updatesofts.com

Code:

Monday Tuesday Friday

(on|ues|rida) s R 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 v 0i 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 F NG 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 v0 i +o?n k tY One r. [els]{1,3} s R ph h,p v0i k tY e. [a-z]{3,} s R ph h, p v 0i +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 s C luNt quan tr$ng v c -n nh0 khi s Q dSng Regular Expression +5 tm kiGm v thay thG trong xu. Bi tiGp theo s R ni t0i m8t s C 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

By TXP Lover, Incomplete, iSheep, Seneken.

47

Learning PHP & MySQL

Updatesofts.com

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, d 0i gc +8 m8t user trong UDS, b?n + ph(i t "ng tc v0 i 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 v L cch t?o form v0 i HTML: Tr 0c 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
By TXP Lover, Incomplete, iSheep, Seneken. 48

Learning PHP & MySQL

Updatesofts.com

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 s R + ,c chuy5n qua file process.php n]m cng th mSc v0 i 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 ch a t^n t?i, nn m8t +iLu rDt tY nhin l ta s R 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 s Qa sai b]ng cch thay +ai $_GET b]ng $_POST. KGt qu(? Bng goi BGn +y ta c th5 sung s 0 ng 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? Ch a +u b?n ?. Cn m8t +iLu ch a 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, tr 0c hGt ta sR ni +Gn HTTP Request.

By TXP Lover, Incomplete, iSheep, Seneken.

49

Learning PHP & MySQL

Updatesofts.com

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 t Ong 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 l cng HTTP Request, ta sR thDy n nh sau:
Code:

GET /process.php?name=admin&age=20 HTTP/1.1 Host: www.abc.com

By TXP Lover, Incomplete, iSheep, Seneken.

50

Learning PHP & MySQL

Updatesofts.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

Tm l?i, khi dng ph "ng th;c GET, trnh duyPt s R gQi Request t0i server v0i cc tham s C +Ht trong dng +-u tin (request-line). Cn v 0i 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 c Tng +i xem phim smallville tiGp +y )

Xu - Cc php ton th%Tng g!p

By TXP Lover, Incomplete, iSheep, Seneken.

51

Learning PHP & MySQL

Updatesofts.com

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 s Q dSng hm strlen() rDt +" n gi(n:
PHP Code:

<?php echo strlen("Updatesofts"); ?>

KGt qu( in ra sR l 11 - s C 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 v L hm trim(), ch2c hen b?n s R +Ht cu h_i: ThG nhc t0 chJ muCn c 2t 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 s C:
By TXP Lover, Incomplete, iSheep, Seneken. 52

Learning PHP & MySQL

Updatesofts.com

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") s R tr( vL kGt qu( l 0. strpos("ABCABC", "A", 2) sR tr( v L 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( v L 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 v0 i 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 s R 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 v 0i FALSE Kh l confusing ph(i ko h( b?n? B5 xQ l tr ! ng h,p ny, ta s R 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 s R 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:

By TXP Lover, Incomplete, iSheep, Seneken.

53

Learning PHP & MySQL

Updatesofts.com

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 v 0i 1 nt Browse... +5 ban ch$n file c-n upload, v 1 nt Upload +5 b?n submit form. Form s R + ,c submit t0i file process_upload.php n]m cng th mSc v 0i file ch;a form. M8t sC browser support MAX_FILE_SIZE sR ki5m tra dung l , ng file tr 0 c khi form + ,c submit, tuy nhin khng ph(i browser no cTng vNy. Cho nn b?n +'ng nn tin t Ong tuyPt +Ci vo server! U v dS trn, nGu browser h\ tr, , nh ng file c dung l ,ng l0 n h"n 30000 byte s R + ,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 l u 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 l u 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 l u 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 s R +$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 gi0 i 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

By TXP Lover, Incomplete, iSheep, Seneken.

54

Learning PHP & MySQL

Updatesofts.com

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 l u vo database, hoHc di chuy5n file v l u 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 v S 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, l u 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 l u tr9 thnh cng } else { //c l\i x(y ra } //end if

By TXP Lover, Incomplete, iSheep, Seneken.

55

Learning PHP & MySQL

Updatesofts.com

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 s R l tn file. M8t cch khc +5 lDy tn file l dng hm basename. Tuy nhin sQ dSng hm ny sR c m8t s C 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

By TXP Lover, Incomplete, iSheep, Seneken.

56

You might also like