You are on page 1of 85

Bi 2: Kin thc tng quan v lp trnh PHP bi trc chng ta tm hiu v cch thc cu hnh v ci t PHP.

P. Tip theo chng ta s nghin cu v cu trc c bn trong PHP. V tng quan PHP c c php kh tng ng vi 1 s ngn ng nh C, java. Tuy nhin, t bn thn chng cng c nhng im rt ring bit. 1- Cu trc c bn: PHP cng c th bt u v kt thc ging vi ngn ng HTML. Ch khc, i vi PHP chng ta c nhiu cch th hin. Cch 1 : C php chnh: <?php M lnh PHP ?> Cch 2: C php ngn gn <? M lnh PHP ?> Cch 3: C php ging vi ASP. <% M lnh PHP %> Cch 4: C php bt u bng script <script language=php> ..... </script> Mc d c 4 cch th hin. Nhng i vi 1 lp trnh vin c kinh nghim th vic s dng cch 1 vn l la chon ti u. Trong PHP kt thc 1 dng lnh chng ta s dng du ";" ch thch 1 on d liu no trong PHP ta s dng du "//" cho tng dng. Hoc dng cp th "/*..*/" cho tng cm m lnh.

2- Xut gi tr ra trnh duyt: Trang 1

xut d liu ra trnh duyt chng ta c nhng dng c php sau : + Echo "Thng tin"; + Printf "Thng tin"; Thng tin bao gm : bin, chui, hoc lnh HTML .

Nu gia hai chui mun lin kt vi nhau ta s dng du "."

3- Khi nim bin, hng, chui v cc kiu d liu. a) Bin trong PHP. Bin c xem l vng nh d liu tm thi. V gi tr c th thay i c. Bin c bt u bng k hiu "$". V theo sau chng l 1 t, 1 cm t nhng phi vit lin hoc c gch di. 1 bin c xem l hp l khi n tha cc yu t : + Tn ca bin phi bt u bng du gch di v theo sau l cc k t, s hay du gch di. + Tn ca bin khng c php trng vi cc t kha ca PHP. Trong PHP s dng 1 bin chng ta thng phi khai bo trc, tuy nhin i vi cc lp trnh vin khi s dng h thng x l cng mt lc cc cng vic, ngha l va khi bo va gn d liu cho bin. Bn thn bin cng c th gn cho cc kiu d liu khc. V ty theo nh ca ngi lp trnh mong mun trn chng. Trang 2

Mt s v d v bin :

b) Khi nim v hng trong PHP. Nu bin l ci c th thay i c th ngc li hng l ci chng ta khng th thay i c. Hng trong PHP c nh ngha bi hm define theo c php: define (string tn_hng, gi_tr_hng ). Cng ging vi bin hng c xem l hp l th chng phi p ng 1 s yu t : + Hng khng c du "$" trc tn. + Hng c th truy cp bt c v tr no trong m lnh + Hng ch c php gn gi tr duy nht 1 ln. + Hng thng vit bng ch in phn bit vi bin V d :

c) Khi nim v chui: Chui l mt nhm cc k t, s, khong trng, du ngt c t trong cc du nhy. V d: Huy "welcome to VietNam" to 1 bin chui, chng ta phi gn gi tr chui cho 1 bin hp l. Trang 3

V d: $fisrt_name= "Nguyen"; $last_name= Van A; lin kt 1 chui v 1 bin chng ta thng s dng du "." V d:

d) Kiu d liu trong PHP Cc kiu d liu khc nhau chim cc lng b nh khc nhau v c th c x l theo cch khc nhau khi chng c theo tc trong 1 script. Trong PHP chng ta c 6 kiu d liu chnh nh sau :

Chng ta c th s dng hm dng sn gettype() ca PHP4 kim tra kiu ca bt k bin. V d:

Trang 4

Sau bi ny cc bn c nhng khi nim u tin v PHP, cc c php, cc kiu d liu, v cch lm vic vi mi trng PHP nh th no. bi sau, chng ta s tip tc tip cn vi cc thut ton v c php PHP mt cch r rng v quen thuc trong cc ngn ng lp trnh. Bi 3: Ton t v biu thc trong PHP i vi mi ngn ng lp trnh, ton t v biu thc lun l nhng kin thc c bn c s dng x l cc thao tc trong giai on lp trnh. V PHP cng khng ngoi l, chng vn c nhng kin trc c bn nh mt ngn ng lp trnh thng thng. A- Ton t trong PHP: 1- Ton t gn: Chng ta tng tip xc vi ton t ny bi vic khi to 1 bin. N gm k t n =. Ton t gn ly gi tr ca ton hng bn phi gn n vo ton hng bn tri. V d: $name = "Johny Nguyen"; 2- Ton t s hc: L dng php tnh gin n cng, tr, nhn, chia trong s hc. Ngoi ra cn c php chia ly d (%). c s dng ly ra n v d ca 1 php ton.

3- Ton t so snh: L ton t c s dng thc hin cc php ton so snh gia hai s hng. Chi tit, xem bng bn di.

Trang 5

4- Ton t logic: Ton t logic l cc t hp cc gi tr boolean. V d: ton t or tr v true nu ton t tri hoc ton t phi l true. True || false true. Ta c bng cc ton t nh sau:

5- Ton t kt hp: Khi to m PHP, chng ta s thng nhn thy cn phi tng hoc gim lng bin mt s nguyn no . Bn s thng thc hin iu ny khi chng ta m 1 gi tr no trong vng lp.

Trang 6

B- Cc biu thc c bn trong PHP: 1- Biu thc iu kin: L biu thc dng kim tra 1 s kin. Nu chng tha iu kin th s thc thi mt hnh ng. Ngc li s l mt hnh ng khc. C php: If(iu kin) { hnh ng } V d:

2- Vng lp trong PHP: a- While().... Php lp ny yu cu phi tha mn iu kin th mi thc thi c vng lp C php: While(iu kin) { Hnh ng thc thi } V d:

Trang 7

b-Do....while(): Php lp ny s thc thi hnh ng t nht l mt ln. Sau mi tin hnh kim tra iu kin. C php: Do { Hnh ng thc thi }while(iu kin) V d:

c- For(): Php lp ny l php ton gp cc tham s. Gip ngi lp trnh gim thiu thi gian phi khai bo bin v cc tham s khi thc thi vic lp d liu. C php: For( gi tr ; iu kin ; bin tng hoc gim) { Hnh ng } V d:

Trang 8

3- Biu thc switch case: L biu thc s dng gim thiu qu trnh x l d liu nu c qu nhiu php ton if else. C php: Switch(bin) { Case gi tr 1: Hnh ng; Break; Case gi tr N: Hnh ng; Break; Default: Hnh ng; Break; } V d:

C- Tng kt: Kt thc bi hc ny, cc bn t nhiu nm c nhng thuc tnh c bn ca cc php ton hc trong PHP, ngoi ra chng ta cng tng bc hiu c c php ca tng biu thc. Trang 9

i vi cc vng lp, chng ta cn hiu v vn chng mt cch linh hot v mm do, phn bit c while v dowhile. S dng hm switch trong trng hp c qu nhiu gi tr ifelse tr v. =================================================== Bi 4: X l gi tr form trong PHP Mt trong nhng ng dng quan trng ca PHP l gip tng tc x l d liu trn form ca ngi s dng. Nhm mc ch gip cp nht thng tin mt cch linh ng v d dng qun l chung hn bi s kt hp tuyt vi ca c s d liu. Tuy nhin lm c iu y PHP yu cu form phi p ng 1 s quy nh chung t ra. Chng ta cng phn tch th form trong HTML sau:

Chng ta thy rng 1 form phi bao gm: Tn form d dng tch bit vi gi tr ca chng. Action: hnh ng chuyn tip n link x l. Method: L phng thc truyn bao gm POST v GET. V d:

Nh vy ta thy rng. on code trn lm nhng vic sau. u tin khi khch nhp liu username vo th chng s chuyn ti trang check.php tin hnh x l thng tin. Trn phng thc POST, vi tn form l reg. Gi tr m chng ta gi l username va nhp liu. Vy lm cch no chng ta ly c gi tr va nhp liu no ?. PHP cho php ta ly gi tr da vo 2 phng thc POST v GET. Trang 10

i vi POST ta c : $_POST[Gi tr] i vi GET ta c : $_GET[Gi tr] Vy vi on code trn c th ly c bin x l l : $_POST[username]; Username l tn ca field m ngi s dng nhp liu vo. 1 Phng thc GET: Phng thc ny cng c dng ly d liu t form nhp liu. Tuy nhin nhim v chnh ca n vn l ly ni dung trang d liu t web server. V d: Vi url sau: shownews.php?id=50 Vy vi trang shownews ta dng hm $_GET[id] s c gi tr l 50. 2- Phng thc POST: Phng thc ny c s dng ly d liu t form nhp liu. V chuyn chng ln trnh ch webserver. V d: Xy dng 1 trang HTML vi ni dung gm form nhp liu h v tn. Sau dng 1 file php xut ra thng tin h v tn m ngi s dng va nhp liu. p n: To file userform.htm vi ni dung sau:

To file processform.php xut ra d liu

Trang 11

Tng Kt: Kt thc bi ny cc bn nm c k thut kim tra thng tin da trn PHP. Mt trong nhng vn khng th thiu i vi bt k mt website ng no. Chng cho ta kim tra tnh hp l ca ngi s dng 1 cch d dng bi s ty bin trong cc biu thc ca PHP. Bi tp p dng : To 1 trang web vi hp thoi nhp liu username v password. Nu ngi s dng nhp thng tin username/password l admin/12345 th xut ra thng bo "welcome, admin" vi kiu ch Tahoma, mu . Ngc li nu nhp sai th xut thng bo "Username hoc password sai. Vui lng nhp li". p n: To trang login.html vi ni dung sau:

Tip tc to trang checklogin.php vi ni dung sau:

Trang 12

========================================================= Bi 5: Tm hiu quy trnh lm vic trn file trong PHP Mt trong nhng tc v c bit ca PHP l cho php x l d liu trc tip thng qua qu trnh nhn v c ni dung trn 1 file d liu. iu ny gip cho PHP tr nn tinh t v d ty bin hn khi x l 1 lng d liu c quy m ln. Vic thao tc m, c, ghi, ng file ny cng c ngha tun t nh bn ang lm vic trc tip trn 1 file d liu thc th. 1- ng, m 1 file trong PHP: m 1 file ta s dng c php sau: fopen("ng dn", thuc tnh). Trong ng dn chnh l ng dn ti file cn m. Thuc tnh bao gm cc quyn hn cho php thao tc trn file nh th no. Cc thuc tnh c bn :

Trang 13

V d: <?php $fp=fopen("test.txt",r)or exit("khong tim thay file can mo"); ?> Tng t nh th, ng 1 file ta c c php nh sau: fclose(file va m) V d: <?php $fp=fopen("test.txt",r)or exit("khong tim thay file can mo"); fclose($fp); ?>

Vic m v ng ny khng c ngha l chng c c. Mun c c ni dung ca file chng ta li tip tc vi thao tc ly d liu t file na. 2- c v ghi file trong PHP. a) c 1 file trong PHP PHP cho ta nhiu s la chn trong vic c 1 file. C nhiu hnh thc h tr nhng hin nay 2 hnh thc ph bin nht vn l c file theo tng dng v c file theo tng k t. - c file theo tng dng: C php : fgets(file va m). V d: <?php $fp=fopen("test.txt",r)or exit("khong tim thay file can mo"); echo fgets($fp); Trang 14

fclose($fp); ?>

- c file theo tng k t: C php : fgetc(file va m). V d: <?php $fp=fopen("test.txt",r)or exit("khong tim thay file can mo"); echo fgetc($fp); fclose($fp); ?>

Quy trnh c s din ra theo tng yu cu ca c php s dng. Nhng s c s rng buc bi vic kim tra n cui file cha ?. y chng ta dng c php sau: feof(file va m) V d: <?php $fp=fopen("test.txt",r)or exit("khong tim thay file can mo"); while(!feof($fp)) { echo fgets($fp); } fclose($fp); ?>

Trang 15

b) Ghi 1 file trong PHP PHP cung cp cho ta 1 c php nh ghi d liu vo 1file C php c bn : fwrite("file va m", "Ni dung cn ghi vo file")

V d: <?php $fp=fopen("test.txt",a)or exit("khong tim thay file can mo"); $news="Trung Tam Tin hoc Viet Chuyenn"; fwrite($fp,$news); fclose($fp); ?> Tng kt: Vic s dng file mt cch thnh tho s gip bn d dng vn hnh cc ng dng mang quy m va v nh nh: website nhiu ngn ng, b m,v c nhng cng ngh web mi nh XML mt cch d dng. Qua bi hc ny chng ta cng hiu c nguyn l hot ng, trnh t x l 1 file d liu khi chng c triu gi trong ti liu PHP. ==================================================== Bi 6: Tng quan v mng v cc hm h tr trong PHP Cng nh bao ngn ng lp trnh khc. PHP cng tn ti mt loi d liu c gi l mng. C th hn Mng l 1 bin danh sch. Ngha l, mt bin vn cha nhiu phn t c to bi cc s hoc chui. N cho php chng ta lu tr, sp xp th t v truy cp nhiu gi tr vi mt tn. V cn lu rng mt phn t mng lun bt u vi gi tr l 0.

1- nh ngha mng trong PHP: Vi c php ging vi java ta c cch gi 1 mng nh sau: $tn_bin= array("Kenny","Maria","Julia","Kenvin") Nh vy khi gi gi tr trong mng ta c: Trang 16

Echo $tn_bin[2]; // Gi tr s cho l Julia. Ngoi cch khai bo trn chng ta cng c th khai bo bng cch khc nh sau: $tn_bin[] = "Kenny"; $tn_bin[] = "Gillian"; $tn_bin[] = "Charlene"; $tn_bin[] = "Calvin" Chng ta khng cn thm k t vo. V PHP t x l cho chng ta phn . thm 1 phn t vo mng chng ta cng c th s dng nh sau: $tn_bin[] = "Jiro"; Nh vy nu chng ta gi gi tr: echo $tn_bin[4] th gi tr s l jiro. V n c PHP thm vo sau cng v ngm hiu l gi tr tip theo. V d: <?php $a=array("Kenny","Maria","Julia","Kenvin"); echo $a[2]; //Xut ra gi tr Julia ?> 2- Khi nim mng kt hp trong PHP L cc mng c to index bng cc chui , chng c gi l cc mng kt hp. V d: <? $a= array (name => "Kenny", job => "Teacher", age=>"45", email => "webmaster@vietchuyen.com.vn") ?> Nh vy truy cp gi tr ca mng trn chng ta khng th s dng cch c c. V d: ly gi tr ca tui ti khng th s dng cch trn : echo $a[2]. V chng ta gn gi tr ca index cho 1 tn gi khc. Do vy ly gi tr ca tui ta s dng nh sau: echo $a[age] // Kt qu s cho ra 45. Trang 17

<? $tn_bin= array (name => "Kenny", job => "Teacher", age=>"45", email => "webmaster@vietchuyen.com.vn") echo $a[age]; ?> 3- Php lp trong mng: C php: foreach($array as $temp) { Hnh ng } Trong $array l mng m ta mun thc thi vic lp d liu, v $temp l mt bin trong ta s tm thi lu tr mi phn t. V d: <?php $name= array("Kenny", "Jiro", "Calvin", "Gillian"); foreach ($name as $test) { echo "$test<br>"; } ?> b) Lp li qua mt mng kt hp: C php: Foreach($array as $key=>$value) { Hnh ng } Trong $array l mng m ta mun thc thi vic lp d liu, $key l mt bin vn tm thi cha mi kha, v $value l mt bin vn tm thi cha mi gi tr. V d: <?php $person= array(name=>"Kenny", job=>"Teacher", email=>"whiletionvn@gmail.com", age=>"38"); Trang 18

foreach($person as $key=>$test) { echo "Key: $key. Gia Tri: $test<br>"; } ?> 4- Cc hm h tr trong PHP: + Hm gp mng: C php: array_merge($mang1, $mang2); + Hm tch mng: C php: array_slice($mang, v tr tch, s lng tch); + Hm sp xp mng: C php: sort($mng); + Hm sp xp mng theo ch mc: C php: ksort($mng); + Hm tm phn t c tn ti trong mng hay khng ?. C php: in_array(gi tr tm, $mng); 5 - Tng kt: Qua bi hc ny, chng ta tm hiu k v cc thnh phn ca mng mt chiu, nhiu chiu v cc hm c bn v x l d liu. Hiu r cu trc mng, s sp xp ng b s gip ch cho cc bn rt nhiu trong nhng ng dng ln. Bi tp p dng : 1- Xy dng website c tnh nng upload cho php upload cng lc 10 file d liu. 2- Xy dng website c tnh nng upload, v ch cho php upload file c nh dng hnh nh nh gif, jpg. Ngoi ra cc tnh nng khc u c thng bo li khng cho upload. ==================================================== Bi 7: Khi nim c bn v Cookie v session trong PHP

Trang 19

Cookie v session l hai phng php s dng qun l cc phin lm vic gia ngi s dng v h thng. Vic qun l phin lm vic ny s gip bn to ra s chng thc hiu qu bi vic xc nhn thng tin trc khi truy cp vo mt phn vng c nh. Ngoi ra, vic qun l tt phin lm vic cng gip ngi truy cp cm thy d dng s dng dch v ca trang web cho nhng ln truy cp sau. Bi c ch qun l phin lm vic ghi nhn li qu trnh truy cp ca ngi s dng khi h thm vic trang web ca bn ln u.

1- Tng quan v cookie: Cookie l 1 on d liu c ghi vo a cng hoc b nh ca my ngi s dng. N c trnh duyt gi ngc ln li server mi khi browser ti 1 trang web t server. Nhng thng tin c lu tr trong cookie hon ton ph thuc vo website trn server. Mi website c th lu tr nhng thng tin khc nhau trong cookie, v d thi im ln cui ta gh thm website, nh du ta login hay cha, v.v... Cookie c to ra bi website v gi ti browser, do vy 2 website khc nhau (cho d cng host trn 1 server) s c 2 cookie khc nhau gi ti browser. Ngoi ra, mi browser qun l v lu tr cookie theo cch ring ca mnh, cho nn 2 browser cng truy cp vo 1 website s nhn c 2 cookie khc nhau. a -Thit lp cookie: thit lp cookie ta s dng c php: Setcookie("tn cookie","gi tr", thi gian sng) Tn cookie l tn m chng ta t cho phin lm vic. Gi tr l thng s ca tn cookie. V d: Setcookie("username","admin", time() +3600) Nh v d trn ta thy vi tn l username v gi tr l admin, c thi gian sng l 1 gi tnh t thi im thit lp. Ch : Kch bn cookie phi t trn mi gi tr tr v bao gm th HTML v lnh echo. Kch bn cookie phi t trn mi gi tr tr v bao gm th HTML v lnh echo. b - S dng cookie: s dng li cookie va thit lp, chng ta s dng c php: Trang 20

C php: $_COOKIE["tn cookies"] Tn cookie l tn m chng ta thit lp pha trn. V d: To trang cookie.php vi ni dung sau: <?php setcookie("name","Kenny Huy",time() + 3600); ?> <html> <head> <title>Test page 1</title></head> <body> <b><a href=cookie2.php>Click here</a></b> </body> </html> Tip tc to trang cookie2.php vi ni dung sau: <html> <head><title>Result Page</title></head> <body> <?php echo "Ten cua ban la <b>".$_COOKIE['name']."</b>"; ?> </body> </html> c- Hy Cookie: hy 1 cookie c to ta c th dng 1 trong 2 cch sau: + C php: setcookie("Tn cookie") Trang 21

Gi hm setcookie vi ch duy nht tn cookie m thi + Dng thi gian ht hn cookie l thi im trong qu kh. V d: setcookie("name","Kenny Huy",time()-3600); V d: Tip tc to trang cookie3.php vi ni dung sau: <?php setcookie("name","Kenny Huy",time()-360); ?> <html> <head> <title>Test page 1</title></head> <body> <b><a href=cookie2.php>Click here</a></b> </body> </html> 2- Tng quan v session: Mt cch khc qun l ngi s dng l session. Session c hiu l khong thi gian ngi s dng giao tip vi 1 ng dng. Mt session c bt u khi ngi s dng truy cp vo ng dng ln u tin, v kt thc khi ngi s dng thot khi ng dng. Mi session s c c cp mt nh danh (ID) khc nhau v ni dung c lu trong th mc thit lp trong file php.ini (tham s session.save_path). a- Thit lp session: thit lp 1 session ta s dng c php: session_start() on code ny phi c nm trn cc kch bn HTML. Hoc nhng lnh echo, printf. thit lp 1 gi tr session, ngoi vic cho php bt u thc thi session. Chng ta cn phi ng k 1 gi tr session. tin cho vic gn gi tr cho session . Ta c c php sau: session_register("Name") Trang 22

V d: <?php Session_start(); Session_register("username"); ?> b- S dng gi tr ca session: Ging vi cookie. s dng gi tr ca session ta s dng m lnh sau: C php: $_SESSION["name"] $_SESSION["name"] Vi Name l tn m chng ta s dng hm session_register("name") khai bo. V d: To trang session.php vi ni dung sau: <?php session_start(); session_register("name"); $_SESSION["name"] = "Kenny Huy"; ?> <html> <head> <title>Test page 1</title></head> <body> <b><a href=session2.php>Click here</a></b> </body> </html> To trang session2.php vi ni dung sau: <? Trang 23

session_start(); ?> <html> <head><title>Result Page</title></head> <body> <?php echo "Ten cua ban la <b>".$_SESSION["name"]."</b>"; ?> </body> </html> c- Hy b session: hy b gi tr ca session ta c nhng cch sau: session_destroy() // Cho php hy b ton b gi tr ca session session_unset()// Cho php hy b session . V d: To trang session3.php vi ni dung sau: <?php session_start(); session_destroy(); ?> <html> <head> <title>Test page 1</title></head> <body> <b><a href=session2.php>Click here</a></b> </body> Trang 24

</html> 3- Tng Kt: Sau bi hc ny chng ta nm c cch iu khin phin lm vic gia cookie v session. S dng chng trong tng trng hp c th. T c th p dng vit nhng ng dng nh nh kim sot ngi ng nhp, lm gi hng online,.. ============================================================= Bi 8: Khi nim v hm v gi li hm trong PHP gim thi gian lp li 1 thao tc code nhiu ln, PHP h tr ngi lp trnh vic t nh ngha cho mnh nhng hm c kh nng lp li nhiu ln trong website. Vic ny cng gip cho ngi lp trnh kim sot m ngun mt cch mch lc. ng thi c th ty bin mi trang. M khng cn phi khi to hay vit li m lnh nh HTML thun. 1- Hm t nh ngha: C php: function functiono_name() { //Lnh thc thi } Tn hm c th l mt t hp bt k nhng ch ci, con s v du gch di, nhng phi bt u t ch ci v du gch di. V d:

<?php function name() { $name= array("Kenny", "Jiro", "Calvin", "Gillian"); foreach ($name as $test) { echo "$test<br>"; } } Trang 25

name(); ?> 2- Hm t nh ngha vi cc tham s: C php: function function_name($gt1,$gt2) { //Hnh ng } V d: <?php function indulieu($text) { echo "$text<br>"; } indulieu("welcome"); indulieu("who are you ?"); ?> 3- Hm t nh ngha vi gi tr tr v: C php: function function_name(C hoc khng c i s) { //Thuc thi return giatri; } V d: <?php Trang 26

function tinhtong($a,$b) { $total=$a+$b; return $total; } echo tinhtong(19,31) ?> 4-Gi li hm trong PHP: PHP cung cp nhiu hm cho php triu gi li file. Nh hm include("URL n file"), require("URL n file"). Ngoi hai c php trn cn c include_once(), require_once(). Hai hm ny cng c trch nhim gi li hm. Nhng chng s ch gi li duy nht 1 ln m thi. V d: To file top.html vi ni dung: <html><head><title>Welcome to you</title></head> <body> <table border=1 width=700> <tr><td colspan=5 align=center>Banner</td></tr> <tr> <td align=center> Home </td> <td align=center> News </td> <td align=center> Music </td> <td align=center> Download</td> <td align=center> Contact</td></tr>

To file body.html vi ni dung: Trang 27

<tr><td colspan=5 align=center> Noi dung website </td> </tr> To file bottom.html vi ni dung: <tr> <td colspan=5 align=center> Copyright@ abc.com</td> </tr> </table> </body> </html> To trang index.php vi ni dung: <?php include("top.html"); include("body.html"); include("bottom.html"); ?> Tng kt: Kt thc bi hc ny, hn cc bn c nhng khi nim c bn v hm v cch s dng li m PHP. Trn ng dng thc t vic dng cc hm triu gi ng vai tr kh quan trng, n gip m ngun ca ngi s dng logic v d dng chnh sa hn, vic ng dng n trn website nh th no cng s ty bin hn so vi cch vit trc tip trn tng file. ===================================================== Bi 9: C bn v ngn ng SQL v Mysql Mysql l h qun tr d liu min ph, c tch hp s dng chung vi apache, PHP. Chnh yu t pht trin trong cng ng m ngun m nn mysql qua rt nhiu s h tr ca nhng lp trnh vin yu thch m ngun m. Mysql cng c cng mt cch truy xut v m lnh tng t vi ngn ng SQL. Nhng Mysql khng bao qut Trang 28

ton b nhng cu truy vn cao cp nh SQL. V bn cht Mysql ch p ng vic truy xut n gin trong qu trnh vn hnh ca website nhng hu ht c th gii quyt cc bi ton trong PHP.

1- Cch khi ng v s dng MYSQL. Chng ta s dng command nh sau: Mysql hname uuser ppass truy cp vo c s d liu. Hoc s dng b appserv vo nhanh hn theo ng dn sau: Start/ Appserv/ Mysql command Line client Sau nhp password m chng ta t vo. 2- Nhng nh ngha c bn: a) nh ngha c s d liu, bng, ct: C s d liu: l tn ca c s d liu chng ta mun s dng Bng: L 1 bng gi tr nm trong c s d liu. Ct l 1 gi tr nm trong bng. Dng lu tr cc trng d liu. Thuc tnh V d:

Nh vy ta c th hiu nh sau: 1 c s d liu c th bao gm nhiu bng. Trang 29

1 bng c th bao gm nhiu ct 1 ct c th c hoc khng c nhng thuc tnh. b) nh ngha 1 s thut ng:

NULL : Gi tr cho php rng. AUTO_INCREMENT : Cho php gi tr tng dn (t ng). UNSIGNED : Phi l s nguyn dng PRIMARY KEY : Cho php n l kha chnh trong bng. c)Loi d liu trong Mysql: y chng t ch gii thiu 1 s loi thng dng: 1 s d liu khc c th tham kho trn trang ch ca mysql.

3- Nhng c php c bn: C php to 1 c s d liu: CREATE DATABASE tn_c_s_d_liu; C php s dng c s d liu: Use tn_database; C php thot khi c s d liu: Exit C php to 1 bng trong c s d liu: CREATE TABLE user (<tn_ct> <m_t>,,<tn_ct_n>..<m_t_n>) V d: Trang 30

mysql> create table user(user_id INT(15) UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(255) NOT NULL, password CHAR(50) NOT NULL, email VARCHAR(200) NOT NULL, PRIMARY KEY (user_id)); Hin th c bao nhiu bng: show tables; Hin th c bao nhiu ct trong bng: show columns from table; Thm 1 ct vo bng : ALTER TABLE tn_bng ADD <tn_ct> <thuc_tnh> AFTER <tn_ct> V d: mysql> alter table user add sex varchar(200) NOT NULL after email; 4- Thm gi tr vo bng: C php: INSERT INTO Tn_bng(tn_ct) VALUES(Gi_tr_tng_ng); V d: mysql> insert into user(username,password,email,sex,home) values("Lanna","12345","lanna@yahoo.com","F","www.abc.com"); 5- Truy xut d liu: C php: SELECT tn_ct FROM Tn_bng; V d: mysql> select user_id,username from user; 6- Truy xut d liu vi iu kin: C php: SELECT tn_ct FROM Tn_bng WHERE iu kin; V d: mysql> select user_id,username from user where user_id=2; 7- Truy cp d liu v sp xp theo trnh t C php: Trang 31

SELECT tn_ct FROM Tn_bng WHERE iu kin (c th c where hoc khng) ORDER BY Theo quy c sp xp. Trong quy c sp xp bao gm hai thng s l ASC (t trn xung di), DESC (t di ln trn). mysql> select user_id,username from user order by username ASC ; 8- Truy cp d liu c gii hn : C php: SELECT tn_ct FROM Tn_bng WHERE iu kin (c th c where hoc khng) LIMIT v tr bt u, s record mun ly ra V d: mysql> select user_id,username from user order by username ASC limit 0,10 ; 9- Cp nht d liu trong bng: C php: Update tn_bng set tn_ct=Gi tr mi WHERE (iu kin). Nu khng c rng buc iu kin, chng s cp nht ton b gi tr mi ca cc record trong bng. V d: mysql> update user set email="admin@qhonline.info" where user_id=1 ; 10- Xa d liu trong bng: C php: DELETE FROM tn_bng WHERE (iu kin). Nu khng c rng buc iu kin, chng s x ton b gi tr ca cc record trong bng. V d Trang 32

mysql>delete from user where user_id=1 ; ==================================================== Bi 10: Kt hp PHP v MYSQL trong ng dng website bi trc, chng ta cng nghin cu v cc c php sql v Mysql c bn bao gm vic to bng, to kt ni, thm, sa, xa cc dng d liu trong c s d liu. V tip theo bi ny, chng ta s cng tm hiu v cch s dng mysql kt hp vi PHP xut ra d liu nh th no. lm vic vi mysql v PHP chng ta cn nm 6 hm c bn: 1- Kt ni c s d liu: C php: mysql_connect("hostname","user","pass") 2- La chn c s d liu: C php: mysql_select_db("tn_CSDL") V d: $conn=mysql_connect("localhost","root","root") or die(" khong the ket noi"); mysql_select_db("demo"); 3- Thc thi cu lnh truy vn: C php: mysql_query("Cu truy vn y"); 4- m s dng d liu trong bng: C php: mysql_num_rows(); 5- Ly d liu t bng a vo mng: C php: mysql_fetch_array(); Trang 33

6- ng kt ni c s d liu: C php: mysql_close(); V d p dng: To c s d liu da trn tng on code sau: mysql -hlocalhost -uroot -proot mysql>create database demo_mysql; mysql> use demo_mysql; mysql>create table user(id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password CHAR(50) NOT NULL, PRIMARY KEY(id)); To trang test.php. u tin chng ta s kt ni c s d liu. <? $conn=mysql_connect("localhost", "root", "root") or die("can't connect database"); mysql_select_db("demo_mysql",$conn); ?> Tip n vit cu truy vn ly ra tt c user t database. <? $sql="select * from user"; $query=mysql_query($sql); ?> Kim tra xem trong bng d liu tn ti user no cha ?. Nu cha th xut ra thng bo li, ngc li th a chng vo mng v lp cho n ht bng d liu. <? if(mysql_num_rows($query) == 0) { echo "Chua co du lieu"; Trang 34

} else { while($row=mysql_fetch_array($query)) { echo $row[username] ." - ".$row[password]."<br />"; } } ?> V cui cng chng ta ng kt ni v kt thc thao tc x l. <? mysql_close($conn); ?> V cui cng l file hon chnh ca ng dng trn:

<? $conn=mysql_connect("localhost", "root", "root") or die("can't connect database"); mysql_select_db("demo_mysql",$conn); $sql="select * from user"; $query=mysql_query($sql); if(mysql_num_rows($query) == 0) { echo "Chua co du lieu"; } else { Trang 35

while($row=mysql_fetch_array($query)) { echo $row[username] ." - ".$row[password]."<br />"; } } mysql_close($conn); ?> Tng kt: bi ny chng ta lm vic vi sql v cc k thut kt ni vi database ca PHP. Cc hm PHP h tr mysql hin nay c rt nhiu. Tuy nhin v tnh nng cng nh phng thc s dng th chng cng ging nhau. Do vy cc bn khng nn lo lng khi lm vic vi nhng hm m chng ta ang nghin cu. ======================================================== Bi 11: Vit ng dng ng nhp bng PHP v MYSQL nhng bi trc chng ta hc qua cc kin thc trng yu v PHP. Tuy nhin, c th xy dng mt website hon chnh bng nhng kin thc th qu tht khng n gin. Bi v cc kin thc qua sch v v ti liu d sao cng ch l nhng kin thc tng qut v thiu tnh khch quan thc tin. Nn khi ngi hc lp trnh bc vo giai on vit ng dng th thng rt lng tng. cng l l do ti vit bi ny hng dn cc bn dn lm quen vi cch tip cn mt ng dng PHP&MYSQL nh th no. Trc ht chng ta phi thit k v xy dng m hnh c s d liu ng vi tng lnh bn di (xem li bi ngn ng SQL v MYSQL Cn Bn) sau mi tin hnh trin khai lp trnh. 1 mysql -hlocalhost -uroot -proot 2 mysql>create database project; 3 mysql>use project; mysql>create table user( id INT(10) UNSIGNED NOT NULL 4 AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password CHAR(50) NOT NULL, level CHAR(1) NOT NULL, PRIMARY KEY(id)); mysql>insert into user(username,password,level) values 5 ("admin","12345","2") ("abc","12345","1"); Vy l chng ta c c s d liu nh m hnh trn. Tip n chng ta thit k Form HTML c mn hnh ng nhp khi ngi dng truy cp. Trang 36

1 <form action=login.php method=post> 2 Username: <input type=text name=username size=25 /><br /> Password: <input type=password name=password size=25 3 /><br /> 4 <input type=submit name=ok value="Dang Nhap" /> 5 </form> Tip n chng ta tin hnh kim tra d liu t form 01 <?php 02 if(isset($_POST['ok'])) 03 { 04 if($_POST['username'] == NULL) 05 { 06 echo "Please enter your username<br />"; 07 } 08 else 09 { 10 $u=$_POST['username']; 11 } 12 if($_POST['password'] == NULL) 13 { 14 echo "Please enter your password<br />"; 15 } 16 else 17 { 18 $p=$_POST['password']; 19 } 20 } 21 ?> on code trn s kim tra xem ngi dng c tin hnh nhn nt ng nhp hay khng. V nu c th chng ta s xt tip tnh trng ngi dng c trng cc username v password hay khng. Nu c chng ta s thng bo li bn trn form, ngi s dng tin hnh nhp liu.

K n chng ta kim tra xem c tn ti hai bin $u v $p (ch khi ngi dng ng nhp thnh cng th mi c th to ra 2 bin ). Tip n chng ta tin hnh kt ni c s d liu (xem li bi kt hp PHP & MYSQL trong ng dng web). Trang 37

1 <?php $conn=mysql_connect("localhost","root","root") or die("can't 2 connect this database"); 3 mysql_select_db("project",$conn); 4 ?> V tin hnh kim tra xem username v password ngi s dng va nhp c trng khp vi thng tin c trong c s d liu hay khng ?. Nu khng th chng ta s bo li ngay. Ngc li s tin hnh ly d liu t bng v gn vo session. c th qun l phin lm vic mt cch hiu qu trn mi trang ca khu vc admin (xem li bi khi nim c bn v cookie v session). 01 <?php 02 if($u && $p) 03 { $conn=mysql_connect("localhost","root","root") or 04 die("can't connect this database"); 05 mysql_select_db("project",$conn); $sql="select * from user where username='".$u."' and 06 password='".$p."'"; 07 $query=mysql_query($sql); 08 if(mysql_num_rows($query) == 0) 09 { echo "Username or password is not correct, please try 10 again"; 11 } 12 else 13 { 14 $row=mysql_fetch_array($query); 15 session_start(); 16 session_register("userid"); 17 session_register("level"); 18 $_SESSION['userid'] = $row[id]; 19 $_SESSION['level'] = $row[level]; 20 } 21 } 22 ?> Nh vy code hon chnh cho ng dng ny l nh sau: 01 <?php 02 if(isset($_POST['ok'])) 03 { 04 if($_POST['username'] == NULL) 05 { Trang 38

06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21

echo "Please enter your username<br />"; } else { $u=$_POST['username']; } if($_POST['password'] == NULL) { echo "Please enter your password<br />"; } else { $p=$_POST['password']; } if($u && $p) { $conn=mysql_connect("localhost","root","root") or 22 die("can't connect this database"); 23 mysql_select_db("project",$conn); $sql="select * from user where username='".$u."' and 24 password='".$p."'"; 25 $query=mysql_query($sql); 26 if(mysql_num_rows($query) == 0) 27 { echo "Username or password is not correct, please try 28 again"; 29 } 30 else 31 { 32 $row=mysql_fetch_array($query); 33 session_start(); 34 session_register("userid"); 35 session_register("level"); 36 $_SESSION['userid'] = $row[id]; 37 $_SESSION['level'] = $row[level]; 38 39 } 40 } 41 } 42 ?> 43 <form action=login.php method=post> 44 Username: <input type=text name=username size=25 /><br /> Password: <input type=password name=password size=25 /><br 45 /> Trang 39

46 <input type=submit name=ok value="Dang Nhap" /> 47 </form> =============================================================== = Bi 12: Vit ng dng thm thnh vin bng PHP v MYSQL bi trc, chng ta xy dng ng dng thnh vin. Cho php ngi s dng thc thi cng vic ng nhp vo h thng. Trong bi ny chng ta s tip tc cng vic pht trin ng dng trn, ngi s dng sau khi ng nhp c nhng thao tc c quyn nh thm, qun l, sa, xo thnh vin ca trang web. (xem li Bi 11: Vit ng dng ng nhp bng PHP & MYSQL). Sau khi ng nhp vo trang admin ngi dng s c y sang trang qun l admin, ti y ch nhng ai ng nhp ng vi username v password trong c s d liu v c quyn hn level l 2 th mi c th truy xut vo trang ny. V vy chng ta cn thao tc kim tra session qun l phin lm vic ca ngi s dng. t on code sau nhng trang bn mun kim tra quyn truy cp ca ngi s dng. 01 <?php 02 session_start(); 03 if(isset($_SESSION['userid']) && $_SESSION['level'] == 2) 04 { // ti y thc thi cc hot ng khi ng nhp thnh 05 cng. 06 } 07 else 08 { 09 header("location: login.php"); 10 exit(); 11 } 12 ?> Nh vy ti trang add_user.php chng ta cng t on code trn v vit thm 1 form thc thi cng vic thm thnh vin.

01 <form action=add_user.php method=POST> Trang 40

02 Level: <select name=level> 03 <option value=1>Member</option> 04 <option value=2>Admin </option> 05 </select><br /> 06 Username: <input type=text name=username size=25><br /> Password: <input type=password name=password size=25> 07 <br /> Re-Password: <input type=password name=re-password 08 size=25><br /> 09 <input type=submit name="adduser" value="Add New User"> 10 </form> Tng t nh nhng bi trc, chng ta cng ln lt kim tra tng i tng. Trc ht cn xem th ngi dng nhn nt Add New user cha, sau li kim tra xem ngi dng nhp y thng tin cha. Cui cng l so snh gia password v re-password c ging nhau hay khng. Tip theo chng ta gn bin $l s bng vi gi tr m khi ngi dng chn level cho user . (xem li Bi 4: X l gi tr form trong PHP) 01 <?php 02 if(isset($_POST['adduser'])) 03 { 04 if($_POST['username'] == "") 05 { 06 echo "Vui long nhap username<br />"; 07 } 08 else 09 { 10 $u=$_POST['username']; 11 } 12 if($_POST['password'] != $_POST['re-password']) 13 { 14 echo "Password va re-password khong chinh xac<br />"; 15 } 16 else 17 { 18 if($_POST['password'] == "" ) 19 { 20 echo "Vui long nhap password<br />"; 21 } 22 else 23 { 24 $p=$_POST['password']; 25 } 26 } Trang 41

27 $l=$_POST['level']; 28 } 29 ?> K n chng ta li tip tc kim tra xem c tn ti bin $u, $p v $l hay khng (ch khi ngi dng nhp liu th mi tn ti cng lc 3 bin ny). sau khi kim tra s tn ti ca 3 bin ny chng ta tip tc dng PHP kt ni c s d liu kim tra xem username m ngi dng va chn c trng vi username khc trong c s d liu cha. nu trng th phi xut thng bo li yu cu h chn username khc cn nu khng th ta li tin hnh thm thnh vin mi ny vo CSDL. 01 <?php 02 if($u & $p & $l) 03 { $conn=mysql_connect("localhost","root","root") or 04 die("can't connect this database"); 05 mysql_select_db("project",$conn); 06 $sql="select * from user where username='".$u."'"; 07 $query=mysql_query($sql); 08 if(mysql_num_rows($query) != "" ) 09 { 10 echo "Username nay da ton tai roi<br />"; 11 } 12 else 13 { $sql2="insert into user(username,password,level) 14 values('".$u."','".$p."','".$l."')"; 15 $query2=mysql_query($sql2); 16 echo "Da them thanh vien moi thanh cong"; 17 } 18 } 19 ?> Ti y ta kt thc thao tc thm mt thnh vin mi vo c s d liu. Sau y l ton b code trong ng dng ny. 01 <?php 02 session_start(); 03 if(isset($_SESSION['userid']) && $_SESSION['level'] == 2) 04 { 05 if(isset($_POST['adduser'])) 06 { 07 if($_POST['username'] == "") 08 { 09 echo "Vui long nhap username<br />"; Trang 42

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

} else { $u=$_POST['username']; } if($_POST['password'] != $_POST['re-password']) { echo "Password va re-password khong chinh xac<br />"; } else { if($_POST['password'] == "" ) { echo "Vui long nhap password<br />"; } else { $p=$_POST['password']; } } $l=$_POST['level']; if($u & $p & $l) { $conn=mysql_connect("localhost","root","root") or 33 die("can't connect this database"); 34 mysql_select_db("project",$conn); 35 $sql="select * from user where username='".$u."'"; 36 $query=mysql_query($sql); 37 if(mysql_num_rows($query) != "" ) 38 { 39 echo "Username nay da ton tai roi<br />"; 40 } 41 else 42 { $sql2="insert into user(username,password,level) 43 values('".$u."','".$p."','".$l."')"; 44 $query2=mysql_query($sql2); 45 echo "Da them thanh vien moi thanh cong"; 46 } 47 } 48 } 49 } 50 ?> 51 <form action=add_user.php method=POST> Trang 43

52 Level: <select name=level> 53 <option value=1>Member</option> 54 <option value=2>Admin </option> 55 </select><br /> 56 Username: <input type=text name=username size=25><br /> Password: <input type=password name=password size=25> 57 <br /> Re-Password: <input type=password name=re-password 58 size=25><br /> 59 <input type=submit name="adduser" value="Add New User"> 60 </form> 61 <?php 62 } 63 else 64 { 65 header("location: login.php"); 66 exit(); 67 } 68 ?> Bi 13: Vit ng dng qun l thnh vin bng PHP v MYSQL cc bi trc, chng ta cng tm hiu v vic thm mt thnh vin v thit lp trang ng nhp vo h thng administrator. bi ny, chng ta s cng nghin cu v ng dng qun tr cc ti khon. Hay ni cch khc l h thng li ton b danh sch ca nhng thnh vin trn website ca chng ta. Sau khi ng nhp vo trang admin ngi dng s c y sang trang qun l admin, ti y ch nhng ai ng nhp ng vi username v password trong c s d liu v c quyn hn level l 2 th mi c th truy xut vo trang ny. V vy chng ta cn thao tc kim tra session qun l phin lm vic ca ngi s dng. t on code sau nhng trang bn mun kim tra quyn truy cp ca ngi s dng. 01 <?php 02 sessison_start(); 03 if(isset($_SESSION['userid']) && $_SESSION['level'] == 2) 04 { // ti y thc thi cc hot ng khi ng nhp thnh 05 cng. 06 } 07 else 08 { 09 header("location: login.php"); Trang 44

10 exit(); 11 } 12 ?> Nh vy, chng ta s t on code ny trang qun l user. C th ti t trang ny c tn file l manage_user.php. V d liu s lp li ton b user v ng vi tng user s l 1 dng d liu c lp li. Chng ta s xy dng 1 bng gm c STT l s th t ca tng user c m trn mi user khi lp, username l tn truy cp ca h, level l cp bc ca user (1 l member v 2 l admin), edit l ct cha cc link chnh sa user, del l ct xa cc user. 1 <table align=center width=400 border=1> 2 <tr> 3 <td>STT</td> 4 <td>Username</td> 5 <td>Level</td> 6 <td>Edit</td> 7 <td>Del</td> 8 </tr> Tip theo, chng ta s kt ni CSDL tin hnh lp cc user. 01 <?php $conn=mysql_connect("localhost","root","root") or 02 die("can't connect this database"); 03 mysql_select_db("project",$conn); 04 $sql="select * from user order by id DESC"; 05 $query=mysql_query($sql); 06 if(mysql_num_rows($query) == "") 07 { echo "<tr><td colspan=5 align=center>Chua co username 08 nao</td></tr>"; 09 } 10 ?> on code trn tin hnh la chn tt c user c trong database. ng thi kim tra xem trong database c tn ti user no khng. Nu khng s xut ra thng bo "cha c username no". Ngc li khi c tn ti user chng ta s x l tip nh sau: 01 <?php 02 $stt=0; 03 while($row=mysql_fetch_array($query)) 04 { 05 $stt++; 06 echo "<tr>"; 07 echo "<td>$stt</td>"; Trang 45

08 echo "<td>$row[username]</td>"; 09 if($row[level] == "1") 10 { 11 echo "<td>Member</td>"; 12 } 13 else 14 { 15 echo "<td>Admin</td>"; 16 } echo "<td><a href=edit_user.php? 17 userid=$row[id]>Edit</a></td>"; echo "<td><a href=del_user.php? 18 userid=$row[id]>Del</a></td>"; 19 echo "</tr>"; 20 ?> y ta dng bin $stt lm b m cho s lng user. Nh vy, c mi ln lp 1 user th b m ny s t ng tng ln 1 n v. Sau , chng ta a d liu vo mng v truyn cc gi tr trn vo cc ct d liu trong bng.

Ti y ta kt thc thao tc qun l cc user ang tn ti trong c s d liu. Sau y l ton b code trong ng dng ny. view source print? 01 <?php 02 sesison_start(); 03 if(isset($_SESSION['userid']) && $_SESSION['level'] == 2) 04 { 05 ?> 06 <table align=center width=400 border=1> 07 <tr> 08 <td>STT</td> 09 <td>Username</td> 10 <td>Level</td> Trang 46

11 <td>Edit</td> 12 <td>Del</td> 13 </tr> 14 <? $conn=mysql_connect("localhost","root","root") or 15 die("can't connect this database"); 16 mysql_select_db("project",$conn); 17 $sql="select * from user order by id DESC"; 18 $query=mysql_query($sql); 19 if(mysql_num_rows($query) == "") 20 { echo "<tr><td colspan=5 align=center>Chua co username 21 nao</td></tr>"; 22 } 23 else 24 { 25 $stt=0; 26 while($row=mysql_fetch_array($query)) 27 { 28 $stt++; 29 echo "<tr>"; 30 echo "<td>$stt</td>"; 31 echo "<td>$row[username]</td>"; 32 if($row[level] == "1") 33 { 34 echo "<td>Member</td>"; 35 } 36 else 37 { 38 echo "<td>Admin</td>"; 39 } echo "<td><a href=edit_user.php? 40 userid=$row[id]>Edit</a></td>"; echo "<td><a href=del_user.php? 41 userid=$row[id]>Del</a></td>"; 42 echo "</tr>"; 43 } 44 45 } 46 ?> 47 </table> =============================================================== = Trang 47

Bi 14: vit ng dng sa xa thnh vin bng PHP v MYSQL Trong bi trc chng ta ni v cch thm v qun l thnh vin kt hp PHP v MYSQL. Tip theo trong bi ny, chng ta s vit tip 2 ng dng sa v xa thnh vin hon tt module user. theo kp bi ny, cc bn vui lng xem li bi 11,12,13. V cc bi c hng dn lin mch t u ti cui. Cng nh nhng bi trc, h thng sa v xa thnh vin ny cng ch c th thc hin c khi ngi s dng ng nhp thnh cng vi quyn hn ca 1 administrator. Do vy, bn ng qun kim tra session u khi bt u vit ng dng ny nh. 01 <?php 02 sessison_start(); 03 if(isset($_SESSION['userid']) && $_SESSION['level'] == 2) 04 { // ti y thc thi cc hot ng khi ng nhp thnh 05 cng. 06 } 07 else 08 { 09 header("location: login.php"); 10 exit(); 11 } 12 ?> A- Xy dng trang sa thnh vin: V l trang chnh sa thnh vin, nn ni dung ca chng c phn s ging vi phn thm thnh vin, ch khc l cc nhp liu gi y c d liu. D liu ny chng ta tin hnh ly t c s d liu thng qua bin truyn m trang qun l gi edit_user.php?userid=$row[id]

Trang 48

Nh vy ly c gi tr t lin kt ny chng ta s s dng bin $_GET['userid']. Sau khi c c gi tr ny, vic cn li ca bn l ly thng tin ca id ny t c s d liu v a vo form ngi dng c th chnh sa. Vy ta c. 01 <?php 02 $sql="select * from user where id='".$id."'"; 03 $query=mysql_query($sql); 04 $row=mysql_fetch_array($query); 05 ?> 06 <form action="edit_user.php?userid=<?=$id?>" method=post> 07 Level: <select name=level> <option value=1 <? if($row[level] == 1) echo "selected"; ? 08 >) >Member</option> <option value=2 <? if($row[level] == 2) echo "selected"; ? 09 >>Administrator</option> 10 </select><br /> Username: <input type=text name=user size=20 value="<? 11 =$row[username]?>" /><br /> 12 Password: <input type=password name=pass size=20 /> <br /> Re-password: <input type=password name=repass size=20 13 /><br /> 14 <input type=submit name=ok value="Edit User" /> 15 </form> Theo nh on code trn phn value chng ta mun a gi tr vo th buc phi s dng c php gn <?=$ten?> hoc cng c th s dng bng cch <? echo $ten; ? >.. y chng ta ch a ra gi tr trn text box username, cn li mt khu do c th b m ha nn khng nn hin th ra. Phn level do lu trong c s d liu l nhng con s 1,2 nn khi a ra chng ta phi so snh, nu trong bng lu l 1 th ch c gi tr bng 1 s thm ch selected. mc nh la chn khi ngi dng nhn vo nt chnh sa. Tip ti ngi dng s nhn nt edit. Vic cn li ca chng ta l kim tra d liu khi h tin hnh chnh sa d liu. im khc bit y l chng ta phi cn nhc khi vit trang chnh sa. Bi khng phi ai vo chnh sa cng u sa c thng tin username, password, level. C khi h ch sa mi level hoc c khi h ch sa mi password. V th ta phi xt cc trng hp gii quyt. Trng hp 1: Ngi dng ch chnh sa username, level m khng chnh sa password. Khi username, level bt buc u c d liu nn ta khng cn kim tra chng rng hay khng. Nhng vi password chng ta khng th bt ngi lp trnh nhp liu. V h hon ton c th rng. Trang 49

Trng hp 2: Ngi dng chnh sa username, level ,password. Khi ta xem password c d liu v ta tin hnh cp nht. gii quyt bi ton trn tha 2 trng hp ta s xt phng php sau: Ta kim tra password v repassword c ging nhau hay khng ?. Nu chng khc nhau ngha l ngi dng nhp liu nhng nhp sai. Vy phi cnh bo li cho h bit l h nhp sai. Cn ngc li nu password v repassword ging nhau th s ny sinh 2 trng hp con. + Mt l password v repassword u c d liu + Hai l password v repassword khng c d liu. Khi trng hp con 1 chng ta s khi to bin $p v ghi nhn thng tin h nhp liu. V trng hp 2 chng ta khng ghi nhn thng tin ngi nhp liu v h khng c nh chnh sa mt khu. C th vit on code n gin nh sau: 01 <?php 02 if($_POST['pass'] != $_POST['repass']) 03 { 04 echo "Password and re-password is not correct"; 05 } 06 else 07 { 08 if($_POST['pass'] != NULL) 09 { 10 $p=$_POST['pass']; 11 } 12 } 13 ?> Tip ti chng ta s phn loi d liu cp nht. Khi c username,password, level th ta cp nht tt c thng tin ca h bng c php SQL. (xem li bi 9: ngn ng SQL v MYSQL c bn). Ngc li khi khng tn ti password th ta ch cp nht username v level. Mt iu na chng ta cn quan tm l i vi lnh update v delete, ta phi truyn 1 id c th trnh vic chng xa hoc sa d liu ton b trong bng user. Vi id ti truyn nhn t bn ngoi ta s c. 01 <?php 02 if($u && $p && $l ) 03 { 04 $sql="update user set username='".$u."', password='". Trang 50

$p."', level='".$l."' where id='".$id."'"; 05 mysql_query($sql); 06 header("location:mana_user.php"); 07 exit(); 08 } 09 else 10 { 11 if($u && $l) 12 { $sql="update user set username='".$u."', level='".$l."' 13 where id='".$id."'"; 14 mysql_query($sql); 15 header("location:mana_user.php"); 16 exit(); 17 } 18 } 19 ?> Sau khi sa thnh cng mt thnh vin chng ta s a ngi dng tr v vi trang qun l (xem bi 13 bit cch xy dng trang qun l thnh vin nh th no) Ni dung ca ton b code trn nh sau: 01 <?php $conn=mysql_connect("localhost","root","root") or 02 die("can't connect this database"); 03 mysql_select_db("project",$conn); 04 $id=$_GET['userid']; 05 if(isset($_POST['ok'])) 06 { 07 if($_POST['user'] == NULL) 08 { 09 echo "Please enter your username"; 10 } 11 else 12 { 13 $u=$_POST['user']; 14 } 15 if($_POST['pass'] != $_POST['repass']) 16 { 17 echo "Password and re-password is not correct"; 18 } 19 else 20 { 21 if($_POST['pass'] != NULL) Trang 51

22 23 24 25 26 27 28

{ $p=$_POST['pass'];

} } $l = $_POST['level']; if($u && $p && $l ) { $sql="update user set username='".$u."', password='". 29 $p."', level='".$l."' where id='".$id."'"; 30 mysql_query($sql); 31 header("location:mana_user.php"); 32 exit(); 33 } 34 else 35 { 36 if($u && $l) 37 { $sql="update user set username='".$u."', level='".$l."' 38 where id='".$id."'"; 39 mysql_query($sql); 40 header("location:mana_user.php"); 41 exit(); 42 } 43 } 44 } 45 $sql="select * from user where id='".$id."'"; 46 $query=mysql_query($sql); 47 $row=mysql_fetch_array($query); 48 ?> 49 <form action="edit_user.php?userid=<?=$id?>" method=post> 50 Level: <select name=level> <option value=1 <? if($row[level] == 1) echo "selected"; ? 51 >) >Member</option> <option value=2 <? if($row[level] == 2) echo "selected"; ? 52 >>Administrator</option> 53 </select><br /> Username: <input type=text name=user size=20 value="<? 54 =$row[username]?>" /><br /> 55 Password: <input type=password name=pass size=20 /> <br /> Re-password: <input type=password name=repass size=20 56 /><br /> 57 <input type=submit name=ok value="Edit User" /> 58 </form> Trang 52

B- Xy dng trang xa thnh vin: i vi trang xa d liu, chng ta cng khng cn phi x l qu nhiu. Bi nhim v ca chng ch n gin l xa i nhng dng trong bng. Nh vy cng nh trang edit chng ta nhn gi tr t ni dung lin kt trang qun l gi l del_user.php?userid=$row[id]. V thc thi lnh kt ni csdl x l ni dung ny. 1 <?php $conn=mysql_connect("localhost","root","root") or die("can't 2 connect this database"); 3 mysql_select_db("project",$conn); 4 $sql="delete from user where id='".$id."'"; 5 mysql_query($sql); 6 header("location:mana_user.php"); 7 exit(); 8 ?> Sau khi xa xong thnh vin th h thng s a chng ta tr v trang qun l user li. ==================================================== Bi 15: Vit ng dng to m xc nhn bng PHP nhng bi trc, chng ta tm hiu v cch lm vic vi PHP kt hp MYSQL trong vic xy dng h thng thm, sa, xa v qun l user. Trong bi ny, chng ta tip tc tm hiu phng php to dy s ngu nhin chng tn cng flood d liu. Hoc ai c tnh spam khin c s d liu ca chng ta khng th x l tip c.

Trc tin, chng ta tin hnh to form HTML n gin thc thi thao tc nhp liu nh sau: 01 <form action="form.php" method=post> 02 <table> 03 <tr> 04 <td align="left"> 05 <label for="captcha">Captcha</label> 06 </td> 07 <td> <input type="text" name="txtCaptcha" maxlength="10" 08 size="32" /> 09 </td> Trang 53

10 <td> 11 <img src="random_image.php" /> 12 </td> 13 </tr> 14 <tr> 15 <td> </td> 16 <td> 17 <input type=submit name=ok value="Check" /> 18 </td> 19 </tr> 20 </table> 21 </form> Chng ta ch phn hnh nh, ti y ti truyn ng dn chnh l lin kt ti trang random_image.php. Trang ny s thc thi cng vic to ra nhng bc hnh c dy s ngu nhin phn nhp liu ca ngi s dng tham chiu ti. Tip theo, chng ta khi to file random_image.php ly ra dy s ngu nhin v pht sinh chng ngay trn tm hnh cho ngi truy cp nhp liu. lm c iu . Chng ta s khi to session v lu dy s nhp liu vo session ca mnh, sau so khp vi trang form bn kia.(xem li bi 7: Khi nim c bn v cookie v session trong PHP)

u tin chng ta s dng hm md5 v ran m ha cc k t bao gm s v ch ci. Khi s dng hm md5() k t pht sinh s ln ti 32 k t. V chng ta ch ly duy nht 5 k t t chui m ha bng hm substr. Tip tc ta lu on m ha ny trong session c th $_SESSION['security_code'], ti trang form ta s s dng so snh vi phn nhp liu ca ngi s dng. Vy nn on code di s gii quyt cc tnh hung ny. 1 <?php 2 $md5_hash = md5(rand(0,999)); 3 $security_code = substr($md5_hash, 15, 5); 4 $_SESSION["security_code"] = $security_code; 5 ?> K n ta khi to tm hnh vi chiu rng v chiu cao m ta thit lp thng qua hm ImageCreate() . V tip tc khai bo 2 mu chnh l trng v en bng hm Trang 54

ImageColorAllocate($image, red, green, blue ). Hm ny s to ra mt mu sc t h mu RGB trn tm hnh m chng ta va khi to. Tip tc ta background ca tm hnh s l mu en v ch xut hin trn tm hnh s l mu trng bng hm ImageFill() v hm ImageString(). Hm ImageString c mt s i s c bn nh sau: ImageString($image, 5, 30, 6, $security_code, $white); Trong : + $image l hnh m chng ta khi to. + 5: l font-size m chng ta quy c cho k t xut hin trn hnh. + 30: l khong cch bn tri ca tm hnh. + 6 : l khong cch t trn ca tm hnh. + $security_code: l on code sau khi chng ta ct ra trn. + $white: l mu sc m chng ta s dng hm ImageColorAllocate() trn khi to ra mu trng. 1 <?php 2 $width = 100; 3 $height = 30; 4 $image = ImageCreate($width, $height); 5 $white = ImageColorAllocate($image, 255, 255, 255); 6 $black = ImageColorAllocate($image, 0, 0, 0); 7 ImageFill($image, 0, 0, $black); 8 ImageString($image, 5, 30, 6, $security_code, $white); 9 ?> K ti chng ta s s dng lnh header tr ni dung ny tr v d liu dng hnh. V tin hnh khi to nh dng cho file hnh m chng ta va to l JPG ng thi gii phng hnh tm c s dng khi to ra tm hnh ny bng on code sau: 1 <?php 2 header("Content-Type: image/jpeg"); 3 ImageJpeg($image); 4 ImageDestroy($image); 5 ?> d qun l chng ta s t tt c on code trn vo trong 1 hm d s dng v qun l chng tt hn. Vy ton b on code trong trang random_image.php ny nh sau. 01 <?php 02 session_start(); Trang 55

03 function create_image() 04 { 05 $md5_hash = md5(rand(0,999)); 06 $security_code = substr($md5_hash, 15, 5); 07 $_SESSION["security_code"] = $security_code; 08 $width = 100; 09 $height = 30; 10 $image = ImageCreate($width, $height); 11 $white = ImageColorAllocate($image, 255, 255, 255); 12 $black = ImageColorAllocate($image, 0, 0, 0); 13 ImageFill($image, 0, 0, $black); 14 ImageString($image, 5, 30, 6, $security_code, $white); 15 header("Content-Type: image/jpeg"); 16 ImageJpeg($image); 17 ImageDestroy($image); 18 } 19 create_image() ; 20 exit(); 21 ?> Tip tc, trong trang form chng ta phi khi to session chng nhn c cc gi tr m ta khi to v s dng trang random_image, k ti ta kim tra xem ngi dng c nhn submit cha. Nu c ta s tip tc kim tra xem ngi dng nhp vo textbox c ng l dy s hin th trn hnh nh hay khng. V xut ra thng bo tng ng vi ni dung ca ngi nhp liu. (xem li bi 4: X l gi tr form trong PHP) Sau y l ton b code ca trang form.php. 01 <?php 02 session_start(); 03 if(isset($_POST['ok'])) 04 { 05 if($_POST['txtCaptcha'] == NULL) 06 { 07 echo "Please enter your code"; 08 } 09 else 10 { 11 if($_POST['txtCaptcha'] == $_SESSION['security_code']) 12 { 13 echo "ma lenh hop le"; 14 } 15 else 16 { Trang 56

17 echo "Ma lenh khong hop le"; 18 } 19 } 20 } 21 ?> 22 <form action="form.php" method=post> 23 <table> 24 <tr> 25 <td align="left"> 26 <label for="captcha">Captcha</label> 27 </td> 28 <td> <input type="text" name="txtCaptcha" maxlength="10" 29 size="32" /> 30 </td> 31 <td> 32 <img src="random_image.php" /> 33 </td> 34 </tr> 35 <tr> 36 <td> </td> 37 <td> 38 <input type=submit name=ok value="Check" /> 39 </td> 40 </tr> 41 </table> 42 </form> =========================================================== Bi 16: Vit ng dng m s ngi online bng php Trong bi ny, chng ta s ni v cch thc xy dng tnh nng thng k s ngi ang ving thm website ca bn. V l chc nng nh, nn ti khng i nhiu v nhng tnh nng ln nh bao nhiu khch, bao nhiu thnh vin,...Ch n thun l qu trnh hin th hin ti c bao nhiu ngi ang thm ving website ca bn. Trc ht, chng ta khi to c s d liu nh sau. (xem li bi bi 9: ngn ng SQL v MYSQL c bn) mysql> create table useronline(tgtmp INT(15) DEFAULT "0" NOT NULL , 2 ip VARCHAR(50) NOT NULL , 3 local VARCHAR(100) NOT NULL, 4 PRIMARY KEY(tgtmp), 5 KEY ip(ip), 1 Trang 57

6 KEY local(local)); tgtmp l thi gian m h truy cp c tnh khi h truy vo trang web . IP l dy s lu thng tin IP ca h khi ving thm website ca chng ta. local l ni lu ng dn m h ang truy cp. Khi ngi dng truy cp vo trang web, chng ta s tin hnh insert thng tin ca h vo c s d liu vi cc tham s c bn nhng trong database. tgtmp c tnh ra bng hm time(). Hm ny s ly ra thi gian hin ti ca ngi truy cp. Tip tc ta li tnh thi gian mi ca h, c tnh bng vic quy c thi gian quy nh. C th y ti cho l 900 giy tng ng vi 15 pht truy cp ca h. 1 <?php 2 $tg=time(); 3 $tgout=900; 4 $tgnew=$tg - $tgout; 5 ?> nh vy nu thi gian lu trong database m nh hn thi gian new ny th chng ta c th hiu rng v khch y ri khi website ca chng ta. C th hn. V d: ti ving thm website l 7h. nh vy h thng s ghi thng tin lc l 7h. Nu sau 1 thi gian ti khng lm g, hoc ti khng truy cp website na th h thng s khng ghi nhn thng tin mi. Nh th nu by gi 8h v tr i 15 pht ti quy c, r rng l thi gian mi hin ti l 7h45, Thi gian ny vn ln hn thi im lu thng tin 7h (7h45 > 7h). Do vy, nu chng tha iu kin th chng ta ch vic xa i cc record trong c s d liu l xong. Vy ta c code kt ni CSDL nh sau:(xem li bi 10: kt hp PHP v MYSQL trong ng dng) 1 <?php $conn=mysql_connect("localhost","root","root") or die("can't 2 connect"); 3 mysql_select_db("online",$conn); 4 ?> Sau ta tin hnh ghi nhn thng tin ngi dng vo CSDL. 1 <?php 2 $sql="insert into useronline(tgtmp,ip,local) Trang 58

values('$tg','$REMOTE_ADDR','$PHP_SELF')"; 3 $query=mysql_query($sql); 4 ?> $REMOTE_ADDR l bin mi trng dng ly ra IP ca ngi truy cp. $PHP_SELF l bin mi trng dng ly ra ng dn m ngi dng ang truy cp. Tip n ta tin hnh xa record khi thi gian thc ln hn thi gian trong c s d liu. 1 <?php 2 $sql="delete from useronline where tgtmp < $tgnew"; 3 $query=mysql_query($sql); 4 ?> Tip tc l cng vic hin th thng tin ra bn ngoi bng cch lit k cc record c trong database. 1 <?php $sql="SELECT DISTINCT ip FROM useronline WHERE 2 local='$PHP_SELF'"; 3 $query=mysql_query($sql); 4 $user = mysql_num_rows($query); 5 ?> DISTINCT l c php cho php lit k cc dng record m khng cho php chng c d liu trng lp nh c php select bnh thng. Vy chng ta s lit k tt c nhng ip ca nhng ai ang truy cp trn trang useronline.php.

Phn vic cui cng cn li l chng ta s xut thng tin y ra trnh duyt. V sau y l ton b ni dung code ca trang useronline.php 01 <?php 02 $tg=time(); 03 $tgout=900; 04 $tgnew=$tg - $tgout; $conn=mysql_connect("localhost","root","root") or 05 die("can't connect"); 06 mysql_select_db("online",$conn); 07 $sql="insert into useronline(tgtmp,ip,local) Trang 59

values('$tg','$REMOTE_ADDR','$PHP_SELF')"; 08 $query=mysql_query($sql); 09 $sql="delete from useronline where tgtmp < $tgnew"; 10 $query=mysql_query($sql); $sql="SELECT DISTINCT ip FROM useronline WHERE 11 local='$PHP_SELF'"; 12 $query=mysql_query($sql); 13 $user = mysql_num_rows($query); 14 echo "user online :$user"; 15 ?> =============================================== Bi 17: Xy dng h thng bnh chn bng PHP v MYSQL lot bi trc, chng ta bn ti cc ng dng qun l ngi s dng, xy dng b m, to m bo mt phng chng nhng ngi c dng xu trn website. Tip theo, trong bi ny chng ta s bn v cch thc xy dng h thng cho php ngi dng bnh chn khi h tin hnh thm ving website ca chng ta. xy dng h thng bnh chn chng ta cn phn tch xem h thng ny cn c bao nhiu bng quan h. A- Phn tch v thit k c s d liu: Trong tnh hung ny chng ta cn 1 bng cu hi v 1 bng cu tr li. Phn tch quan h gia chng ta c: 1 Cu hi c nhiu cu tr li. 1 cu tr li ch dnh cho 1 cu hi. Vy gia 2 bng ny s pht sinh mt kha ngoi, l kha dng lin kt gia hai bng ny.

Vy ta c c php to 2 bng nh sau. Bng cu hi ( question) 1 mysql> create table question(qid INT(10) UNSIGNED NOT NULL Trang 60

AUTO_INCREMENT, 2 -> qtitle VARCHAR(255) NOT NULL, 3 -> qdate DATE NOT NULL DEFAULT '0000-00-00', 4 -> PRIMARY KEY(qid)); Bng cu tr li (anwser) mysql> create table answer(aid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 2 -> qid INT(10) UNSIGNED NOT NULL, 3 -> atitle VARCHAR(255) NOT NULL, 4 -> acount INT(10) NOT NULL DEFAULT '0', 5 -> PRIMARY KEY(aid)); 1 Nhp liu bng CSDL ta c: mysql> Insert into question(qtitle,qdate) values("Ban thay qhonline the nao ?"," 2 2009-10-10"); mysql> Insert into answer(qid,atitle,acount) 3 values("1","Nhin rat dep",0); mysql> Insert into answer(qid,atitle,acount) 4 values("1","Nhin Dep",0); mysql> Insert into answer(qid,atitle,acount) 5 values("1","Nhin Cung duoc",0); mysql> Insert into answer(qid,atitle,acount) 6 values("1","Nhin qua xau",0); B- Xy dng trang bnh chn poll.php 1 Kt ni c s d liu: 1 <?php $conn=mysql_connect("localhost","root","root") or die("can 2 not connect database"); 3 mysql_select_db("poll_exam",$conn); 4 ?> La chn cu hi c trong c s d liu lit k ra trn website, sau ta li tip tc lit k cc cu tr li ca cu hi bng cch s dng du chn la (radio). Nh vy chng ta s phi chy cng lc 2 cu truy vn lng nhau trong sut qu trnh truy xut. 01 <?php 02 $sql="select * from question order by qid desc"; 03 $query=mysql_query($sql); 04 if(mysql_num_rows($query) > 0) Trang 61

05 { 06 $row=mysql_fetch_array($query); 07 $qid=$row[qid]; echo "<form action="poll.php?questionid=$qid" 08 method="post" >"; 09 echo "<h2>$row[qtitle]</h2>"; $sql2="select * from answer where qid='".$qid."' order by 10 aid"; 11 $query2=mysql_query($sql2); 12 if(mysql_num_rows($query2) > 0) 13 { 14 while($row2=mysql_fetch_array($query2)){ echo "<input type=radio name=answer 15 value=$row2[aid]>$row2[atitle]<br />"; 16 } 17 } 18 echo "<input type=submit name=ok value="Binh Chon">"; 19 echo "<a href=result.php?questionid=$qid>Xem Ket Qua</a>"; 20 echo "</form>"; 21 } 22 ?> V mn hnh s xut ra nh hnh bn di

V khi ngi dng nht nt Bnh chn, chng ta s gi li chnh trang x l d liu m ngi dng va la chn. Vy ta phi s dng lnh isset() kim tra xem ngi dng c nhn nt bnh chn khng, tip n ta ly ra id m ngi dng va tin hnh chn form bn di. Cui cng ta cp nht d liu bng cch ly s trong c s d liu cng tip cho 1 n v na. V a ngi dng sang trang kt qu. V trong on code ny c lnh header nn chng ta phi t qu trnh x l ny trn form. Nu khng s b li d liu khi gi. 01 <?php Trang 62

02 if(isset($_POST['ok'])) 03 { 04 $id=$_POST['answer']; 05 $qid=$_GET['questionid']; $sql3="update answer set acount=acount + 1 where aid='". 06 $id."'"; 07 mysql_query($sql3); 08 header("location: result.php?questionid=$qid"); 09 exit(); 10 } 11 ?> Vy ton b code ca trang poll.php ny nh sau. 01 <?php $conn=mysql_connect("localhost","root","root") or die("can 02 not connect database"); 03 mysql_select_db("poll_exam",$conn); 04 if(isset($_POST['ok'])) 05 { 06 $id=$_POST['answer']; 07 $qid=$_GET['questionid']; $sql3="update answer set acount=acount + 1 where aid='". 08 $id."'"; 09 mysql_query($sql3); 10 header("location: result.php?questionid=$qid"); 11 exit(); 12 } 13 $sql="select * from question order by qid desc"; 14 $query=mysql_query($sql); 15 if(mysql_num_rows($query) > 0) 16 { 17 $row=mysql_fetch_array($query); 18 $qid=$row[qid]; echo "<form action="poll.php?questionid=$qid" 19 method="post" >"; 20 echo "<h2>$row[qtitle]</h2>"; $sql2="select * from answer where qid='".$qid."' order by 21 aid"; 22 $query2=mysql_query($sql2); 23 if(mysql_num_rows($query2) > 0) 24 { 25 while($row2=mysql_fetch_array($query2)){ echo "<input type=radio name=answer 26 value=$row2[aid]>$row2[atitle]<br />"; Trang 63

27 } 28 } 29 echo "<input type=submit name=ok value="Binh Chon">"; 30 echo "<a href=result.php?questionid=$qid>Xem Ket Qua</a>"; 31 echo "</form>"; 32 } 33 ?> C- Xy dng trang kt qu bnh chn result.php trang ny, ta s ly gi tr question id ca ngi bnh chn t trang poll.php v tnh ton xem t l phn trm ca cc cu hi y nh th no. u tin, ta ly gi tr t poll.php?questionid=1. vy 1 l gi tr ta s c c t $_GET['questionid']. Tip n ta li dng gi tr va ly c ny lit k thng tin cu hi v tnh ton gi tr. tnh ton gi tr, ta cn bit tng s bnh chn trong ton b cc cu tr li hin nay l bao nhiu. Bng cu lnh SUM ta c th lm c iu . 1 $sql2="select qid, SUM(acount) as total from answer group by qid having qid='".$qid."'";

Cu lnh ny cho php ta ly ra tng s bnh chn trong c s d liu ca cu hi m ta truyn vo. SUM c acount ta cn phi GROUP(gom nhm) chng ta li theo m cu hi m chng ta cn tm. having l mnh theo sau c ngha tng ng vi where, n thng c s dng theo GROUP. Nh vy ly ra tng s phiu bnh chn ta ch vic thc thi cu truy vn ny, v ly tn ct tm l total. 1 <?php $sql2="select qid, SUM(acount) as total from answer group 2 by qid having qid='".$qid."'"; 3 $query2=mysql_query($sql2); 4 $row2=mysql_fetch_array($query2); 5 $total=$row2[total]; 6 ?> k ti, ta li tnh ton s phiu ca tng cu hi trong c s d liu, da vo tng s cu hi ny. V d: Tng s cu hi l 10 cu 1 l 3 cu 2 l 4 Trang 64

cu 3 l 2 cu 4 l 1 vy suy ra phn trm trn tng s 10 ca 4 cu ny c tnh bng cch ly. s liu ca tng cu chia cho tng s cu hi v nhn cho 100. (3/10)*100 = 30% lm trn kt qu ta s dng hm round(). Gip d liu a v s ng b v r rng nht. Vy code x l ca chng ta nh sau: 01 <?php $sql3="select * from answer where qid='".$qid."' order by 02 aid"; 03 $query3=mysql_query($sql3); 04 if(mysql_num_rows($query3) > 0) 05 { 06 while($row3=mysql_fetch_array($query3)){ 07 $percent=round(($row3[acount]/$total)*100,2); echo "<h4 style="color:red; font:12px verdana; 08 ">$row3[atitle] : $row3[acount] ($percent %)</h4>"; 09 } 10 } 11 ?> Kt qu khi xut ra s c hnh nh sau:

Vy ton b m ngun ca trang result.php ny nh sau: 01 <?php $conn=mysql_connect("localhost","root","root") or die("can 02 not connect database"); 03 mysql_select_db("poll_exam",$conn); 04 if(isset($_GET['questionid'])) Trang 65

05 { 06 $qid=$_GET['questionid']; 07 $sql="select * from question where qid='".$qid."'"; 08 $query=mysql_query($sql); 09 $row=mysql_fetch_array($query); 10 echo "<h2>$row[qtitle]</h2>"; $sql2="select qid, SUM(acount) as total from answer group 11 by qid having qid='".$qid."'"; 12 $query2=mysql_query($sql2); 13 $row2=mysql_fetch_array($query2); 14 $total=$row2[total]; $sql3="select * from answer where qid='".$qid."' order by 15 aid"; 16 $query3=mysql_query($sql3); 17 if(mysql_num_rows($query3) > 0){ 18 while($row3=mysql_fetch_array($query3)){ 19 $percent=round(($row3[acount]/$total)*100,2); echo "<h4 style="color:red; font:12px verdana; 20 ">$row3[atitle] : $row3[acount] ($percent %)</h4>"; 21 } 22 } 23 } 24 ?> Download ton b m ngun ca bi ny ti y. ==================================================== Bi 18: Xy dng ng dng to trang upload nhiu hnh nh nhng bi trc, chng ta c dp nghin cu tng ng dng nh bi vic kt hp PHP v Mysql. Trong bi ny, chng ta s tip tc tm hiu phng php xy dng mt trang upload nhiu hnh nh nh th no. V lu chng vo c s d liu ra sao trong lp trnh php. M hnh ny l rt cn thit i vi cc h thng. Bi qua ngi s dng c th thao tc v upload nhng hnh nh i km vi h thng ca h nh tin tc, sn phm, u tin, ta tin hnh xy dng c s d liu vi bng images nh sau (xem li bi 9: c bn v ngn ng sql v mysql). 1 CREATE TABLE `images` ( `img_id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY 2 KEY , 3 `img_url` VARCHAR( 255 ) NOT NULL , 4 `img_name` VARCHAR( 150 ) NOT NULL 5 ); Trang 66

Nh vy, ti c bng images vi 3 ct thuc tnh l img_id dng lu kha ca tng hnh, img_url dng lu ng dn vo h thng, img_name dng lu tn hnh nh. ng dng ca chng ta cng rt cn s ty bin v d s dng. Sao cho ngi dng c th hon ton thao tc. V d: nu c 2 hnh, h ch mun to ra 2 ch chn file th s ch khai bo l 2. V ngc li nu l n hnh, h s to c n file la chn. lm c iu ny, trc tin ta cn to 1 form nh cho php ngi dng nhp vo s lng file m h mun thao tc. Vy ti khi to file c tn upload.php vi m lnh form nh sau: 1 <form action="upload.php" method="post"> Enter your Image: <input type="text" name="txtnum" value="<? 2 php echo $_POST['txtnum']; ?>" size="10" /> 3 <input type="submit" name="ok_num" value="Accept" /> 4 </form> Sau khi ngi dng nhn nt accept th cng l lc chng ta to ra s field upload theo yu cu ca h. Vy, ta c code x l bn di nh sau: (xem li bi 4: x l gi tr trn form). 01 <?php 02 if(isset($_POST['ok_num'])) 03 { 04 $num=$_POST['txtnum']; 05 echo "<hr />"; 06 echo "Ban dang chon $num file upload<br />"; echo "<form action='doupload.php?file=$num' 07 method='post' enctype='multipart/form-data'>"; 08 for($i=1; $i <= $num; $i++) 09 { echo "<input type='file' name='img[]' 10 /><br />"; 11 } echo "<input type='submit' name='ok_upload' 12 value='Upload' />"; 13 echo "</form>"; 14 } 15 ?> on code ny s dng vng lp for vi iu kin l bin $i s nh hn s file m h nhp vo. ng thi, vic upload thnh cng ti form ta cng cn thm on code : enctype='multipart/form-data'. S lng field s lp theo yu cu ca ngi dng. Do vy. ti name ca th input, ta s s dng mng lu thng tin. S dng name='img[]', c ngha l mi ln lp v mi ln ngi dng chn file th mng img s thm 1 kha tng ng. (xem li bi 6: tng quan v mng v cc hm h tr) Trang 67

V cui cng l nt submit thc thi cng vic upload v gi ti trang doupload.php? file=$num (ch r s file c th do ngi dng nhp ti trang doupload).

Vy ton b code ca trang upload ny s nh sau: 01 <form action="upload.php" method="post"> Enter your Image: <input type="text" name="txtnum" 02 value="<?php echo $_POST['txtnum']; ?>" size="10" /> 03 <input type="submit" name="ok_num" value="Accept" /> 04 </form> 05 <?php 06 if(isset($_POST['ok_num'])) 07 { 08 $num=$_POST['txtnum']; 09 echo "<hr />"; 10 echo "Ban dang chon $num file upload<br />"; echo "<form action='doupload.php?file=$num' 11 method='post' enctype='multipart/form-data'>"; 12 for($i=1; $i <= $num; $i++) 13 { echo "<input type='file' name='img[]' 14 /><br />"; 15 } echo "<input type='submit' name='ok_upload' 16 value='Upload' />"; 17 echo "</form>"; 18 } 19 ?> Ti trang thc hin nhim v doupload.php ta cn kim tra xem, ngi dng c nhn nt upload t trang bn kia hay khng ?. Nu c ta s x l cng on upload y, nu khng ta cn thng bo li cho ngi dng v yu cu h chn file. 01 <<?php 02 if(isset($_POST['ok_upload'])) 03 { 04 //thc thi upload 05 } Trang 68

06 else 07 { 08 echo "Vui long chon hinh truoc khi truy cap vao trang nay"; 09 } 10 ?> Nh vy, khi ngi dng nhn upload, ta s ly c tham s l bin $num t lin kt $_GET[file'] m ta thit lp trn phn form action ca file upload trang trc. Bin $num ny dng thc thi vic upload v tun t ly cc thng tin ca file. upload file t my ln h thng ta cn s dng hm: move_uploaded_file(tn_file_tm,ng dn ti h thng). C th din gii nm na cng vic ca hm ny nh sau: Ngay sau khi ngi dng nhn upload, h thng s to ra 5 tham s ng vi tng file. C th l tn tm (tmp_name), tn gc (name), kch thc (size), nh dng mime (type) v li (error) nu c. V khc vi kiu nhp liu thng thng, khi chng ta s dng <input type=file name=ten> th lc ny s pht sinh mt bin mi trng mi l $_FILES[ten'] v d nhin n s i km vi 5 tham s c th trn. V d: $_FILES[ten'][name'] //Ly ra tn gc ca file. Vy ng vi c php upload trn ta s c: move_uploaded_file($_FILES['img']['tmp_name'],"data/".$_FILES['img']['name']); C php ny s t ng upload hnh nh ln th mc data trn h thng. Vy ta cn phi to th mc data ngang cp vi 2 file upload v doupload. Nu l host tht, bn cn CHMOD th mc l 777 (cho php th mc c ton quyn) th mi thc thi upload file c. Trong tnh hung ca chng ta, v l upload mt lc nhiu file, nn lc ny ta phi s dng tham s mng ti trang upload ta khi to. Vy ng vi bin $num ta nhn t upload trn ta s trin khai code n gin nh sau: 1 <?php 2 for($i=0; $i< $num; $i++) 3 { move_uploaded_file($_FILES['img']['tmp_name'][$i],"data/". 4 $_FILES['img']['name'][$i]); 5 $url="data/".$_FILES['img']['name'][$i]; 6 $name=$_FILES['img']['name'][$i]; Trang 69

7} 8 ?> Vi bin $i l s lng tng ln theo vng lp. V mng lun bt u bi kha l 0 nn ta cn phi thit lp khi to bin $i vi gi tr l 0. Bin $url v $name l ng dn hnh nh v tn gc ca tm hnh c s dng lu vo CSDL. K ti, ta cn lu thng tin hnh nh tng ng vo c s d liu. lm c iu ny, ta cn kt ni CSDL vi c php sau: (xem li bi 10: kt hp php & mysql trong ng dng website). 1 <?php $conn=mysql_connect("localhost","root","root") or die("can't 2 connect your database"); 3 mysql_select_db("images",$conn); 4 ?> Nh vy mi khi upload thnh cng mt hnh nh, ta phi thm hnh nh vo CSDL nh sau: 1 <?php $sql="insert into images(img_url,img_name) 2 values('$url','$name')"; 3 mysql_query($sql); 4 ?> Sau khi thm vo CSDL ta cn hin th thng tin v hnh nh va upload cho ngi dng bit h upload thnh cng. Khi ta s dng mt bin $site lu ng dn gc hin th trn textbox.

Vy hon chnh code cho file doupload.php ny nh sau: Trang 70

01 <?php 02 $site="http://www.qhonline.info"; 03 if(isset($_POST['ok_upload'])) 04 { 05 $num=$_GET['file']; echo "<h3>Demo Images Script - Copyright by 06 QHOnline.Info</h3>"; $conn=mysql_connect("localhost","root","root") or 07 die("can't connect your database"); 08 mysql_select_db("images",$conn); 09 for($i=0; $i< $num; $i++) 10 { 1 move_uploaded_file($_FILES['img']['tmp_name'] 1 [$i],"data/".$_FILES['img']['name'][$i]); 12 $url="data/".$_FILES['img']['name'][$i]; 13 $name=$_FILES['img']['name'][$i]; $sql="insert into images(img_url,img_name) 14 values('$url','$name')"; 15 mysql_query($sql); 16 echo "Upload Thanh cong file <b>$name</b><br />"; 17 echo "<img src='$url' width='120' /><br />"; echo "Images URL: <input type='text' name='link' 18 value='$site/$url' size='35' /><br />"; 19 20 } 21 mysql_close($conn); 22 } 23 else 24 { echo "Vui long chon hinh truoc khi truy cap vao trang 25 nay"; 26 } 27 ?> Download ton b m ngun ca bi ny ti y. ===================================================== Bi 19: Vit ng dng to gi hng - shopping cart - phn 1 nhng bi trc, chng ta cp ti cc ng dng c bn, gn gi vi mi trng lm vic ca chng ta. Trong bi ny, ti s tip tc hng dn cc bn xy dng h thng gi hng (shopping cart) mt ng dng ph bin rt thng gp trn cc website cung cp sn phm hin nay. N gn nh c thay th cho vic mua sm, vic la chn th cng m chng ta vn thng lm. Trang 71

Do ni dung v kin thc ca bi ny kh di, nn ti s trnh by bi vit ny 2 phn, gip cc bn d theo di v d nm bt cc kin thc m ti cp v ng dng. Phn 1: Xy dng trang hin th sn phm. u tin, ta khi to bng CSDL n gin nh sau (xem li bi 9: c bn v ngn ng sql v mysql) 1 CREATE TABLE `books` ( 2 `id` int(10) unsigned NOT NULL auto_increment, 3 `title` varchar(255) NOT NULL, 4 `author` varchar(100) NOT NULL, 5 `price` int(30) NOT NULL, 6 PRIMARY KEY (`id`) 7 ); trn l mt bng lu thng tin ca cc quyn sch vi tn, tc gi, gi tin ca cc quyn sch. 1 INSERT INTO `books` VALUES (1, 'PHP Can Ban', 'Kenny', 115); 2 INSERT INTO `books` VALUES (2, 'PHP Nang Cao', 'Kenny', 150); INSERT INTO `books` VALUES (3, 'PHP Framework', 'Kenny', 3 300); INSERT INTO `books` VALUES (4, 'Joomla Can Ban', 'Kenny', 4 100); Tip tc ta to file style.css trnh by d liu p mt 01 body{ 02 font:12px verdana; 03 } 04 .pro{ 05 border:1px solid #999999; 06 margin:5px; 07 padding:5px; 08 width:400px; 09 } 10 a{ 11 color:#666666; 12 text-decoration:none; 13 font-weight:900; 14 } 15 #cart{ 16 border:1px solid #999999; 17 margin:5px; 18 padding:5px; 19 width:400px; 20 text-align:center; Trang 72

21 } Sau khi hon tt vic chun b c s d liu v giao din, tip theo ta s xy dng trang hin th cc mn hng trn website, cho php ngi s dng la chn sch khi truy cp. lit k danh sch cc quyn sch ang c trong database, ta cn kt ni CSDL vi thao tc code nh sau. (xem li bi 10: kt hp php & mysql trong ng dng website). 1 <?php $conn=mysql_connect("localhost","root","root") or die("can't 2 connect your database"); 3 mysql_select_db("images",$conn); 4 ?> Lc ny, ta c th lit k cc quyn sch bng c php sau: 1 <?php 2 $connect=mysql_connect("localhost","root","root") 3 or die("Can not connect database"); 4 mysql_select_db("shop",$connect); 5 ?> Lc ny, ta c th lit k cc quyn sch bng c php sau: 01 <?php 02 $sql="select * from books order by id desc"; 03 $query=mysql_query($sql); 04 if(mysql_num_rows($query) > 0) 05 { 06 while($row=mysql_fetch_array($query)) 07 { 08 echo "<div class=pro>"; 09 echo "<h3>$row[title]</h3>"; echo "Tac Gia: $row[author] - Gia: 10 ".number_format($row[price],3)." VND<br />"; echo "<p align=right><a href=addcart.php? 11 item=$row[id]>Mua Sach Nay</a></p>"; 12 echo "</div>"; 13 } 14 } 15 ?> on code trn thc thi vic hin th sch nu trong CSDL t nht 1 record. V chng s lit k tiu sch, tc gi, gi tin. y, ti s dng number_format() ly ra 3 s 000 cui, ng vi n v tin t ca Vit Nam l VN.

Trang 73

Sau cng ti to mt lin kt cho php thm quyn sch vo gi hng nu ngi mua cm thy ng . (addcart.php s l trang thm vo gi hng vi tham s l m ca quyn sch).

Ni n ng dng shopping cart th hin nay, trn th trng tn ti nhiu phng php code. C th s dng chui lu gi hng, cng c th lu vo CSDL nhp gi hng ca ngi dng v cng c th s dng mng v session lu thng tin gi hng. Trong khun kh bi vit ny, ti s s dng session v mng lu thng tin gi hng. (xem li Bi 7: Khi nim c bn v Cookie v session trong PHP) Ti trang addcart.php ti cn khi to mt session v lu m quyn sch vo mt mng. C th l: $_SESSION[cart'][$id] (xem li bi 6: tng quan v mng v cc hm h tr). Vi $id l m quyn sch m ngi dng chn trang xem hng ha (index.php). Mc ch chnh ca trang addcart ny l lu tr hoc tnh ton li s lng sn phm khi m h la chn. (lu l s lng cc mn hng). Mt vn t ra trong trang ny, l lm th no nhn bit mn hng ngi chn hay cha. Chng hn. Ln u ti chn mua quyn A, sau ti quay li chn mua tip quyn A. vy trong gi hng phi ghi nhn s lng quyn A ny l 2. Ch khng th ch lu l 1 c. Vy, lc ny ta s kim tra xem. Quyn sch m ta va chn c tn ti trong gi hng hay cha. Nu c, ta phi tin hng ly s lng ang c tng ln 1 n v. Cn nu khng, ta phi gn s lng ca chng l 1. Code x l hon chnh trang addcart ny s nh sau: 01 <?php 02 session_start(); 03 session_register("cart"); 04 $id=$_GET['item']; 05 if(isset($_SESSION['cart'][$id])) 06 { 07 $qty = $_SESSION['cart'][$id] + 1; 08 } 09 else 10 { 11 $qty=1; Trang 74

12 } 13 $_SESSION['cart'][$id]=$qty; 14 header("location:cart.php"); 15 exit(); 16 ?> Nm na, chng ta c th hiu addcart ch n gin l x l s lng hng ha v lu chng dng mng m thi. Nh vy ti trang mua sch, ta cng cn cho khch hng bit rng trong gi hng ca h hin ang c bao nhiu mn hng. Hoc nu cha c mn no, ta cng phi bo cho h bit v vic . Vy khi no th gi hng rng ?. l khi session ca gi hng khng tn ti Id ca quyn sch no. C th, $_SESSION[cart'][id]. Khi id khng tn ti trong session ny th cng l lc gi hng khng tn ti. Vy trc khi cho hin th gi hng, ta cn kim tra xem c tn ti id no trong gi hng hay khng. V v id lu dng mng a chiu, nn ta cn dng vng lp duyt mng foreach. foreach($_SESSION[cart'] as $k=>$v) Vi $k c ngha tng ng $id quyn sch v $v tng ng l s lng ca quyn sch trong gi hng. Vy nu tn ti bin $k, th tc c ngha l trong gi hng c sch. Khi ta s dng mt bin bo hiu rng sch c tn ti trong gi hng hay khng. 01 <?php 02 if(isset($_SESSION['cart'])) 03 { 04 foreach($_SESSION['cart'] as $k=>$v) 05 { 06 if(isset($k)) 07 { 08 $ok=2; 09 } 10 } 11 } 12 if ($ok != 2) 13 { 14 echo '<p>Ban khong co mon hang nao trong gio hang</p>'; 15 } else { 16 $items = $_SESSION['cart']; echo '<p>Ban dang co <a href="cart.php">'.count($items).' 17 mon hang trong gio hang</a></p>'; 18 } Trang 75

19 ?> Trong on code trn ta s dng hm count nhm m xem trong mng hin ti (gi hng) hin ang c bao nhiu quyn sch. V thc thi vic bo cho ngi dng bit h ang c bao nhiu quyn sch trong gi hng. Ton b code x l ca trang mua sch (index.php) ny nh sau: view source print? 01 <?php 02 session_start(); 03 ?> 04 <html> 05 <head> 06 <title>Demo Shopping Cart - Created By My Kenny</title> 07 <link rel="stylesheet" href="style.css" /> 08 </head> 09 <body> 10 <h1>Demo Shopping Cart</h1> 11 <div id=cart> 12 <? 13 if(isset($_SESSION['cart'])) 14 { 15 foreach($_SESSION['cart'] as $k=>$v) 16 { 17 if(isset($v)) 18 { 19 $ok=2; 20 } 21 } 22 } 23 if ($ok != 2) 24 { 25 echo '<p>Ban khong co mon hang nao trong gio hang</p>'; 26 } else { 27 $items = $_SESSION['cart']; echo '<p>Ban dang co <a href="cart.php">'.count($items).' 28 mon hang trong gio hang</a></p>'; 29 } 30 ?> 31 </div> 32 <? 33 $connect=mysql_connect("localhost","root","root") 34 or die("Can not connect database"); 35 mysql_select_db("shop",$connect); Trang 76

36 $sql="select * from books order by id desc"; 37 $query=mysql_query($sql); 38 if(mysql_num_rows($query) > 0) 39 { 40 while($row=mysql_fetch_array($query)) 41 { 42 echo "<div class=pro>"; 43 echo "<h3>$row[title]</h3>"; echo "Tac Gia: $row[author] - Gia: 44 ".number_format($row[price],3)." VND<br />"; echo "<p align=right><a href=addcart.php? 45 item=$row[id]>Mua Sach Nay</a></p>"; 46 echo "</div>"; 47 } 48 } 49 50 ?> 51 </body> 52 </html> Nh vy, trong bi ny chng ta hon tt trang xem sch v trang x l vic thm sn phm mi vo gi hng nh th no. Mi cc bn c tip bi sau vi tnh nng qun l, sa, xa tng mn hng hoc c gi hng trong h thng. ==================================================== Bi 20: Vit ng dng to gi hng - shopping cart - phn 2 phn 1 ti trnh by phn hin th thng tin sch c trong c s d liu, chu trnh thc thi ca vic thm mt quyn sch vo gi hng. V c ch qun l gi hng ca chng ta nh th no. Tip tc vi phn 2, ti s trnh by cch qun l gi hng nh chnh sa mn hng, lit k hng ha trong gi hng v xa b tng mn hng hay c gi hng nh th no. c th hiu c phn 2. Cc bn vui lng xem li bi 19: Vit ng dng to gi hng shopping cart phn 1. Phn 2: Xy dng h thng qun l gi hng. Sau khi thm mt mn hng, ti gi hng ta cng cn phi x l hin th cc mn hng c trong gi. V nh phng php phn 1, chng ta tm lu m sch trong session. (xem li Bi 7: Khi nim c bn v Cookie v session trong PHP) . Vy trang gi hng ny, ta s khi to session v s dng vng lp duyt mng foreach lp ton b m sch ang lu trong session. Tip tc, ta li chuyn chng sang dng chui bng hm implode(). 1 <?php 2 Session_start(); 3 Foreach($_SESSION['cart'] as $key=>$value) 4{ Trang 77

5 $item[]=$key; 6} 7 $str=implode(",",$item); 8 ?> Gi s lc ny chui ca chng ta s c dng 7,8,9. Cng vic tip theo l kt ni CSDL lit k cc sn phm c m nh trn. (xem li bi 10: kt hp php & mysql trong ng dng website). Thay v s dng select * from tn_bng where id= ??. Th ti u hn, ti s s dng php in trong SQL. Lc ny cu truy vn s tng ng: 1 <?php $sql="select * from books where id in ('$str') order by id 2 desc"; 3 $query=mysql_query($sql); 4 while($row=mysql_fetch_array($query)) 5 ?> Tip tc, ta lp ton b thng tin sch bao gm tn, tc gi, gi tin v c s lng m ta lu trong session l $_SESSION['cart'][ 'ID_Mn_Hng']. ID_Mn_hng chnh l thng tin ta lp ra t CSDL ($row[id]). Bn cnh ti phn s lng, ta s a gi tr lu session ra textbox (v ti gi hng, ngi dng c php iu chnh s lng, nn lc ny ta cn to textbox cho h iu chnh). V lp ton b cc quyn sch nn ti tn tn ca textbox s lng ta cng cn truyn id nhn bit s lng thuc ID ca quyn sch no. 1 <?php echo "<p align=right>So Luong: <input type=text 2 name=qty[$row[id]] size=5 value={$_SESSION['cart'] [$row[id]]}> - "; 3 ?> Chng ta cng cho ngi dng c php xa 1 mn hng no ra khi gi hng ca h. Bng cch truyn m quyn sch ca tng quyn vo lin kt delcart.php. 1 <?php echo "<a href=delcart.php?productid=$row[id]>Xoa Sach 2 Nay</a></p>"; 3 ?> Ti y, ta cng cn tnh lun gi tin ca tng quyn sch tng ng vi s lng m h chn. Nh vy, s lng l phn ta lu session, cn gi tin l phn ta ly ra t CSDL ng vi mng $row ($row['price']). 1 <?php echo "<p align=right> Gia tien cho mon hang: ". 2 number_format($_SESSION['cart'][$row[id]]*$row[price],3) ." VND</p>"; 3 ?> Sau cng, ta cn tnh tng tin ca ton b sn phm c trong gi hng. Bng cch cng dn tng gi tin ca tng mn. Trang 78

1 <?php 2 $total+=$_SESSION['cart'][$row[id]]*$row[price]; 3 ?> Phn cn li, l chng ta hin th gi tin vi ng nh dng VND ca Vit Nam. 1 <?php echo "<b>Tong tien cho cac mon hang: <font color=red>". 2 number_format($total,3)." VND</font></b>"; 3 ?> ng thi, ta cng to nt cho php ngi dng cp nht. V cho php ngi dng xa ton b gi hng. 1 <?php echo "<input type="submit" name=submit value="Cap Nhat Gio 2 Hang">"; 3 echo "<div class=pro align=center>"; echo "<b><a href=index.php>Mua Sach Tiep</a> - <a 4 href=delcart.php?productid=0>Xoa Bo Gio Hang</a></b>"; 5 ?> Nh vy, code y s l: 01 <?php 02 echo "<form action=cart.php method=post>"; 03 foreach($_SESSION['cart'] as $key=>$value) 04 { 05 $item[]=$key; 06 } 07 $str=implode(",",$item); $connect=mysql_connect("localhost","root","root") or 08 die("Can not connect database"); 09 mysql_select_db("shop",$connect); 10 $sql="select * from books where id in ($str)"; 11 $query=mysql_query($sql); 12 while($row=mysql_fetch_array($query)) 13 { 14 echo "<div class=pro>"; 15 echo "<h3>$row[title]</h3>"; echo "Tac gia: $row[author] - Gia: 16 ".number_format($row[price],3)." VND<br />"; echo "<p align=right>So Luong: <input type=text 17 name=qty[$row[id]] size=5 value={$_SESSION['cart'] [$row[id]]}> - "; echo "<a href=delcart.php?productid=$row[id]>Xoa Sach 18 Nay</a></p>"; echo "<p align=right> Gia tien cho mon hang: ". 19 number_format($_SESSION['cart'] [$row[id]]*$row[price],3) ." VND</p>"; 20 echo "</div>"; Trang 79

21 $total+=$_SESSION['cart'][$row[id]]*$row[price]; 22 } 23 echo "<div class=pro align=right>"; echo "<b>Tong tien cho cac mon hang: <font color=red>". 24 number_format($total,3)." VND</font></b>"; 25 echo "</div>"; echo "<input type="submit" name=submit value="Cap Nhat Gio 26 Hang">"; 27 echo "<div class=pro align=center>"; echo "<b><a href=index.php>Mua Sach Tiep</a> - <a 28 href=delcart.php?productid=0>Xoa Bo Gio Hang</a></b>"; 29 echo "</div>"; 30 ?> Sau khi thit lp thnh cng trang gi hng c bn, lc ny ta c th thm sch mt cch d dng. Tuy nhin, gi s trong trng hp khng c sch th sao ?. Chng ta vn cha xt n trng hp gi hng rng th s nh th no. Vy khi no th gi hng rng ?. l khi session ca gi hng khng tn ti Id ca quyn sch no. C th, $_SESSION[cart'][id]. Khi id khng tn ti trong session ny th cng l lc gi hng khng tn ti.

Vy trc khi cho hin th gi hng, ta cn kim tra xem c tn ti id no trong gi hng hay khng. V v id lu dng mng a chiu, nn ta cn dng vng lp duyt mng foreach. foreach($_SESSION[cart] as $k=>$v)

Trang 80

Vi $k c ngha tng ng $id quyn sch v $v tng ng l s lng ca quyn sch trong gi hng. Vy nu tn ti bin $k, th tc c ngha l trong gi hng c sch. 01 <?php 02 $ok=1; 03 if(isset($_SESSION['cart'])) 04 { 05 foreach($_SESSION['cart'] as $k => $v) 06 { 07 if(isset($k)) 08 { 09 $ok=2; 10 } 11 } 12 } 13 if($ok == 2) 14 { 15 // code x l gi hng trn. 16 } 17 ?> on code ny, ta s dng bin $ok lm bin kim tra, mc nh khi load d liu bin $ok s bng 1. V khi trong gi hng tn ti sch th chng ta s thay i bin $ok thnh 2. V gi gi hng nh code trn. phn trn, ta cng c cp khi ngi dng tin hnh chnh sa s lng tng mn hng n l qua textbox v nhn cp nhn th h thng s tin hnh chnh sa li thng tin gi hng. Vy chng ta s x l nh th no cho trng hp . Nu ch , cc bn s thy dng code cha textbox cho php ngi dng nhp s lng c mt tham s c bit l name=qty[$row[id]]. Vy tham s ny c dng lm g ?. Tham s ny, ni cho chng ta bit s lng ang hin th l thuc m sn phm no. Vy khi tin hnh cp nht gi hng ta s kim tra, nu $qty[$row[id]] m c gi tr l 0. Tc l ngi mun xa b gi hng. Ngc li, ta ch vic cp nht gi hng $id tng ng vi s lng nhp textbox. 01 <?php 02 if(isset($_POST['submit'])) 03 { 04 foreach($_POST['qty'] as $key=>$value) 05 { 06 if( ($value == 0) and (is_numeric($value))) 07 { 08 unset ($_SESSION['cart'][$key]); Trang 81

09 } 10 elseif(($value > 0) and (is_numeric($value))) 11 { 12 $_SESSION['cart'][$key]=$value; 13 } 14 } 15 header("location:cart.php"); 16 } 17 ?> Vic xa mn hng trn ch n gin l hy b session ca id . Vic cp nht s lng ch n gin l gn s lng ngi nhp (th value trong textbox) vo s lng ang lu trong session. Vy code hon chnh ca trang cart.php ny s nh sau: 01 <?php 02 if(isset($_POST['submit'])) 03 { 04 foreach($_POST['qty'] as $key=>$value) 05 { 06 if( ($value == 0) and (is_numeric($value))) 07 { 08 unset ($_SESSION['cart'][$key]); 09 } 10 elseif(($value > 0) and (is_numeric($value))) 11 { 12 $_SESSION['cart'][$key]=$value; 13 } 14 } 15 header("location:cart.php"); 16 } 17 ?> 18 <html> 19 <head> 20 <title>Demo Shopping Cart - Created By My Kenny</title> 21 <link rel="stylesheet" href="style.css" /> 22 </head> 23 <body> 24 <h1>Demo Shopping Cart</h1> 25 <? 26 $ok=1; 27 if(isset($_SESSION['cart'])) 28 { 29 foreach($_SESSION['cart'] as $k => $v) 30 { Trang 82

31 if(isset($k)) 32 { 33 $ok=2; 34 } 35 } 36 } 37 if($ok == 2) 38 { 39 40 echo "<form action=cart.php method=post>"; 41 foreach($_SESSION['cart'] as $key=>$value) 42 { 43 $item[]=$key; 44 } 45 $str=implode(",",$item); $connect=mysql_connect("localhost","root","root") or 46 die("Can not connect database"); 47 mysql_select_db("shop",$connect); 48 session_start(); 49 $sql="select * from books where id in ($str)"; 50 $query=mysql_query($sql); 51 while($row=mysql_fetch_array($query)) 52 { 53 echo "<div class=pro>"; 54 echo "<h3>$row[title]</h3>"; echo "Tac gia: $row[author] - Gia: 55 ".number_format($row[price],3)." VND<br />"; echo "<p align=right>So Luong: <input type=text 56 name=qty[$row[id]] size=5 value={$_SESSION['cart'] [$row[id]]}> - "; echo "<a href=delcart.php?productid=$row[id]>Xoa Sach 57 Nay</a></p>"; echo "<p align=right> Gia tien cho mon hang: ". 58 number_format($_SESSION['cart'] [$row[id]]*$row[price],3) ." VND</p>"; 59 echo "</div>"; 60 $total+=$_SESSION['cart'][$row[id]]*$row[price]; 61 } 62 echo "<div class=pro align=right>"; echo "<b>Tong tien cho cac mon hang: <font color=red>". 63 number_format($total,3)." VND</font></b>"; 64 echo "</div>"; echo "<input type="submit" name=submit value="Cap Nhat 65 Gio Hang">"; Trang 83

66

echo "<div class=pro align=center>"; echo "<b><a href=index.php>Mua Sach Tiep</a> - <a 67 href=delcart.php?productid=0>Xoa Bo Gio Hang</a></b>"; 68 echo "</div>"; 69 } 70 else 71 { 72 echo "<div class=pro>"; echo '<p align=center>Ban khong co mon hang nao trong gio 73 hang<br /><a href=index.php>Buy Ebook</a></p>'; 74 echo "</div>"; 75 } 76 ?> 77 </body> 78 </html> V cui cng, khi ngi dng nhn xa ton b gi hng hay ch xa mt mn hng, ta s gi ti trang delcart.php. Vy trang ny s x l nh th no ?. Ti y, ta c th nhn tham s l: $_GET[productid']; Tham s ny s l $id m chng truyn qua lin kt. Nu xa ton b gi hng, tc ta s truyn cho n gi tr bng 0. Lc ny, ta s hy ton b $_SESSION[cart']. Ngc li, nu l mt $id c th, th ta ch xa mn hng m thi. $_SESSION[cart'] [$id]. Code hon chnh ca file delcart.php nh sau: 01 <?php 02 session_start(); 03 $cart=$_SESSION['cart']; 04 $id=$_GET['productid']; 05 if($id == 0) 06 { 07 unset($_SESSION['cart']); 08 } 09 else 10 { 11 unset($_SESSION['cart'][$id]); 12 } 13 header("location:cart.php"); 14 exit(); 15 ?> Download ton b m ngun ca bi ny ti y. ========================================================= Trang 84

Trang 85

You might also like