You are on page 1of 27

TI LIU HNG DN V LP TRNH PHP & MYSQL I.PHP l g?

PHP l mt ngn ng lp trnh kiu script, chy trn Server v tr v m HTML cho trnh duyt. PHP gn nh tr thnh mt ngn ng lp trnh Web rt ph bin trn mng hin nay. PHP l ch vit tt ca cm t "PHP Hypertext Preprocessor", tm dch l ngn ng tin x l cc siu vn bn. Cc m lnh PHP c nhng vo cc trang web, cc trang ny thng c phn m rng l .php, .php3, .php4. Khi client gi yu cu "cn ti cc trang ny v" n web server, u tin web server s phn tch v thi hnh cc m lnh PHP c nhng trong, sau tr v mt trang web kt qu c x l cho client. Bn c th hi, ti sau c nhiu tu chn nh ASP, Cold Fusion, Perl, Java, Python nhng chng ta li chn PHP? V cu tr li l: bi n l mt ngn ng rt d dng, d hc, c php lnh n gin, cc bin khng cn phi khai bo trc khi dng, t ng p kiu(typecast), chy nhanh, tp hm built-in rt phong ph, c m ngun m

II.Cc cch lm vic vi PHP:


C 4 cch dng PHP:
i. ii. iii. <? echo ("this is the simplest, an SGML processing instruction\n"); ?> <?php echo("if you want to serve XML documents, do like this\n"); ?> <script language="php"> to have a U. echo ("some editors don't like processing instructions"); </script> <% echo ("You may optionally use ASP-style tags"); %> <%= $variable; # This is a shortcut for "<%echo .." %>

iv.

Cch i ch c th s dng nu nhng tag ngn c cho php s dng. C th sa short_open_tag trong cu hnh ca php hoc bin dch file .php vi la chn cho php dng cc tag ngn. Tng t nh vy, cch th iv ch c tc dng nu asp_tag c t trong file cu hnh ca PHP.

III.Cc kiu d liu:


PHP h tr tm kiu d liu nguyn thu. Bn kiu thng thng l: boolean, integer, floating-point number(float), string. Hai kiu phc tp l: mng( array) v i tng ( object). V cui cng l hai kiu c bit : resource v NULL. Loi d liu ca bin thng thng khng c gn bi ngi lp trnh m c quyt nh ti thi gian chy ca PHP, ph thuc vo ng cnh m bin c dng. 1. Boolean: y l kiu n gin nht. Mt kiu boolean biu th mt gi tr tht. N c th l TRUE hay FALSE. C php: ch nh mt gi tr boolean, c th s dng t kho TRUE hay l FALSE. C hai u khng phn bit ch hoa hay ch thng. V d: $foo=True; // gn gi tr TRUE cho bin $foo. c th chuyn mt gi tr sang kiu boolean, chng ta c th dng (bool) hay (boolean). Tuy nhin trong hu ht cc trng hp bn khng cn phi s dng vic p kiu ny, bi gi tr s c t ng chuyn nu n l mt ton t, hm hay l cu trc iu khin i hi mt tham s kiu boolean. Ch : -1 c xem l TRUE, ging nh cc gi tr khc 0 khc ( bt k l s dng hay m). 2. Integer: l mt tp hp bao gm cc s {...,-2,-1,0,1,2,...}.
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 1

C php: Integer c th c ch nh trong c s 10, c s thp lc phn hay c s bt phn, tu chn i trc bi du - hay +. Nu bn s dng vi c s bt phn, bn phi theo th t vi 0 ng trc, cn i vi s thp lc phn th 0x.

V d nh sau:
$a $a $a $a = = = = 1234; -123; 0123; 0x1A; # # # # s s s s thp phn m bt phn thp lc phn

Kch thc ca kiu d liu ny l 32bit, v PHP khng h tr kiu unsigned integer. Nu bn ch nh mt s vt qua bin ca kiu d liu integer, n s c xem nh kiu float. Tng t nh vy, khi bn thc hin mt php ton m kt qu tr v l mt s vt qua bin ca kiu integer, th kiu float s c tr v. Tuy nhin, c mt li trong PHP m khng phi bao gi iu ny cng ng, n lin quan n cc s m. Chng hn, khi bn thc hin -50000* $million, kt qu s l 429496728. Tuy nhin, khi c hai ton t u l s dng th khng c vn g xy ra. chuyn mt gi tr sang kiu integer, ta c th dng ton t p kiu (int) hay (integer). Tuy nhin, trong hu ht cc trng hp bn khng cn phi dng ton t p kiu , bi gi tr s c t ng chuyn sang nu ton t, hm hay cu trc iu khin i hi mt i s integer.

3. Kiu s thc (floats,doubles,hay real numbers) : c th c ch nh bng cch s dng mt trong cc c php sau: $a = 1.234; $a = 1.2e3; $a = 7E-10; Kch c ca kiu float ty thuc vo platform, gi tr ln nht l xp x 1.8e308

4. String: l nhng chui cc k t.Trong PHP,mt k t cng tng t nh mt byte,do c chnh xc 256 k t khc nhau.

C php: c th khai bo bng ba cch khc nhau nh sau: Du nhy n: cch d dng nht ch nh mt chui n gin l ng n trong mt du nhy n.V d:echo 'le bao vy'; Du nhy kp: nu chui c ng trong du nhy kp("),PHP hiu s c thm cc chui cho cc k t c bit ..... V d: \n;\t;\\;\$; Heredoc: cc khc phn nh chui l s dng c php ("<<<"). Ch nn cung cp mt nh danh sau <<<, sau l chui v tip l cng tn nh danh ng du nhy. nh danh dng ng phi bt u bng ct u tin ca dng. nh danh c dng phi c tn ging nh trong cc quy lut t tn bin trong PHP.

5. Mng : l mt danh sch cc phn t c cng kiu d liu.Mng c th l mng mt chiu hay nhiu chiu. Mng mt chiu c ch mc: l mng c qun l bng cch s dng ch s di kiu integer biu th v tr ca gi tr yu cu.C php: $name[index1]; V d: mt mng mt chiu c th c to ra nh sau:
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 2

$meat[0]="chicken"; $meat[1]="steak"; $meat[2]="turkey";

Nu bn thc thi dng lnh sau: print $meat[1]; th trn trnh duyt s hin th dng sau: steak. Bn cng c th s dng hm array( ) ca PHP to ra mt mng.V d:
$meat=array("chicken","steak","turkey");

Mng mt chiu kt hp: rt thun li khi dng nh x mt mng s dng cc t hn l s dng cc integer, n gip ta gim bt thi gian v cc m yu cu hin th mt gi tr c th. V d: bn mun ghi li tt c cc thc n v cc cp ru ngon.
$pairings["zinfandel"] = "Broiled Veal Chops"; $pairings["merlot"] = "Baked Ham"; $pairings["sauvignon"] = "Prime Rib";

Mt cch khc l bn c th s dng hm array( ) ca PHP to ra mt mng loi ny, v d nh sau:


$pairings = array( zinfandel => "Broiled Veal Chops", merlot => "Baked Ham",sauvignon => "Prime Rib", sauternes => "Roasted Salmon";

Mng nhiu chiu c ch mc: chc nng ca n cng ging nh mng mt chiu c ch mc, ngoi tr vic n c thm mt mng ch mc c dng ch nh mt phn t. C php: $name[index1] [index2]..[indexN]; Mt mng hai chiu c ch mc c to ra nh sau:
$position = $chess_board[5][4];

Mng a chiu kt hp: kh hu ch trong PHP. Gi s bn mun ghi li cc cp ru-thc n, khng ch loi ru, m c nh sn xut. Bn c th thc hin nh sau:
$pairings["Martinelli"] ["zinfandel"] = "Broiled Veal Chops"; $pairings["Beringer"] ["merlot"] = "Baked Ham"; $pairings["Jarvis"] ["sauvignon"] = "Prime Rib";

6. Object: bn c th xem object nh l mt bin m minh ho mt kiu mu template c gi l class. Khi nim ca i tng v lp c s dng nhiu trong ngn ng lp trnh hng i tng OOP. Khng ging nh cc kiu d liu khc trong PHP, object phi c khai bo.iu quan trng l phi nhn ra rng object khng hn g mt minh ho ca mt lp, v hot ng nh l mt khun mu cho vic to cc object c cc c tnh v chc nng c th. Cho nn, lp(class) phi c nh ngha trc khi khai bo mt object. khi to mt i tng, bn s dung cu lnh new minh ho i tng vi mt bin.V d:
<?php class foo{ function do_foo(){ echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); ?>
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 3

7. Resource: l mt bin c bit, cha mt tham chiu n mt resource bn ngoi. Cc resource c to ra v s dng bi cc hm c bit. Gii phng resources: bi do tham chiu m ca h thng c gii thiu trong PHP4 Zendengine, n s t ng pht hin khi mt resource khng cn thit cho lu di. Khi trong trng hp ny, tt c cc resource m c dng cho resource ny c gii phng bi "b phn thu nht rc". Do , him khi tht s cn thit gii phng b nh thng thng bng cch s dng hm free_result().

8. NULL: gi tr NULL c bit dng th hin mt bin khng c gi tr. Mt bin c xem l NULL nu: o N c gn gi tr hng s NULL. o N cha c khi to gi tr no. o N l hm unset( ) Ch thch: unset () l mt hm dng hy b cc bin ch nh. C php: ch c mt loi gi tr ca kiu NULL. Bn c th khai bo nh v d sau: $var=NULL;

IV.Bin trong PHP:


Bin trong PHP c th hin bi du dollar $ v theo sau l tn ca bin. Tn bin khng phn bit ch hoa hay ch thng. Tn bin phi bt u bng mt ch ci hay mt du gch ni_, theo sau l cc ch ci, ch s hay l du gch ni. V d:
var = "Bob"; $Var = "Joe"; echo "$var, $Var";

Trong PHP3 th cc bin phi lun lun c gn gi tr. Cn trong PHP4 th cung cp thm mt cch khc gn gi tr cho bin: gn theo tham chiu. iu ny c ngha l mt bin mi c th tham chiu n mt bin nguyn thu. S thay i ca bin mi s tc ng n bin nguyn thu v ngc li. N cng c ngha l khng c sao chp, do vic kt gn s din ra nhanh hn. thc hin gn bng tham chiu, ch cn thm & u tn ca bin c gn.V d sau s in ra dng 'My name is Bob' hai ln:
<?php $foo = 'Bob'; $bar = &$foo; $bar = "My name is $bar"; echo $bar; echo $foo; ?> // gn gi tr 'Bob' cho $foo // Tham chiu $foo qua $bar. // thay i $bar... // $foo cng b thay i.

Phm vi ca bin: Cc bin trong PHP c th l mt trong bn loi phm vi sau: Bin cc b. Tham s cc hm. Bin ton cc. Bin static. 1) Bin cc b: Mt bin c khai bo trong mt hm th c xem nh l mt bin cc b v n ch c tham chiu trong hm . Bt k vic gn gi tr bn ngoi hm u xem nh l bin hon ton khc vi bin trong hm . Ch khi thot khi hm m bin cc b c khai bo, th bin v gi tr ca n
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 4

s b hu b. Bin cc b c thun li bi n loi b nhng kh nng ca cc tc ng khng d on c lm thay i kt qu t cc bin c th truy cp ton cc.V d:
$x = 4; function assignx () { $x = 0; print "\$x inside function is $x. <br>"; } assignx(); print "\$x outside of function is $x. <br>";

Sau khi thc hin s c cc kt qu nh sau:


$x inside function is 0. $x outside of function is 4.

2) Tham s ca hm: cng ging nh nhiu ngn ng lp trnh khc, trong PHP hm c cha tham s phi khai bo cc tham s trong phn u ca hm. Mc du, nhng tham s ny nhn cc gi tr n t bn ngoi hm, nhng chng s ch c th truy cp mt khi hm tn ti. Cc tham s ca hm c khai bo sau tn hm v bn trong du {. V d:
function x10 ($value) { $value = $value * 10; return $value;}

iu quan trng cn phi ch l mc du bn c th truy cp v thao tc vi cc tham s trong hm m n c khai bo, nhng n s b hu b khi hm kt thc thc hin. 3) Bin ton cc: ngc li vi bin cc b, bin ton cc c th c truy cp t bt c phn no trong chng trnh .Tuy nhin, c th chnh sa, bin ton cc phi c khai bo ton cc trong hm m n c chnh sa. khai bo mt bin l ton cc ta t t kho GLOBAL pha trc.V d:
$somevar = 15; function addit() { GLOBAL $somevar; $somevar++; print "Somevar is $somevar"; } addit();

Kt qu ca $somevar l 16. Tuy nhin, nu bn b dng lnh GLOBAL $somevar; th bin $somevar s ch c gi tr l 1, bi bin $somevar c xem nh l bin cc b trong hm addit( ). Mt cch khc khai bo mt bin l ton cc l s dng mng $GLOBALS ca PHP. V du, khai bo bin $somevar l ton cc bng cch s dng mng ny:
$somevar = 15; function addit() { $GLOBALS["somevar"]; $somevar++; } addit(); print "Somevar is $somevar";

4) Bin static: tng phn vi cc bin c khai bo trong cc tham s ca hm s b hu b khi thot khi hm, bin static s khng mt gi tr ca n khi thot khi hm v s gi nguyn gi tr khi hm
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 5

c gi li ln na. Bn c th khai bo mt bin l static bng cch dng t kho STATIC t trc tn bin. V d:
function keep_track() { STATIC $count = 0; $count++; print $count; print "<br>"; } keep_track(); keep_track(); keep_track();

Kt qu l :
1 2 3

Truy cp bin t trnh duyt: Khi dng PHP, cng nh cc phn mm trung gian khc, thng tin c cung cp tu chn da vo tham chiu ngi dng. D nhin thng tin s n thng qua form. Thng tin cng c th n t nhng ni khc, nh cookie hay sessions.

a.Bin form: Mt trong nhng cch ph bin l chuyn bin thng qua form. Mi thnh phn trong form ca chng ta s c gn tn v thuc tnh gi tr. Khi form c submit th name=value s c chuyn n PHP. Chng ta c th chuyn n PHP bi phng php GET hoc POST, ty thuc chng ta chn g trong thuc tnh hnh ng ca form. Mt khi form c submit, nhng thnh phn ca form s t ng tr thnh nhng bin ton cc trong PHP. b.Sessions: PHP cng ging nh ASP v ColdFusion u h tr sessions. Vy sessions l g? V c bn n l mt cch khc duy tr trng thi gia cc trang Web. Chng ta bt u mt sessions bi hm start_session(). Khi PHP s ng k mt session ID duy nht v gi session ID v cho ngi dng thng qua cookie. PHP s to nhng tp p tr trn server c th lu gi du vt ca bt k bin no. Nhng tp ny c cng tn vi session ID. Mt khi session c to chng ta c th ng k bt k bin s no. Gi tr ca n s c gi trn mt tp my ch. V nh vy trong thi gian sng ca session nhng bin ny s c thc hin bi bt c trang no trong cng mt tn min m khng cn truy cp n chng. Tuy nhin c mt s ngi dng khng cho php cookie, khi PHP gi du vt cc session ID qua cc querystring. Chng ta c th lm iu ny bng tay bng cch cho sessiong ID ph thuc queryString, hoc thay i tu chn cu hnh. thm session Id n querystring, ta dng <?=SID?>. N s t ng in ra mt chui nh sau: PHPSESSID=07e935k3kkjr0986s9d89fr9trg8rgrg20
<a href=mypage.php?<?=SID?>>Click my Page</a>

on m sau s ng k mt session ID v gn cho n gi tr l: hello world


<?php session_start(); session_register(my_var); $my_var=hello world; ?>

c.Cookies: Cookies l mt mu thng tin nh c lu tr trn my tnh ngi dng. Mt cookies cha mt on vn bn nh c th c bi my ch Web. Cookies cung cp cch c th gi du vt ngi s dng thng qua mt s dch v. Chng ta phi nh rng Web l mi trng trng thi. My ch Web s khng bit ai yu cu thng tin, cookies s gip chng ta gi thng tin ngi dng khi h di chuyn quanh site. Khi h tn ti , cookies
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 6

tr thnh mt phn ca yu cu HTTP gi n cho my ch Web. Nhng trc ht chng ta cn thit lp mt cookies. Nhng ngi pht trin s lm iu ny, ging nh mi th khc trong PHP, chng rt n gin. Dng hm setcookie() vi nhng tham s theo sau:
setcookie(name, value, time_to_expire, path, domain, security setting);

Vi d:
setcookie(mycookie, my_id, time()+ (60*60*24*30),/,.mydomain.com,0)

Cookie ny thit lp nhng tham s nh sau: o Lu tr tn bin c tn l mycookie. o Gi tr ca bin l my_id. o cookie c gi tr 30 ngy k t ngy thit lp. o cookie c hiu lc trong mi trang ca domain. o N c hiu lc trong mi ch ca tn min mydomain.com o Khng c thit lp an ton c bit

V.Hng s (Constant):
Hng l mt gi tr khng th chnh sa c thng qua vic thc hin chng trnh. Bn c th nh ngha mt hng bng cch dng hm define( ). Mt khi hng c nh ngha, n khng bao gi b thay i. Ch c cc kiu d liu boolean, integer, float, string mi c th cha cc hng. Bn c th nhn gi tr ca mt hng bng cch n gin ch nh tn ca n. Khng ging nh vi bin, bn khng cn khai bo $ trc mt hng. Bn cng c th dng hm constant(), c gi tr ca hng. S dng hm get_defined_constants( ) nhn mt danh sch tt c cc hm c nh ngha. Cc hng c nh ngha trc: PHP cung cp mt lng ln cc hng c nh ngha trc bt k script no cng c th chy c.

VI. Ton t:
Ton t l mt k hiu ch nh mt hot ng trong biu thc.Cc ton t c trong PHP nh sau: Ton t
( ) New ! ~ ++ -@ / * % + - . << >> < <= > >= == != === <> & ^ | && || ?: = += *= /= .= %=&= |= ^= AND XOR OR

Mc ch Thc hin theo yu cu c th t. Minh ho mt object mi. Php Not trong Boolean, Not trong Bitwise. T ng tng, t ng gim Che du li. Chia, nhn, chia ly d. Cng, tr, ni. Dch sang tri, dch sang phi trong Bitwise. So snh nh hn, nh hn hay bng, ln hn, ln hn hay bng. So snh bng, khng bng, ging nhau, khc nhau. Php AND, OR, XOR trong Bitwise. Php AND, OR trong Boolean. Ton t tam phn. Cc ton t gn. Php AND, XOR, OR trong Boolean.

http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL -

Phan4 VII.Cu trc iu khin:


Cc cu lnh iu kin: cc cu lnh ny cho php chng ta phn bit cc khi m lnh m s c thc thi ch khi gp phi cc iu kin no . PHP cung cp hai cu trc lnh iu kin. u tin l if...elseif...else, cho php chng ta c th kim tra mt s lng cc biu thc v thc thi cc cu lnh theo gi tr ca chng. Nu chng ta mong mun kim tra mt biu thc n l vi mt s lng cc gi tr, PHP cng cung cp mt cu trc switch...case m c th lm n gin ho i php ton ny. 1) Cu lnh If: Cu lnh If l mt trong nhng c tnh quan trng nht ca mi ngn ng lp trnh. N cho php thc thi chn la cc dng m lnh ch khi tho mn cc iu kin c th.Chng hn:
if ($country=="ca")echo ("Canada");//Canada c in ra khi bin $country l ca

Nu nhiu hn mt cu lnh c thc hin khi tho mn iu kin th s dng du {} ch ra nhng dng lnh no l nm trong khi if:
//Canada s ch c in nu bin $country l ca if ($country=="ca"){ echo("Canada"); echo("Ottawa"); }

iu kin c kim tra trong du {}phi tr v gi tr Boolean, hoc l true hoc l false. Cng nh bt k iu kin no m khng c tho mn, zero hay l chui rng (""), cc gi tr khng c nh ngha th tt c u tr v gi tr l false. Cc iu kin c th c ni vi nhau bng cc ton t logic and (&&), or(||) v xor.V d nh sau:
if (((4 < 5) && (3 > 2)) xor (5 == 5)) echo ("This will not print");

Cc iu kin phn nhnh: Nu iu kin c kim tra m tr v false, th PHP cho php ta ch ra mt khi lnh khc cn c thc hin bng cch dng t kho else. Mi th trong khi m lnh thc thi iu kin ny c xem nh l mt phn nhnh v mi nhnh phi c nh v trong cc du ngoc nu chc nhiu hn mt dng lnh.V d:
if ($h < 0) { echo ("Negative"); } else { echo ("Positive"); }

PHP cng cung cp t kho elseif kim tra cc iu kin la chn nu iu kin trong cu lnh if l khng ng. Mt s cu lnh elseif c th c s dng vi cu lnh if. Nhnh else cui cng cho php chng ta nh v on m m nn c thc hin nu c iu kin if v elseif u khng ng.
if ($h < 0) { echo ("Negative"); } elseif ($h == 0) { echo ("Zero"); } else { echo ("Positive"); }

Ta cng c th kim tra nhng iu kin hon ton khc nhau khi s dng elseif:
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 8

if ($country == "ca") { // do something ... } elseif ($position == "h") { // do something else ... }

Ch : c hai iu kin trn u l true, nhng ch c nhnh lnh th nht l c thc hin. Cng c th s dng cc cu lnh if lng nhau trong cu lnh if khc.V d:
if ($country == "ca") { if ($position == "h") { echo ("Human resources positions in Canada."); } elseif ($position == "a") { echo ("Accounting positions in Canada."); } }

Cc cu lnh trn cng tng t nh sau:


if ($country == "ca" && $position == "h") { echo ("Human resources positions in Canada."); } elseif ($country == "ca" && $position == "a") { echo ("Accounting positions in Canada."); }

PHP cng cung cp mt c php la chn cho cu lnh if, l if....endif.V d:


if ($country == "ca"): echo ("Canada"); elseif ($country == "cr"): echo ("Costa Rica"); else: echo ("the United States"); endif;

2) Cu lnh switch: c s dng khi mt bin ring r ang c kim tra so vi cc gi tr khc.V d:
switch ($country) { case "ca": echo ("Canada"); break; case "uk": echo ("the United Kingdom"); break; default: echo ("the United States"); }

Khi cu lnh switch thc hin kim tra gi tr ca bin $country v so snh n vi mi mt trong cc gi tr trong cc mnh case. Khi mt gi tr thch hp c tm thy, cc cu lnh kt hp vi case c thc hin cho n khi gp cu lnh break. Cn nu khng tm ra c gi tr thch hp no th cu lnh default s c thc hin. Ch rng lnh switch trong PHP th linh hot hn nhiu so vi hu ht cc ngn ng khc. Khng ging nh C, Java v ngay c JavaScript, cc gi tr case cng c th l mt trong cc loi v hng, bao gm tt c cc s ,cc chui v ngay c cc bin.V d:
$val = 6;$a = 5;$b = 6; switch ($val) { case $a: echo ("five"); break; case $b: echo ("six"); break; default: echo ("$val"); }
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 9

Cc mng v cc i tng ch l nhng loi d liu l khng phi l nhng nhn ng ca case trong PHP. 3). Vng lp: Cc vng lp chnh l cc phng tin ca vic thc thi mt khi m lnh trong mt s ln cho trc hay l cho n khi gp phi mt iu kin nht nh. PHP c hai loi vng lp: vng lp while kim tra iu kin trc hay l sau mi bc tnh lp i lp li v thc hin lp li ch khi iu kin l ng. Mt kiu lp khc l for, trong trng hp ny, s lng bc tnh lp i lp li c qui nh trc khi lp ln u v khng th b thay i. 1. Vng lp while: l cu lnh lp n gin nht. C php tng t nh cu lnh if:
while (condition) { //cc cu lnh }

Mt vng lp while s kim tra mt biu thc Boolean. Nu biu thc l false th on m bn trong du ngoc mc s c b qua. Ngc li, nu c gi tr true th on m bn trong du ngoc mc s c thc hin. Khi gp du } th iu kin kim tra s c thc hin li v nu c gi tr l true th on m trong vng lp s c thc hin li. iu ny s tip tc cho n khi gp phi iu kin . Ch rng iu kin ch c kim tra mi khi bt u vng lp, bi vy ngay khi s chnh xc ca iu kin thay i trong sut on gia ca khi lnh ,th m lnh s vn c thc thi cho n ht. thot khi vo thi im sm hn,ta c th s dng lnh break. V d:
$i = 11; while (--$i) { if (my_function($i) == "error") { break; // dng vng lp! } ++$num_bikes; }

Trong v d ny, nu ta hnh dung rng hm my_function khng tr v bt k li no th vng lp s lp i lp li 10 ln v dng li khi bin $i =0. Cn nu my_function tr v li, th cu lnh break s c thc hin v vng lp s dng li. C nhiu trng hp m chng ta mong mun kt thc ch khi s lp li hin thi ca vng lp khng phi l ton b vng lp ca chnh n. t c iu ny, ta s dng lnh continue.V d:
$i = 11; while (--$i) { if (my_function($i) == "error") { continue; } ++$num_bikes; }

on m ny cng lp i lp li 10 ln nu khng c li no c tr v bi hm my_function. Tuy nhin ti lc ny, nu c li xy ra, vic thc hin s lt qua s lp li k tip ca vng lp, m khng tng bin m $num_bikes.Gi s bin $i vn ln hn 0, vng lp s tip tc nh bnh thng. 2. Vng lp do...while: vng lp ny cng ging nh while, ngoi tr iu kin c kim tra ti cui mi vng lp, thay v l u. iu ny c ngha l vng lp s lun lun thc hin t nht mt ln. V d:
echo ("<SELECT name='num_parts'>\n"); $i = 0; do { echo ("\t<OPTION value=$i>$i</OPTION>\n"); } while (++$i < $total_parts); echo ("</SELECT>\n");

Vi on m trn, gi tr zero lun lun xut hin nh l mt ty chn trong thnh phn <SELECT>, ngay c nu bin $total_parts=0. Cc cu lnh while v do...while thng c dng vi cc ton t tng hay gim iu khin khi no th bt u v dng nh v d trn. Cc bin thng c dng cho mc ch ny i khi c nh ngha nh l cc bin iu khin vng lp.Thng thng s dng cc cu lnh while trong vic c cc records t mt truy vn c s d liu, t cc dng trong mt file hay l t cc nhn t trong mt mng.
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 10

3. Vng lp for: Cu trc ca vng lp for l kh phc tp hn mc du cc vng lp for thng tin li hn cc vng lp while:
for ($i = 1; $i < 11; ++$i) { echo ("$i <BR> \n"); //In t 1 n 10 }

Cu lnh for cha ba biu thc bn trong du ngoc n ca n, phn bit vi nhau bi du chm phy.Biu thc th nht l mt cu lnh gn khi to bin iu khin vng lp. Cu lnh ny c thc thi ch mt ln trc s lp li ln u ca vng lp.Biu thc th hai l biu thc Boolean m c thc thi ti u mi ln lp. Nu gi tr tr v l true th vng lp s tip tc thc hin. Nu l false th vng lp kt thc. Biu thc th ba l mt cu lnh m thc thi ti giai on cui ca mi ln lp ca vng lp. N thng c dng tng hay gim cc bin iu khin vng lp .

VIII.Hm:
y l mt trong nhng thun li nht trong pht trin ng dng. Cc hm cho php bn pht trin vic s dng li v d dng chnh sa cc thnh phn m tht s hu ch khi bn pht trin cc ng dng Web tng t nh trong quan nim v tin ch. Cc kt qu ca hm rt ngn gn, d hiu v d c. Vy hm l g? Hm l mt on cc m lnh vi mt mc ch c th v phi c gn mt tn duy nht. Tn hm c th c gi ti bt k u trong chng trnh, cho php cc on m th hin bi tn ca n c thc hin lp li khi cn thit. y l mt thun li bi cng mt on m lnh ch c vit mt ln nhng c th c chnh sa d dng khi cn thit. To mt hm PHP l mt qu trnh n gin. Bn c th to mt hm ti bt k ni no trong chng trnh PHP. Tuy nhin, cho mc ch t chc bn c th thy rng s thun li khi t tt c cc hm c d nh s s dng trong script ti u mi file script. Mt phng thc khc cho vic t chc hm m c th gim i s d tha ng k v tng vic s dng li l t cc hm trong nhng file ring r( c xem nh l mt th vin). iu ny l thun li bi bn c th dng cc hm lp i lp li trong nhng ng dng khc nhau m khng to ra cc vic copy d tha v do gim bt cc nguy c gy li do vic vit li. Mt hm thng bao gm ba phn phn bit: Tn ca hm. Cp du ngoc ( ) cha cc tham s tu chn nhp vo. Phn thn ca hm,nm trong cp du { }. V d khai bo mt hm sau:
function display_copyright($site_name) { print "Copyright &copy 2000 $site_name. All Rights Reserved."; }

Cc hm lng nhau: Cc hm c th lng nhau. iu ny tht s hu ch cho cc chng trnh ln v nh, khi n thm vo mt mc modul ho khc vo trong ng dng, kt qu s tng ln ng k trong vic qun l m. Quay li vi v d display_copyright trn, bn c th gii hn nhu cu chnh sa ngy thng cng vi vic dng mt hm lng nh ngha trc ca PHP trong hm display_copyright():
function display_copyright($site_name) { print "Copyright &copy". date("Y"). " $site_name. All Rights } Reserved.";

Bn cng c th lng cc khai bo hm trong mt hm khc. Tuy nhin, vic lng mt khai bo hm khng ng rng n s c bo v trong phm vi gii hn m n c khai bo. Hn th na, mt hm c lng vo khng tha k cc tham s nhp vo ca "cha m" n, cc tham s phi c chuyn sang hm c lng ch khi chng c chuyn sang hm khc. Tuy nhin, vic lng cc khai bo hm l tht s hu ch cho cc l do qun l m v m bo s r rng ca t chc m. V d:
function display_footer($site_name) { function display_copyright($site_name) {
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 11

print "Copyright &copy ". date("Y"). " $site_name. All Rights Reserved."; } print "<center> <a href = \"\">home</a> | <a href = \"\">recipes</a> | <a href = \"\">events</a><br> <a href = \"\">tutorials</a> | <a href = \"\">about</a> | <a href = \"\">contact us</a><br>"; display_copyright($site_name); print "</center>"; } $site_name = "PHP Recipes"; display_footer($site_name);

Sau khi thc hin,on script trn s cho kt qu nh sau:


home | recipes | events tutorials | about | contact us

Cc hm lng nhau trong PHP khng c bo v bi vic c gi t bt k on script no trong chng trnh, nhng chng khng th c gi li cho n sau khi cc hm cha m c gi. Vic gi th mt hm lng trc khi gi hm cha m ca n s sinh ra mt thng bo li. Cc gi tr tr v t mt hm: Vic tr v mt gi tr t hm l rt hu ch, n c thc hin bng cch gn gi tr gi hm cho mt bin. Bt k kiu d liu no cng c tr v t mt hm bao gm c kiu mng v danh sch. V d: xy dng mt hm tnh thu bn hng
$price = 24.99; $tax = .06; function calculate_cost($tax, $price) { $sales_tax = $tax; return $price + ($price * $sales_tax); } // ch cch calculate_cost() tr li mt gi tr $total_cost = calculate_cost ($tax, $price); // lm trn bin $total_cost c 2 du chm thp phn. $total_cost = round($total_cost, 2); print "Total cost: ".$total_cost; // $total_cost = 26.49

Hm quy: Hot ng ca mt hm gi li bn thn chnh n nhiu ln tho mn mt vi php ton tht s l mt sc mnh. Nu c s dng mt cch ng n, cc vic gi hm quy c th tit kim c khong trng khng ng v d tha trong mt script v c bit hu ch cho vic thc hin cc th tc lp i lp li. V d s dng mt hm lp quy tnh mt tp hp cc s integer.
function summation ($count) { if ($count != 0) : return $count + summation($count 1); endif; } $sum = summation(10); print "Summation = $sum"; Kt qu ca on m trn s l Summation=55

S dng hm quy c th ci thin tc trong mt chng trnh nu hm c gi thng xuyn.Tuy nhin,phi cn thn khi vit cc th tc quy ,nu m khng ng s dn n vic lp khng dng c. Cc hm c th thay i: Kh nng th v ca PHP l c th thc hin cc hm c th bin i c. Mt hm c kh nng thay i l mt li gi "ng" n hm m tn ca n c xc nh ti thi im thc thi. Mc
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 12

du khng tht s cn thit trong hu ht cc ng dng Web, nhng cc hm c th thay i c th gim kch thc m v phc tp mt cch ng k, thng thng loi b cc cu lnh iu kin if khng cn thit. Ta c th gi hm c th thay i c bng cch gi tn mt bin theo sau l tp cc du ngoc n( ). Trong du ngoc n l tp cc tham s tu chn nhp vo. Hnh thc thng thng ca mt hm c th thay i nh sau: $function_name(); V d :s dng hm c th thay i xc nh cc bin nhp vo.
//thng ip cho ting Italia function italian() { print "Benvenuti al PHP Recipes."; } // thng ip cho ting Anh function english() { print "Welcome to PHP Recipes."; } // gn ngn ng dng l ting Italia $language = "italian"; //thc thi hm c th thay i c. $language();

Xy dng cc th vin hm: Cc th vin hm l mt trong nhng cch hu ch tit kim thi gian khi xy dng cc ng dng. V d, bn c th vit mt lot cc hm cho vic sp xp cc mng. Bn c th s dng li cc hm ny trong cc ng dng khc nhau. Hn l vic thng xuyn vit li hay copy v dn cc hm ny vo cc script mi, n tht s tin li khi t tt c cc hm lin quan n vic sp xp trong cng mt file phn bit. File ny s cha cc tiu d dng nhn ra,chng hn nh array_sorting.inc. V d nh sau:
<? // file: array_sorting.inc // purpose:th vin cha cc hm dng cho vic sp xp function merge_sort($array, $tmparray, $right, $left) { . . .} function bubble_sort($array, $n) { . . .} function quick_sort($array, $right, $left) { . . .} ?>

Hm th vin array_sorting.inc ny s hot ng nh l mt ch cha cho tt c cc hm sp xp mng. iu ny tht s hu ch bi bn c th t chc cc hm mt cch hiu qu theo mc ch cho php d dng tm kim khi cn thit. Mt khi bn xy dng cho chnh mnh mt th vin hm, bn c th s dng cc cu lnh include() v require() ca PHP cha ton b cc file th vin vo trong mt script do lm cho tt c cc hm u c sn. C php chung ca hai cu lnh ny nh sau:
include(path/filename); require(path/filename);

hay cng c th nh sau:


include "path/filename"; require "path/filename";

"path":ng dn tuyt i hay tng i ca filename. Gi s bn mun dng th vin array_sorting.inc trong mt script.Bn c th d dng thc hin nh sau:
include ("array_sorting.inc");

By gi th bn c th d dng s dng bt k hm no trong array_sorting.inc


$some_array = (50, 42, 35, 46); //s dng phng php sp xp bubble_sort( ) $sorted_array = bubble_sort($some_array, 1);

IX.Classes v Objects
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 13

1. Class: l mt tp hp cc bin v cc hm cng lm vic vi cc bin ny. Mt class c nh ngha theo c php sau:
<?php class Cart { var $items; // Items in our shopping cart function add_item ($artnr, $num) { $this->items[$artnr] += $num; } function remove_item ($artnr, $num) { if ($this->items[$artnr] > $num) { $this->items[$artnr] -= $num; return true; } else { return false; } } } ?>

V d trn nh ngha mt class c tn l Cart, cha cc mng kt hp ca cc article trong mt cart v hai hm dng thm v b cc th ra khi cart ny. Ch : trong PHP 4, ch c cc hng c khi to cho cc bin var mi c cho php khi to cc bin vi cc gi tr khng phi l hng s, bn cn c mt hm khi to c gi mt cch t ng khi object c dng t lp. Chng hn nh hm c gi trong mt hm dng nh sau:

<?php class Cart { var $todays_date = date("Y-m-d"); var $name = $firstname; var $owner = 'Fred ' . 'Jones'; var $items = array("VCR", "TV"); } class Cart { var $todays_date; var $name; var $owner; var $items; function Cart() { $this->todays_date = date("Y-m-d"); $this->name = $GLOBALS['firstname']; /* etc. . . */ } } ?>

2. extends: thng th bn cn cc lp vi cc bin v cc hm tng t cho mt lp tn ti khc. Thc t, rt tt khi bn nh ngha mt lp chung m c s dng trong cc n ca bn v chnh sa lp ny cho thch nghi vi nhu cu ca mi n. thc hin iu ny, cc class c th c m rng t cc class khc.Vic m rng hay dn xut mt lp c tt c cc bin v cc hm ca lp cha ( iu ny c xem l tha k) v nhng g bn thm vo trong nh ngha m rng. Khng ging nh cc ngn ng lp trnh hng i
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 14

tng khc, PHP khng h tr a tha k, cho nn mt lp m rng ch lun lun ph thuc vo mt lp cha ring r ca n. Cc lp c m rng s s dng t kho extends. V d:
class Named_Cart extends Cart{ var $owner; function set_owner ($name){ $this->owner = $name; } } V d trn nh ngha mt lp Named_Cart m c tt c cc bin v cc hm ca lp Cart thm v cng thm cc bin $owener v hm set_owner().

3. Hm dng: l nhng hm trong mt lp m c t ng gi khi bn to ra mt minh ho mi ca mt lp vi t kho new. Trong PHP4, mt lp c xem l hm dng khi n c cng tn vi tn lp m n c nh ngha trong .V d:
class Auto_Cart extends Cart { function Auto_Cart() { $this->add_item ("10", 1); } }

V d trn nh ngha mt lp Auto_Cart m mt Cart c mt hm dng khi to mi khi mt Auto_Cart mi c gi bng t kho new. Cc hm dng c th c cc i s v cc i s ny c th l tu chn. s dng lp m khng c tham s, tt c cc tham s n hm dng nn l tu chn bng cch cung cp cc gi tr mc nh. V d nh sau:
class Constructor_Cart extends Car{ function Constructor_Cart($item = "10", $num = 1){ $this->add_item ($item, $num); } } // Shop the same old boring stuff. $default_cart = new Constructor_Cart; // Shop for real... $different_cart = new Constructor_Cart("20", 17);

Ch : trong PHP4 khi mt lp khng c hm dng th hm dng ca lp cha s c gi nu n tn ti.V d:


class A { function A(){ echo "I am the constructor of A.<br>\n"; } function B() { echo "I am a regular function named B in class A.<br>\n"; echo "I am not a constructor in A.<br>\n"; } } class B extends A{ function C() { echo "I am a regular function.<br>\n"; } } // gi B() nh l mt hm dng $b = new B;

http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL -

15

http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL -

16

GII THIU V H QUN TR C S D LIU MYSQL I. Ti sao li s dng MySQL?


Nu bn ang tm kim mt h thng qun l c s d liu min ph hay l khng t tin, mt vi th c sn bn chn nh: MySQL, mSQL, Postgres. Khi bn so snh MySQL vi cc h thng c s d liu khc, hy ngh v nhng g quan trng nht i vi bn. S thc thi, s h tr, cc c tnh, cc iu kin v cc gii hn ca bn quyn, gi c ca tt c cc nhn t c th thc hin. Vi nhng l do , MySQL c nhiu c im cun ht: Tc : MySQL rt nhanh. Nhng nh pht trin cho rng MySQL l c s d liu nhanh nht m bn c th c. D s dng: MySQL tuy c tnh nng cao nhng thc s l mt h thng c s d liu rt n gin v t phc tp khi ci t v qun tr hn cc h thng ln . Gi thnh: MySQL l min ph cho hu ht cc vic s dng trong mt t chc. H tr ngn ng truy vn: MySQL hiu SQL, l ngn ng ca s chn la cho tt c cc h thng c s d liu hin i. Bn cng c th truy cp MySQL bng cch s dng cc ng dng m h tr ODBC (Open Database Connectivity -mt giao thc giao tip c s d liu c pht trin bi Microsoft). Nng lc: Nhiu client c th truy cp n server trong cng mt thi gian. Cc client c th s dng nhiu c s d liu mt cch ng thi. Bn c th truy cp MySQL tng tc vi s dng mt vi giao din bn c th a vo cc truy vn v xem cc kt qu: cc dng yu cu ca khch hng, cc trnh duyt Web... Kt ni v bo mt: MySQL c ni mng mt cch y , cc c s d liu c th c truy cp t bt k ni no trn Internet do bn c th chia s d liu ca bn vi bt k ai, bt k ni no. Nhng MySQL kim sot quyn truy cp cho nn ngi m khng nn nhn thy d liu ca bn th khng th nhn c. Tnh linh ng: MySQL chy trn nhiu h thng UNIX cng nh khng phi UNIX chng hn nh Windows hay OS/2. MySQL chy c cc vi mi phn cng t cc my PC nh cho n cc my server. S phn phi rng: MySQL rt d dng t c, ch cn s dng trnh duyt web ca bn. Nu bn khng hiu lm th no m n lm vic hay t m v thut ton, bn c th ly m ngun v tm ti n. Nu bn khng thch mt vi ci, bn c th thay i n. S h tr: Bn c th tm thy cc ti nguyn c sn m MySQL h tr. Cng ng MySQL rt c trch nhim. H tr li cc cu hi trn mailing list thng ch trong vi pht. Khi li c pht hin, cc nh pht trin s a ra cch khc phc trong vi ngy, thm ch c khi trong vi gi v cch khc phc s ngay lp tc c sn trn Internet.

II. To c s d liu v ngi dng:


C s d liu MySQL c th h tr cho nhiu c s d liu khc.Thng thng bn s c mt c s d liu cho mi ng dng. To c s d liu: y l phn d nht. Ti du nhc ca dng lnh MySQL, nh : mysql> creat database dbname; dbname: chnh l tn ca c s d liu bn mun to. Khi bn thy mt phn hi ging nh sau: Query OK,1 row affected (0.06 sec). iu ny chng t bn thnh cng trong vic to c s d liu, nu khng c phn hi th bn xem li nh ; cui dng cha. Du ; bo MySQL rng bn hon thnh v yu cu n hy thc hin chnh xc cu lnh.
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 17

Cc ngi dng v cc quyn: Mt h thng MySQL c nhiu ngi dng, v l do bo mt cho nn vi mi ngi dng ca h thng cn phi c mt account v password. iu ny khng c ngha l bn phi bt buc phi to ra password cho ngi dng, nhng iu nn lm l cung cp cc password cho tt c nhng ngi dng m bn to ra. Cc quyn h thng ca MySQL: Mt trong nhng c tnh tt nht ca MySQL l n h tr tt c cc quyn phc tp ca h thng. Khi bn to ra mt ngi dng trong MySQL, bn trao quyn cho ngi nh r nhng g ngi c th v khng th i vi h thng. To ngi dng: s dng lnh GRANT Cc lnh GRANT v REVOKE c dng trao v ly quyn n ngi dng MySQL vi bn cp bc phn quyn nh sau:Global, Database, Table, Column Lnh GRANT: to ngi dng v giao quyn cho h.Cu trc nh sau: GRANT privileges [columns] ON item TO user_name [IDENTIFIED By 'password'] [WITH GRANT OPTION] Lnh REVOKE: tri ngc vi GRANT.N dng thu hi li cc quyn ca ngi dng, v c cu trc tng t nh GRANT REVOKE privileges [(columns)] ON item FROM user_name To bng c s d liu: s dng lnh CREAT TABLE, c php thng thng l: CREAT TABLE tablename(columns) V d, to mt bng customers nh sau: create table customers(customerid int unsigned not null auto_increment primary key,name char(30) not null,address char(40) not null,city char(20) not null); Xem d liu vi lnh SHOW v DESCRIBE: Sau khi ng nhp vo mn hnh MySQL, bn c th xem cc bng trong c s d liu bng cch nh vo nh sau: mysql> show tables; Th MySQL s hin th tt c cc bng trong c s d liu. Bn cng c th s dng show xem danh sch cc c s d liu bng cch nh vo nh sau: mysql>show databases; xem thm cc chi tit v mt bng c th bn s dng lnh DESCRIBE: mysql> describe tablename;

II. Lm vic vi c s d liu MySQL:


SQL (Structured Query Language): y l ngn ng chun nht cho vic truy cp h thng qun l c s d liu quan h. SQL dng cha v truy xut d liu t mt c s d liu. N thng c dng trong cc h thng c s d liu nh MySQL, Oracle, Sybase, PostgreSQL v Microsoft SQL Server... Chn d liu vo trong c s d liu: Trc khi bn c th lm nhiu vic vi c s d liu, bn cn cha mt t d liu trong n. thc hin c iu ny bn c th s dng cu lnh SQL INSERT. C php nh sau: INSERT [INTO] table [(column1,column2,column3,...)]VALUES(value1,value2,value3,...); V d, chn mt bn ghi vo trong bng Customers, bn thc hin nh sau: insert into customers values(NULL,"le bao vy","phan chau trinh","DH Ky Thuat");

http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL -

18

Truy xut d liu t c s d liu: S dng cu lnh SELECT truy xut d liu t mt c s d liu bng cch chn cc hng tho mn iu kin c th no t mt bng. C rt nhiu tu chn v cch khc nhau s dng lnh SELECT.

Cu lnh cn bn ca SELECT l: SELECT items FROM tables [WHERE condition] [GROUP BY group_type] [HAVING where_definition] [ORDER BY order_type] [LIMIT limit_criteria]; Truy xut d liu vi iu kin c th: c th truy cp mt tp hp con ca cc hng trong mt bng, chng ta cn phi xc nh mt vi iu kin c chn la. Bn c th lm c iu ny vi mnh WHERE.V d: select * from orders where customerid=3; iu ny ng ngha vi vic la chn tt c cc ct t bng orders, nhng ch c nhng dng m c customerid=3 th mi tho mn. Truy xut d liu t nhiu bng: Thng thng tr li mt cu hi t c s d liu, bn c th cn phi dng d liu t nhiu hn mt bng. kt hp cc thng tin ny li vi nhau trong SQL, bn phi thc hin mt php ton gi l kt hp(join). C ngha l n s kt hp hai hay nhiu bng li vi nhau theo cc mi quan h gia cc d liu. V d ni hai bng n gin sau: select orders.orderid,orders.amount,orders.date from customers,orders where customers.name='le bao vy' and customers.customerid=orders.customerid; Kt ni nhiu hn hai bng: Phc tp hn kt ni hai bng li vi nhau.Theo lut thng thng, bn cn ni cc bng tng cp vi nhau vi cc iu kin ni.V d nh sau: select customers.name from customers,orders,order_items where customers.customerid=orders.customerid and orders.orderid=order_items.orderid and order_items.isbn=books.isbn and books.title like '%Java%'; S dng tn khc cho bng (tn hiu-alias): Thng thng chng ta truy cp n tn ca cc bng bng cc tn hiu ca chng. Bn c th to ra cc tn hiu ny khi bt u cu truy vn v sau s dng thng qua chng.V d: select c.name from customers as c,orders as o,order_items as oi,books as b where c.customerid=o.customerid and o.orderid=oi.orderid and oi.isbn=b.isbn and b.title like '%java%'; Nh khi bn khai bo cc bng chng ta s dng, chng ta thm mt mnh AS khai bo cc tn hiu cho bng. Chng ta cng c th dng cc tn hiu cho cc ct. Vic ny tht s cn thit khi chng ta mun kt
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 19

ni mt bng vi chnh bn thn n. iu ny nghe c v hi kh nghe, nhng n tht s l hu ch, chng hn nu chng ta mun tm cc hng trong cng mt bng m c cng gi tr, nu chng ta mun tm cc khch hng sng trong cng mt thnh ph, chng ta c th t cc tn khc nhau cho cng mt bng Customers.V d: select c1.name,c2.name,c1.city from customers as c1,customers as c2 where c1.city=c2.city and c1.name!=c2.name; Nhng g m chng ta lm l gi v nh bng Customers l hai bng khc nhau c1 v c2, sau thc hin vic kt ni trn ct City. Truy xut d liu theo th th yu cu: Khi bn mun hin th cc hng c truy xut bng mt truy vn theo mt th th yu cu, bn c th s dng mnh ORDER BY ca cu lnh SELECT. Mnh ny s sp xp cc hng ca mt hay nhiu ct c lit k trong mnh SELECT. V d: select name,address from customers order by name; Gi tr yu cu mc nh l tng dn v bn c th ch r n nu bn thch dng t kho ASC.V d: select name,address from customers order by name asc; Cn nu mun sp xp gim dn th dng t kho DESC. Nhm v kt hp d liu: Cc hm kt ni c th c p dng n mt bng cng nh n ton b hay n cc nhm d liu trong mt bng l: M t Tn AVG(column) COUNT(items) MIN(column) MAX(column) STD(column) STDDEV(column) SUM(column) Gi tr trung bnh ca cc gi tr trong cc ct c th. Nu bn ch ra mt ct th n tr v s cc gi tr ca ct .Nu thm vo t kho DISTINCT pha trc tn ct,th tr v cc gi tr ring bit ca ct .Cn nu ch nh l COUNT(*),n s m tt c cc gi tr trong hng bt k gi tr rng. Cc gi tr nh nht trong ct ch nh. Cc gi tr ln nht trong ct ch nh. chnh lch chun ca cc gi tr trong ct ch nh. Tng t nh STD(column). Tng cc gi tr trong ct ch nh.

Chn hng no s c quay tr v: Mt mnh ca cu lnh SELECT m c th c s dng mt cch c bit trong cc ng dng Web l mnh LIMIT. N c dng ch nh cc dng no t nhp vo nn c tr li. N gm c hai tham s: s hng bt u v s lng cc hng s c tr li.V d minh ho: select name from customers limit 2,3; Cu truy vn ny c th c hiu nh sau: chn tn t bng customers v sau tr li 3 hng bt u t hng th hai ca nhp vo. Cp nht cc bn ghi trong c s d liu: S dng cu lnh UPDATE. Cu trc thng dng ca n nh sau:
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 20

UPDATE tablename SET column1=expression1,column2=expression2,... [WHERE condition] [LIMIT number] V d, chng ta mun tng gi tt c cc quyn sch ln 10%, chng ta s s dng cu lnh UPDATE nh sau: update books set price=price*1.1; Thay i cc bng sau khi to: Chng ta c th thay i cu trc ca cc bng trong c s d liu bng cch s dng cu lnh ALTER TABLE. Cu trc cn bn ca n nh sau: ALTER TABLE tablename alteration [,alteration...] V d: trong bng Customers, chng ta cho php tn di 30 k t, sau khi chng ta bt u to mt s d liu, chng ta c th pht hin rng mt s tn l qu di v ang b ct, chng ta c th sa iu ny bng cch thay i loi d liu ca ct n c th di n 45 k t. alter table customers modify name char(45) not null; Hu b cc records khi c s d liu: S dng cu lnh DELETE, cu trc nh sau: DELETE FROM table [WHERE condition] V d: delete from customers where customerid=5; Ch :nu bn vit DELETE FROM table; th tt c cc hng trong bng s b hu b. Hu cc bng: Bn c th hu ton b mt bng bng cch s dng cu lnh DROP TABLE. Cu trc ny rt n gin, n nh sau: DROP TABLE table; Hu ton b c s d liu: Bn c th thc hin iu ny bng cch s dng cu lnh DROP DATABASE, cu trc nh sau: DROP DATABASE database; To v hu Index: Index l nhng phng tin quan trng tng tc truy cp cc ni dung ca cc bng, thng thng l dng cho cc cu truy vn m lin quan n kt ni nhiu bng vi nhau. MySQL cho php bn to ra index mt cch kh linh hot. Bn c th index cc ct ring r hay kt ni cc ct li vi nhau. Bn cng c th c nhiu hn mt index trong mt bng nu bn mun c th tra cu gi tr mt cch nhanh chng t cc ct khc nhau ca mt bng. To Index: Bn c th to index cho mt bng mi khi bn dng CREAT TABLE, hoc c th thm index cho cc bng ang tn ti vi CREAT INDEX hay ALTER TABLE. Bn phi ch nh rng index c th hay khng th cha gi tr lp li. Nu n khng th, index nn c to nh l mt kho chnh (PRIMARY KEY) hay l mt index duy nht (UNIQUE INDEX). thm mt index cho mt bng ang tn ti, bn c th s dng
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 21

ALTER TABLE hay CREAT INDEX. Trong lnh ALTER TABLE linh hot hn bi bn c th s dng n to ra mt index thng thng, mt index duy nht, hay mt kho chnh. C php nh sau: alter table tablename add index indexname(column_list) alter table tablename add unique indexname(column_list) alter table tablename add primary key(column_list) CREAT INDEX c th thm mt index thng thng hay mt index duy nht cho mt bng: creat unique index index_name on tablename(column_list) creat index index_name on tablename(column_list) to mt index cho mt bng mi khi bn s dng cu lnh CREAT TABLE, bn c th s dng c php tng t nh lm vi ALTER TABLE, nhng bn phi ch nh cc mnh to index trong phn cu lnh CREAT TABLE. C th nh sau: creat table tablename( ...... index index_name(column_list), unique index_name(column_list), primary key (column_list), ... ) Hy b Index: Bn c th hu b index bng cch s dng mt trong hai cu lnh DROP INDEX hay ALTER TABLE. C php nh sau: DROP INDEX index_name on table_name ALTER TABLE table_name DROP INDEX index_name ALTER TABLE table_name DROP PRIMARY KEY Ch :Index c th b tc ng nu bn hu cc ct trong mt bng.

III. Cc hm PHP s dng truy cp c s d liu MySQL


int mysql_affected_rows( [resource link_identifier]): tr v s lng cc hng b tc ng bi cc cu truy vn cui cng INSERT, UPDATE hay DELETE kt hp vi nh danh lin kt (link_identifier). Nu nhn dng lin kt khng c th th lin kt cui cng c m ra bi mysql_connect( ). Ch khi bn ang s dng cc giao dch, bn phi gi mysql_affected_rows( ) sau truy vn INSERT, UPDATE hay DELETE. int mysql_character_set_name ( [resource link_identifier]):tr v k t mc nh gn tn cho kt ni hin hnh. bool mysql_close ( [resource link_identifier]): tr v TRUE nu thnh cng, FALSE nu tht bi. Hm ny ng kt ni n MySQL server m kt hp vi nhn dng lin kt nh r, nu link_identifier khng nh r th lin kt m cui cng s c s dng. Vic s dng hm ny khng phi lc no cng cn thit, nh i vi cc lin kt m khng lin tc th n s t ng ng khi kt thc s thc thi ca script. Ch hm ny khng ng kt ni lin tc c to bi hm mysql_pconnect( ). resource mysql_connect ( [string server [, string username [, string password [, bool new_link]]]]): tr v mt nh danh lin kt MySQL khi thnh cng, cn khng tr v gi tr FALSE. Hm ny thit lp mt kt ni n MySQL server. Nhng gi tr mc nh sau c dng cho cc tham s ty chn khng khai bo: server='localhost:3306', username=tn ca ngi s dng l ch ca server v password= b trng. Nu li gi ln th hai c to bi mysql_connect( ) vi cng cc tham s m khng c lin kt mi no c thit lp,nhng thay vo mt lin kt nh danh ca cng ang c m s c tr v. Tham s new_link m t
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 22

hnh vi ny v lm cho hm mysql_connect( ) lun m mt lin kt mi, ngay c khi nu hm mysql_connect( ) b gi trc vi cng cc tham s. Lin kt n server s b ng ngay khi vic thc thi ca script kt thc,tr khi n b ng sm hn bi hm gi mysql_close( ). bool mysql_create_db ( string database name [, resource link_identifier]): to mt c s d liu mi trn server kt hp vi lin kt nh danh c ch nh. Tr v gi tr TRUE nu thnh cng, ngc li tr v FALSE. bool mysql_data_seek ( resource result_identifier, int row_number): di chuyn con tr hng bn trong ca kt qu MySQL kt hp vi kt qu nh danh c th ch n s hng c ch nh. N s tr v TRUE nu thnh cng, ngc li tr v FALSE.Row_number bt u ti 0, v nn c gi tr trong khong t 0 n mysql_num_rows - 1. string mysql_db_name ( resource result, int row [, mixed field]): ly tham s u tin l con tr kt qu t vic gi hm mysql_list_dbs( ). Tham s hng l ch mc n kt qu gn. Nu xy ra li, th tr v FALSE.S dng hm mysql_errono( ) v mysql_error( ) xem bn cht li. resource mysql_db_query ( string database, string query [, resource link_identifier]): chn mt c s d liu v thc thi mt truy vn trn n. Nu lin kt nh danh ty chn khng c ch nh hm s c tm ra mt lin kt m n MySQL server v nu khng c lin kt no c tm thy th n s to ra mt lin kt nh nu hm mysql_connect( ) c gi khng c tham s no. Hm s tr v mt kt qu MySQL dng, hay l FALSE nu b li. bool mysql_drop_db ( string database_name [, resource link_identifier]): hu b ton b c s d liu t server kt hp vi lin kt nh danh ch nh. Tr v TRUE nu thnh cng, FALSE nu gp li. int mysql_errno ( [resource link_identifier]): tr v s li t hm MySQL cui cng, hay l 0 nu khng c li no. string mysql_error ( [resource link_identifier]): tr v vn bn li t hm MySQL cui cng hay ' ' nu khng c li no. string mysql_escape_string ( string unescaped_string): trnh unescaped_string n c th ni an ton trong mysql_querry( ). array mysql_fetch_array ( resource result [, int result_type]): tr v mt mng tng ng vi hng tm np, hay l FALSE nu khng c hng no. array mysql_fetch_assoc ( resource result): tr v mt mng kt hp tng ng vi hng tm np, hay l FALSE nu khng c hng no. object mysql_fetch_field ( resource result [, int field_offset]): tr v mt i tng cha thng tin cc trng. N thng c dng ly thng tin v cc trng trong mt kt qu truy vn. array mysql_fetch_lengths ( resource result): tr v mt mng tng ng vi chiu di ca mi trng trong hng cui cng c tm np bi mysql_fetch_row() hay tr v FALSE nu li. object mysql_fetch_object ( resource result): tr v mt i tng vi cc thuc tnh tng ng vi hng tm np hay FALSE nu khng c hng no. array mysql_fetch_row ( resource result): tr v mt mng tng ng vi hng tm np, nu khng c hng no th tr v FALSE. string mysql_field_flags ( resource result, int field_offset): tr v trng cc c ca trng c ch nh. int mysql_field_len ( resource result, int field_offset): tr v chiu di ca trng c ch nh. string mysql_field_name ( resource result, int field_index): tr v tn ca trng ch mc c ch nh. int mysql_field_seek ( resource result, int field_offset): tm kim offset ca trng c ch nh. string mysql_field_table ( resource result, int field_offset): tr v tn ca bng m trng c ch nh trong . string mysql_field_type ( resource result, int field_offset): tr v loi ca trng c ch nh . bool mysql_free_result ( resource result): gii phng tt c b nh kt hp vi nh danh kt qu result. Hm ny ch c gi khi bn quan tm n bao nhiu b nh ang c s dng cho cc cu truy vn m tr v cc tp hp ln cc kt qu. Tt c kt qu b nh kt hp s t ng c gii phng khi script kt thc thc hin. Tr v TRUE nu thnh cng, FALSE nu tht bi. string mysql_get_client_info ( void): tr v chui biu th phin bn th vin ca client.

http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL -

23

string mysql_get_host_info ( [resource link_identifier]): tr v chui m t loi kt ni c dng cho kt ni link_indentifier,bao gm c tn ca server host. Nu link_indentifier b b qua, th kt ni c m cui cng s c s dng. int mysql_get_proto_info ( [resource link_identifier]): tr v phin bn giao thc c dng bi kt ni link_identifier. Nu link_identifier b b qua, kt ni m cui cng s c dng. string mysql_get_server_info ( [resource link_identifier]): tr v phin bn ca server c dng bi kt ni link_identifier, nu link_identifier b b qua, kt ni c m cui cng s c s dng. string mysql_info ( [resource link_identifier]): tr v thng tin chi tit v truy vn cui cng s dng link_identifier.Nu link_identifier khng c ch nh, lin kt cui cng c m s c tha nhn. int mysql_insert_id ( [resource link_identifier]): tr v ID c to cho bi ct AUTO_INCREMENT bi cu lnh truy vn INSERT trc s dng link_identifier c cho. Nu link_identifier khng c ch nh, lin kt m cui cng s c tha nhn. resource mysql_list_dbs ( [resource link_identifier]): tr v con tr kt qu cha cc c s d liu c sn t daemon mysql hin hnh. resource mysql_list_fields ( string database_name, string table_name [, resource link_identifier]): truy xut thng tin v tn cc bng cho trc. Cc tham s l tn cc c s d liu hay tn cc bng. resource mysql_list_processes ( [resource link_identifier]): tr v con tr kt qu m t cc lung hin hnh ca server. resource mysql_list_tables ( string database [, resource link_identifier]): ly tn c s d liu v tr v con tr kt qu. int mysql_num_fields ( resource result): tr v s lng cc trng trong tp hp kt qu. int mysql_num_rows ( resource result): tr v s lng cc hng trong tp hp kt qu. Hm ny ch ng cho cc cu lnh SELECT. resource mysql_pconnect ( [string server [, string username [, string password]]]): thit lp kt ni n MySQL server. bool mysql_ping ( [resource link_identifier]): kim tra kt ni n server c lm vic hay khng. Nu n khng lm vic th mt kt li t ng thc hin. Hm ny c th c dng bi cc script m gi nguyn trng thi nhn ri trong mt lc kim tra xem server c ng kt ni v kt ni li nu cn thit hay khng. Hm ny s tr v TRUE nu kt ni n server ang lm vic nu khng th tr v FALSE. resource mysql_query ( string query [, resource link_identifier [, int result_mode]]): gi mt truy vn n c s d liu hin hnh ang hot ng trn server m kt hp vi nh danh lin kt c ch nh. Nu link_identifier khng c ch nh, lin kt m cui cng s c tha nhn. Nu khng c lin kt no c m, hm s c thit lp mt lin kt nu mysql_connect( ) c gi khng c tham s no v dng n. string mysql_real_escape_string ( string unescaped_string [, resource link_identifier]): trnh c cc k t c bit trong unescaped_string, tr v tp hp k t hin hnh ca kt ni. mixed mysql_result ( resource result, int row [, mixed field]): tr v ni dung ca mt cell t tp hp kt qu MySQL. Tham s trng c th l offset ca trng hay l tn trng hay l tn bng ca trng.tn trng. Nu tn ct c tn hiu th s dng tn hiu thay cho tn ct. bool mysql_select_db ( string database_name [, resource link_identifier]): gn c s d liu hin hnh hot ng trn server m kt hp vi nh danh lin kt ch nh. Nu khng c nh danh lin kt no c ch nh th lin kt m cui cng c tha nhn. Nu khng c lin kt no c m th hm s c thit lp m lin kt nh khi hm mysql_connect( ) c gi khng c tham s v s dng n string mysql_stat ( [resource link_identifier]): tr v tnh trng hin hnh ca server. string mysql_tablename ( resource result, int i): tr v tn bng ca trng, ly con tr kt qu tr v bi hm mysql_list_table( ) cng nh ch mc integer. int mysql_thread_id ( [resource link_identifier]): tr v ID ca thread hin hnh. Nu kt ni b mt v bn kt ni li vi mysql_ping( ), th ID ca thread s b thay i. iu ny c ngha l bn khng nn ly ID ca thread v cha n cho sau ny. Bn nn ly n khi no bn cn n. resource mysql_unbuffered_query ( string query [, resource link_identifier [, int result_mode]]): gi mt truy vn SQL query n MySQL m khng cn cc hng kt qu tm np v m mt cch t ng nh mysql_query( ).
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 24

Sau y l v d n gin trnh by cch kt ni, thc thi cu truy vn, in cc hng kt qu v ngng kt ni t c s d liu MySQL.
<?php /* Kt ni,chn c s d liu */ $link = mysql_connect("mysql_host", "mysql_user", "mysql_password") or die("Could not connect"); print "Connected successfully"; mysql_select_db("my_database") or die("Could not select database"); /* Thc hin cu truy vn SQL */ $query = "SELECT * FROM my_table"; $result = mysql_query($query) or die("Query failed"); /* In kt qu ra trang *.HTML */ print "<table>\n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { print "\t<tr>\n"; foreach ($line as $col_value) { print "\t\t<td>$col_value</td>\n"; } print "\t</tr>\n"; } print "</table>\n"; /* Free resultset */ mysql_free_result($result); /*ng kt ni */ mysql_close($link); ?>

S cn thit ca mt c s d liu khng ch bi nhu cu phc v, to ra cc ngun ti liu mt cch phong ph, m bi s tng ln ca nhu cu truy cp cc thng tin "trc tip" trong ngy bng vic s dng mt giao din n gin v hp nht. Bn c th cho php mi ngi trong cc vn phng bn hng truy vn mt c s d liu hng tn kho. C s d liu ny c th c xy dng khc, chy trn mt h iu hnh hon ton khc vi my tnh ca ngi dng. Vi mt web server c cu hnh tt, mt c s d liu server( chng hn nh MySQL), v mt vi "php thn thng" ca PHP, ch nhng th ngi dng cn mi c th c trn trnh duyt web. Cui cng: nu bn cn cc thng tin lun nng ng, cp nht, bn cn phi pht trin mt c s d liu ng sau ng dng web.Vi mt c s d liu pha sau, web site ca bn s t c mt trnh phc tp v linh hot, ni m d liu c to ra v s dng, thng tin c lm cho c ngha vi ngi dng m khng cn phi bt buc n phi c nn li cho va vi cch hin th hay t chc n.

IV. Kin trc ca mt ng dng Web Database


Cc phn c bn ca ng dng Web Database l: Client: trnh duyt web ca ngi dng, mt java applet, mt ng dng java, thm ch l mt platform ph thuc vo chng trnh ca client. ng dng logic: m ho cc thut ton s dng trong cc scripts CGI, cc modul c bit ca web server, thm ch mt ng dng ph thuc vo server. Kt ni database: the database API, hay l cc giao thc kt ni thng thng nh ODBC hay JDBC. Database server: RDBMS, ODBMS... Vic thc hin cc ng dng c th c thc hin bi s dng m hnh nhiu lp, bi mt hay nhiu lp c th kt hp vi nhau. Cch thc hin thng thng nht l h thng ba lp. 1. Lp th 1: web client( v d nh trnh duyt web ca ngi dng).
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 25

2. 3.

Lp th 2: web server, cc scripts ca CGI, kt ni API n database. Lp th 3: database server (v d MySQL server).

M hnh cc lp c th nh sau:

Web browser HTTP Web server + CGI programs/ Servlets/ PHP scripts

Java Applet/ Application

HTTP

ODBC/JDBC Database specific API

Database

Third Tier

Second Tier
HTTP Platform dependent Client

i vi Web site xy dng bng PHP&MySQL th m hnh ng dng web database nh sau:

Trnh duyt

1 6

Web server

2 5

PHP engine

3 4

MySQL server

Mt giao dch chnh ca Web database bao gm cc giai on sau: 1. Trnh duyt Web ca ngi dng s a ra mt yu cu HTTP cho mt trang web ring bit... V d, mun vit kin ca mnh vo guestbook, sau khi in vo cc thng tin cn thit theo yu cu vo trong cc form HTML, ngi dng bm vo nt Gi i, th thng tin va mi vit s c hin th trn trang index.php, 2. Web server s nhn c mt yu cu cho trang index.php, n s truy xut file ny v chuyn n qua PHP engine x l. 3. PHP engine bt u phn tch script. Bn trong script l mt yu cu kt ni n c s d liu v thc thi mt truy vn. PHP m mt kt ni n MySQL server v gi trn mt truy vn chnh xc. 4. MySQL server nhn mt truy vn d liu v x l n, sau gi cc kt qu v li cho PHP engine. 5. PHP engine hon thnh vic chy script m thng lin quan n nh dng cc kt qu truy vn trong HTML. Sau n tr kt qu HTML v li Web server.
http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL 26

6. Web server chuyn HTML v li trnh duyt, ni m bn c th thy danh sch cc quyn sch m bn yu cu. Qu trnh ny l cn bn tng t i vi cc script engine hay cc database server m chng ta dng. Thng th mt phn mm Web server, PHP engine, v database server tt c cng chy trn cng mt my. Tuy nhin, vic database server chy trn mt my khc cng l iu kh thng dng. Bn c th lm c iu ny bi cc l do bo mt, tng dung lng .

http://Athena.edu.vn/forum - Ti liu hng dn hc lp trnh web, lp trnh ng dng vi PHP & My SQL -

27

You might also like