SlideShare ist ein Scribd-Unternehmen logo
1 von 115
Downloaden Sie, um offline zu lesen
Ban chØ ÂźÂčo c«ng nghÖ th«ng tin cña cÂŹ quanMySQL
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng             PHP &
                                                    ٦ng

                                       ***




                     T”I liÖu tham kh¶o

          Ng«n ngĂ· lËp tr×nh pHP




                                    H” néi, 2003
                                                      1
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                             PHP & MySQL



   PhÇn I : GiĂ­i thiÖu ng«n ngĂ· lËp tr×nh PHP


   ch−¬ng i : Ng«n ngĂ· lËp tr×nh pHP

   I. GiĂ­i thiÖu PHP v” m«i tr−ĂȘng lËp tr×nh web.

   1. PHP l” g× ?

       Cži tÂȘn PHP ban ¼Çu ¼−üc viÕt tŸt bĂ«i cĂŽm tĂ” Personal Home Page, v”
¼−üc phžt triÓn tĂ” nšm 1994 bĂ«i Rasmus Lerdorf. LĂłc ¼Çu chØ l” mĂ©t bĂ© ¼Æc
t¶ Perl, ¼−üc sö dĂŽng ¼Ó l−u dÊu vÕt ng−ĂȘi dĂŻng trÂȘn cžc trang web. Sau Ÿã,
Rasmus Lerdorf Ÿ· phžt triÓn PHP nh− l” mĂ©t mžy ¼Æc t¶ (Scripting engine).
V”o giĂ·a nšm 1997, PHP Ÿ· ¼−üc phžt triÓn nhanh chĂŁng trong sĂč yÂȘu thÝch
cña nhiÒu ng−ĂȘi. PHP Ÿ· kh«ng cßn l” mĂ©t dĂč žn cž nh©n cña Rasmus
Lerdorf v” Ÿ· trĂ« th”nh mĂ©t c«ng nghÖ web quan trĂ€ng. Zeev Suraski v”
Andi Gutmans Ÿ· ho”n thiÖn viÖc ph©n tÝch cĂł phžp cho ng«n ngĂ· ¼Ó rĂ„i
thžng 6 nšm 1998, PHP3 Ÿ· ra ÂźĂȘi (phiÂȘn b¶n n”y cĂŁ phÇn mĂ« rĂ©ng l”
*.php3). Cho ¼Õn tËn thĂȘi ÂźiÓm Ÿã, PHP ch−a mĂ©t lÇn ¼−üc phžt triÓn chÝnh
thĂžc, mĂ©t yÂȘu cÇu viÕt lÂči bĂ© ¼Æc t¶ ¼−üc ¼−a ra, ngay sau Ÿã PHP4 ra ÂźĂȘi
(phiÂȘn b¶n n”y cĂŁ phÇn mĂ« rĂ©ng kh«ng ph¶i l” *.php4 m” l” *.php). PHP4
nhanh hÂŹn so vĂ­i PHP3 rÊt nhiÒu. PHP b©y giĂȘ ¼−üc gĂ€i l” PHP Hypertext
PreProcesor.
   2. TÂči sao ph¶i sö dĂŽng PHP

       Nh− chĂłng ta Ÿ· biÕt, cĂŁ rÊt nhiÒu trang web ¼−üc x©y dĂčng bĂ«i ng«n
ng÷ HTML (HyperText Markup Language). §©y chØ l” nh÷ng trang web
tÜnh, nghÜa l” chĂłng chØ chĂža ÂźĂčng mĂ©t nĂ©i dung cĂŽ thÓ vĂ­i nhĂ·ng dßng všn
b¶n Ÿn thuÇn, h×nh ¶nh ,v” cĂŁ thÓ ¼−üc sĂč hç trĂź bĂ«i ng«n ngĂ· JavaScript,
hoÆc Java Apple. NhĂ·ng trang web nh− vËy ng−ĂȘi ta th−ĂȘng gĂ€i l” client-
side. Tuy nhiÂȘn, Internet v” Intranets Ÿ· ¼−üc sö dĂŽng cho cžc Ăžng dĂŽng cÇn
tĂ­i cÂŹ sĂ« dĂ· liÖu. Cžc trang Ăžng dĂŽng nh− vËy ¼−üc gĂ€i l” trang web Ÿéng,
bĂ«i v× nĂ©i dung cña chĂłng lu«n thay ŸÊi tĂŻy thuĂ©c v”o dĂ· liÖu v” ng−ĂȘi sö
dĂŽng. PHP l” ng«n ngĂ· l”m ¼−üc nhĂ·ng ÂźiÒu nh− vËy. B»ng cžch chÂčy
ch−¬ng tr×nh PHP trÂȘn mžy chñ Web server, bÂčn cĂŁ thÓ tÂčo ra cžc Ăžng dĂŽng



                                                                         2
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                PHP & MySQL



cĂŁ sĂč t−¬ng tžc vĂ­i cÂŹ sĂ« dĂ· liÖu ¼Ó tÂčo ra nhĂ·ng trang web v” Ÿ©y ¼−üc gĂ€i
l” trang web Ÿéng.
      ChĂłng ta h·y xem xÐt cžch hoÂčt Ÿéng
cña trang web ¼−üc viÕt b»ng ng«n ngĂ· HTML
v” PHP nh− thÕ n”o.
                                                           Web server
      VĂ­i cžc trang HTML :                      + Đọc yĂȘu cáș§u từ browser
                                                + TĂŹm file.htm trĂȘn server
Khi cĂŁ yÂȘu cÇu tĂ­i mĂ©t trang web tĂ”             + Gá»­i láșĄi cáșŁ file.htm cho browser
phÝa ng−ĂȘi sö dĂŽng (browser). Web server
 thĂčc hiÖu ba b−íc sau :
       + §Àc yÂȘu cÇu tĂ” phÝa browser,
                                                                    Request
       + T×m trang web trÂȘn server.
                                                                    http://domain/file.htm
       + Göi trang web Ÿã trĂ« lÂči cho
    browser (nÕu t×m thÊy)
    qua mÂčng Internet hoÆc Intranet .                 Trang html
    Víi cžc trang PHP :
       Khžc vĂ­i cžc trang HTML, khi mĂ©t trang PHP ¼−üc yÂȘu cÇu, web
server ph©n tÝch v” thi h”nh cžc ÂźoÂčn m· PHP
¼Ó tÂčo ra trang HTML.                                         Web server
                                                + Đọc yĂȘu cáș§u từ browser
§iÒu Ÿã ¼−üc thÓ hiÖn b»ng bĂšn b−íc sau :       + TĂŹm trang web(file.php) trĂȘn server
      + §Àc yÂȘu cÇu tö phÝa browser.            + Thá»±c hiện cĂĄc đoáșĄn mĂŁ PHP
                                                + Gá»­i tráșŁ láșĄi nội dung cho browser
      + T×m trang web trÂȘn server.
      + ThĂčc hiÖn cžc ÂźoÂčn m· PHP trÂȘn trang web Ÿã ¼Ó söa
      ŸÊi néi dung cña trang.
      + Göi trĂ« lÂči nĂ©i dung cho browser (Ÿ©y l” trang HTML
       cĂŁ thÓ hiÓn thÞ ¼−üc bĂ«i tr×nh duyÖt Internet Explorer
      hoÆc tr×nh duyÖt n”o Ÿã).                   Káșżt xuáș„t

     TĂŁm lÂči, sĂč khžc nhau giĂ·a HTML v” PHP
    l” HTML kh«ng ¼−üc thĂčc hiÖn trÂȘn mžy
                                                            Request
   chñ Web server cßn cžc trang *.php                       http://domain/file.php
   viÕt b»ng cžc ÂźoÂčn m· PHP ¼−üc thĂčc hiÖn
   trÂȘn mžy chñ Web server do Ÿã nĂŁ linh Ÿéng v” mÒm dÎo hÂŹn .



                                                                              3
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                PHP & MySQL


   3. NhĂ·ng ÂźiÓm mÂčnh cña PHP
   -PHP thĂčc hiÖn vĂ­i tĂšc Ÿé rÊt nhanh v” hiÖu qu¶ .MĂ©t Server b×nh th−ĂȘng
   cĂŁ thÓ Ÿžp Ăžng ¼−üc h”ng triÖu truy cËp tĂ­i trong mĂ©t ng”y.
   PHP hç trü kÕt nùi tíi rÊt nhiÒu hÖ CSDL kh¾c nhau:
   PostgreSQL,mSQL,Oracle, dbm, filePro ,Hyperware, informix,InterBase,
   Sybase, ... Ngo”i ra cßn hç trĂź kÕt nĂši vĂ­i ODBC th«ng qua Ÿã cĂŁ thÓ kÕt
   nĂši vĂ­i nhiÒu ng«n ngĂ· khžc m” ODBC hç trĂź.
   -PHP cung cÊp mĂ©t hÖ thĂšng th− viÖn phong phĂł : Do PHP ngay tĂ” ¼Çu
   ¼−üc thiÕt kÕ nh»m mĂŽc ¼Ých x©y dĂčng v” phžt triÓn cžc Ăžng dĂŽng trÂȘn
   web nÂȘn PHP cung cÊp rÊt nhiÒu h”m x©y dĂčng sÂœn giĂłp thĂčc hiÖn cžc
   c«ng viÖc rÊt dÔ d”ng : göi, nhËn mail ,l”m viÖc vĂ­i cžc cookie, v” nhiÒu
   thÞ khžc n÷a .
   -PHP l” mĂ©t ng«n ngĂ· rÊt dÔ dĂŻng, dÔ hĂ€c v” Ÿn gi¶n hÂŹn nhiÒu so vĂ­i
   cžc ng«n ngĂ· khžc nh− Perl, Java. NÕu bÂčn Ÿ· biÕt ng«n ngĂ· C th× mĂ€i
   viÖc sÏ ho”n to”n thuËn lĂźi .

   -PHP cĂŁ thÓ sö dĂŽng ¼−üc trÂȘn nhiÒu hÖ ÂźiÒu h”nh, chĂłng ta cĂŁ thÓ viÕt
   chĂłng trÂȘn Unix, Lunix v” cžc phiÂȘn b¶n cña Windows. V” cĂŁ thÓ Âźem
   m· PHP n”y chÂčy trÂȘn cžc hÖ ÂźiÒu h”nh khžc m” kh«ng ph¶i söa ŸÊi lÂči
   m·.

   -PHP l” ng«n ng÷ m· nguÄn më.

   II. BiÕn, h»ng sĂš v” kiÓu dĂ· liÖu trong PHP.

   1. KiÓu dĂ· liÂȘu .

    PHP cĂŁ ba kiÓu dĂ· liÖu cÂŹ b¶n : interger, double v” string. Ngo”i ra cßn
   cĂŁ cžc kiÓu dĂ· liÖu khžc (nh−ng kh«ng ph¶i cžc kiÓu dĂ· liÖu cÂŹ b¶n) nh−
   arrays (cžc kiÓu dĂ· liÖu m¶ng), objects (cžc kiÓu dĂ· liÖu ŸÚi t−üng).
       Interger l” kiÓu chiÕm 4 byte bĂ© nhĂ­ ,giž trÞ cña nĂŁ trong kho¶ng –2 tĂ»
tĂ­i + 2 tĂ». KiÓu Double l” kiÓu sĂš thĂčc ,phÂčm vi biÓu diÔn ± (10-308 Ă· 10308).
KiÓu string dĂŻng ¼Ó chĂža cžc giž trÞ bao gĂ„m cžc kĂœ tĂč v” con sĂš .
      VÝ dĂŽ : 2           // Ÿ©y l” kiÓu interger
             1.0          // Ÿ©y l” kiÓu double
              “2”         // Ÿ©y l” kiÓu string

                                                                             4
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                PHP & MySQL



              “2 hours” // Ÿ©y l” mĂ©t kiÓu string khžc


   2. H»ng sÚ

        H»ng sĂš l” nhĂ·ng giž trÞ kh«ng ŸÊi. ChĂłng ta th−ĂȘng dĂŻng h»ng sĂš ¼Ó
l−u cžc giž trÞ kh«ng ŸÊi trong suĂšt ch−¬ng tr×nh nh− : nhiÖt Ÿé (00C), cžc giž
trÞ thĂȘi gian chØ sĂč chuyÓn giao giĂ·a sžng ,ch−a ,chiÒu ,tĂši ...
   a. Khai bžo h»ng sÚ :
      Ta dĂŻng h”m define() ¼Ó khai bžo h»ng sĂš :
      define(“COMPANY”, “Phop’s Bicycles”);
      define(“YELLOW”, “#FFFF00”);
      define(“VERSION”, 4);
      define(“NL”, “<BR>n”);
     Trong vÝ dĂŽ trÂȘn chĂłng ta Ÿ· dĂŻng h”m define() ¼Ó khai bžo h»ng sĂš
NL. H»ng sĂš n”y l” mĂ©t thÎ ngŸt dßng trong HTML.
      ChĂłng ta sÏ sö dĂŽng cžc h»ng sĂš trong PHP nh− sau :
      echo (“Employment at ”. COMPANY. NL);
      Cžch viÕt trÂȘn cĂČng giĂšng nh− cžc viÕt sau:
      echo (“Employment at Phop’s Bicycles<BR>n”);
       ChĂł Ăœ : h»ng sĂš ph¶i Ă« ngo”i hai dÊu “ v” ”. TrĂȘng hĂźp sau l” kh«ng cĂŁ
hiÖu lĂčc : echo (“Employment at COMPANY NL”);. Khi thĂčc hiÖn nĂŁ sÏ cho
kÕt qu¶ l” : “Employment at COMPANY NL”.
      H”m defined() : h”m n”y dĂŻng ¼Ó kiÓm tra xem mĂ©t h»ng sĂš n”o Ÿã
Ÿ· ¼−üc khai bžo ch−a.
      VÝ dî : if ( defined (“YELLOW”)) {
                  echo (“<BODY BGCOLOR=”. YELLOW. “>n”);
              }




                                                                             5
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                              PHP & MySQL



   b. Cžc h»ng sĂš Ÿ· ¼−üc ¼Þnh nghÜa trong PHP (Built-in Constants):

      §Ó hç trĂź cho ng−ĂȘi lËp tr×nh, PHP cung cÊp sÂœn cžc h»ng sĂš nh− : cžc
biÕn m«i trĂȘng, cžc biÕn cña Web server Apache ... NgĂȘi lËp tr×nh cĂŁ thÓ sö
dĂŽng h”m phpinfo() ¼Ó xem cžc giž trÞ n”y.
      <HTML>
      <!—phpinfo() -->
      <BODY>
             <?php phpinfo(); ?>
      </BOCY>
      </HTML>




      + H»ng sĂš nguyÂȘn : Ÿ©y l” nhĂ·ng giž trÞ cĂŁ kiÓu integer. VÝ dĂŽ : 10
      + H»ng sĂš thĂčc: Ÿ©y l” nhĂ·ng giž trÞ cĂŁ kiÓu double. VÝ dĂŽ : 10.00
      + HŸng kĂœ tĂč : Ÿ©y l” mĂ©t x©u kĂœ tĂč ¼Æt trong dÊu ngoÆc Ÿn hoÆc
      kÐp.
        VÝ dĂŽ : “Ng«n ngĂ· lËp tr×nh PHP”.


                                                                            6
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                    PHP & MySQL




        3. BiÕn v” giž trÞ logic.

      + CĂČng giĂšng vĂ­i C/C++, PHP kh«ng cĂŁ khži niÖm TRUE v” FALSE.
Cžc giž trÞ TRUE ¼−üc hiÓu l” nhĂ·ng giž trÞ b»ng 1 v” giž trÞ FALSE l”
nhĂ·ng giž trÞ b»ng 0 hoÆc x©u rçng .
        + Khi sö dĂŽng biÕn chĂłng ta kh«ng cÇn khai bžo kiÓu .
        VÝ dĂŽ : $a = 1;     // $a l” mĂ©t biÕn kiÓu integer.
                $a = 1.2; // b©y giĂȘ $a l” mĂ©t biÕn kiÓu double.
                $a = “A” ; // b©y giĂȘ $a lÂči l” mĂ©t biÕn kiÓu string.
     + NÕu nh− thĂčc hiÖn phÐp tožn giĂ·a biÕn cĂŁ kiÓu sĂš v” kiÓu string,
PHP sÏ coi chuçi l” mĂ©t d·y sĂš nh− sau :
        $str = “222B Baker Street”;
        Ta thÊy biÕn $str cĂŁ giž trÞ kiÓu string, v” nÕu cĂ©ng sĂš 3 vĂ­i giž trÞ n”y
th× :
        $x = 3 + $str ;     // $x = 225
     khi Ÿã biÕn $x nhËn ¼−üc giž trÞ 255 v× PHP Ÿ· cĂ©ng 3 vĂ­i ba sĂš ¼Çu.
Nhng nÕu ta in giž trÞ cña biÕn $str th×
        echo ($str);        // print : “222B Baker Street”
      ChĂł Ăœ r»ng cžc phÐp tožn giĂ·a sĂš v” chuçi chØ Ÿóng khi kĂœ tĂč ¼Çu cña
chuçi l” sÚ .
        + Ta cĂČng cĂŁ thÓ l”m thay ŸÊi kiÓu giž trÞ cña mĂ©t biÕn b»ng cžch Ðp
kiÓu
        $a = 11.2;          // biÕn $a cã kiÓu double
        $a = (int) $a;      // b©y giĂȘ $a cĂŁ kiÓu integer ,giž trÞ l” 11
        $a = (double) $a; // b©y giĂȘ $a lÂči cĂŁ kiÓu double, giž trÞ l” 11.0
        $b = (string) $a ; // biÕn $b cĂŁ kiÓu string ,giž trÞ l” “11”
       CĂČng ph¶i biÕt r»ng PHP tĂč Ÿéng chuyÓn ŸÊi kiÓu rÊt tĂšt. NÕu thËt sĂč
cÇn thiÕt chĂłng ta mĂ­i ph¶i dĂŻng cžch trÂȘn.


                                                                                 7
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                PHP & MySQL



      + Cžc h”m l”m viÖc vĂ­i biÕn
       gettype() : h”m n”y tr¶ lÂči kiÓu cña mĂ©t biÕn n”o Ÿã. Giž trÞ tr¶ vÒ cĂŁ
thÓ l” : “integer”
      “double”
      “string”
      “array”
      “object”
      “class”
      “unknown type”
      vÝ dî :
                if (gettype($user_input) == “integer”)
                {
                         $age = $user_input;
                }
      settype() : h”m n”y Ðp kiÓu cho mĂ©t biÕn n”o Ÿã. NÕu th”nh c«ng
h”m tr¶ vÒ giž trÞ 1 (true) ,ng−üc lÂči l” 0 (false).
      vÝ du :
                $a = 7.5;
                settype($a, “integer”);
                if (settype($a, “array”)){
                         echo (“Conversion succeeded. ”);
                }else{
                         echo (“Conversion error. ”);
                }
      isset() v” unset() : H”m isset() kiÓm tra mĂ©t biÕn Ÿ· ¼−üc gžn giž trÞ
hay ch−a, h”m unset() sÏ gi¶i phĂŁng bĂ© nhĂ­ cho mĂ©t biÕn n”o Ÿã .
      vÝ dî :


                                                                               8
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                 PHP & MySQL



      $id = “323bb”;
      if (isset($id)) {
               echo (“DĂ· liÖu Ÿ· ¼−üc gžn”);
      }else{
               echo (“DĂ· liÖu ch−a ¼−üc gžn”);
      }
               unset($id);
               if(!isset($id)) {
                      echo (“DĂ· liÖu Ÿ· ¼−üc gi¶i phĂŁng”);
      }
        empty() : CĂČng giĂšng h”m isset(), h”m empty() sÏ tr¶ vÒ giž trÞ 1
(true) nÕu mĂ©t biÕn l” rçng v” ng−üc lÂči 0 (false). §Úi vĂ­i biÕn cĂŁ kiÓu sĂš
giž trÞ b»ng 0 ¼−üc coi l” rçng, biÕn kiÓu string ¼−üc coi l” rçng nÕu x©u l”
x©u rçng.
      vÝ dî:
               echo empty($new) ;       // true
               $new = 1;
               echo empty($new);        // false
               $new = “”;
               echo empty($new);        // true
               $new = 0;
               echo empty($new);        // true
               $new = “So 323”;
               echo empty($new);        // false
               unset($new);
               echo empty($new);        // true




                                                                                9
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                     PHP & MySQL


III. Cžc tožn tö

         + B¶ng cžc phÐp tožn sÚ hÀc

PhÐp tožn      Ăœ nghÜa             VÝ dĂŽ   Gi¶i thÝch
    +          PhÐp cĂ©ng            7+2       ThĂčc hiÖn phÐp cĂ©ng giĂ·a 7 v” 2 : 9
     -         PhÐp trĂ”             7–2    ThĂčc hiÖn phÐp trĂ” giĂ·a 7 v” 2 : 5
     *         PhÐp nh©n            7*2    ThĂčc hiÖn phÐp nh©n giĂ·a 7 v” 2 : 14
     /         PhÐp chia            7/2    ThĂčc hiÖn phÐp chia giĂ·a 7 v” 2 : 3.5
    %          Chia d              7%2     ThĂčc hiÖn phÐp chia d giĂ·a 7 v” 2 : 1


   Ta cĂŁ thÓ viÕt cžc phÐp tožn ngŸn gĂ€n nh− b¶ng sau :

                    Khi viÕt                  T−¬ng ¼−¬ng víi
                    $h += $i                  $h = $h + $i
                    $h -= $i                  $h = $h - $i
                    $h *= $i                  $h = $h * $i
                    $h /= $i                  $h = $h / $i
                    $h %= $i                  $h = $h % $i
         + PhÐp gžn :
               vÝ dî :
                         $x = 1;
                         $y = $x + 1;
                         $length = $area / $width;




                                                                                   10
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                  PHP & MySQL



       + B¶ng cžc phÐp tožn quan hÖ

PhÐp Ăœ nghÜa                  VÝ dĂŽ       Gi¶i thich
tožn
 ==     So sžnh b»ng          $h ==       KiÓm tra $h v” $i cĂŁ b»ng nhau
  <     So sžnh nhå hn       $i          kh«ng

  >     So sžnh lĂ­n hÂŹn       $h < $i     KiÓm tra $h cĂŁ nhĂĄ hÂŹn $i kh«ng

 <=     NhĂĄ hÂŹn hoÆc          $h > $i     KiÓm tra $h cĂŁ lĂ­n hÂŹn $i kh«ng

 >=     b»ng                  $h <=       KiÓm tra $h cĂŁ nhĂ« hÂŹn hoÆc b»ng $i
        LĂ­n hÂŹn hoÆc          $i          KiÓm tra $h cĂŁ lĂ­n hÂŹn hoÆc b»ng $i
  !=
        b»ng                  $h =>       KiÓm tra $h cĂŁ khžc $i kh«ng
 <>                           $i
        So sžnh khžc                      KiÓm tra $h cĂŁ khžc $i kh«ng
        So sžnh khžc          $h != $i
                              $h <>
                              $i
      Cžc phÐp so sžnh th−ĂȘng dĂŻng kiÓm tra ÂźiÒu kiÖn trong cžc c©u lÖnh
ÂźiÒu khiÓn m” ta sÏ hĂ€c Ă« b”i sau .
       + B¶ng cžc phÐp tožn logic
   PhÐp tožn logic cĂŻng vĂ­i tožn hÂčng tÂčo th”nh biÓu thĂžc logic. BiÓu thĂžc
   logic cĂŁ thÓ cĂŁ giž trÞ l” 1 (true) hoÆc 0 (false) .




 Tožn hÂčng a       Tožn hÂčng b           a && b    a || b     !a           !b
        1                 1                1           1       0           0
        1                 0                0           1       0           1
        0                 1                0           1       1           0
        0                 0                0           0       1           1
       + C¾c phÐp to¾n víi biÕn kiÓu string .


                                                                                11
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                    PHP & MySQL


   Ta sö dĂŽng dÊu “. “ ¼Ó ghÐp hai biÕn kiÓu string vĂ­i nhau .
       vÝ dî : $first = “Phineas”;
              $last = “Phop”;
              $full = $first. “ ”. $last;         // $full = “Phineas Phop” ;
              echo ($full);
              Ta cĂŁ thÓ ghÐp hai x©u nh− sau:
              echo ($last. “’s Bicycles”);        //print : Phop’s Bicycles
      §Ó cĂŁ thÓ chÌn mĂ©t biÕn v”o trong h”ng cĂŁ kiÓu string th× tÂȘn biÕn
ph¶i ¼Ó trong dÊu Ÿãng mĂ« ngoÆc nhĂ€n.
              echo (“${last}’s Bicycles”);
       + Cžc phÐp tožn thao tžc mÞc bit.
   Cžc phÐp tožn thao tžc mĂžc bit tžc Ÿéng lÂȘn tĂ”ng bit cña tožn hÂčng .

                              KĂœ hiÖu         Ăœ nghÜa
                                    &         AND bit
                                    |          OR bit
                                    ^         XOR bit
   B¶ng cžc phÐp tožn nh− sau :

  &          KÕt qu¶            |           KÕt qu¶         ^         KÕt qu¶
 1&1             1            1|1             1            1^1            0
 1&0             0            1|0             1            1^0            1
 0&1             0            0|1             1            0^1            1
 0&0             0            0|0             0            0^0            0
       PHP cĂČng hç trĂź cžc phÐp dÞch ph¶i v” dÞch trži
       >> : dÞch ph¶i
       << : dÞch tr¾i
      Gi¶ sö $a l” mĂ©t biÕn nguyÂȘn th× phÐp tožn : $a >> n l”m cho cžc bit
trong $a bÞ dÞch ph¶i Âźi n vÞ trÝ. T−¬ng tĂč ta cĂŁ phÐp dÞch trži .

                                                                                12
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                       PHP & MySQL



      vÝ dî : 11 >> 2 = 2 ;
      v× :
      11 (1011)
      >> 2
      2 (0010)
      + Cžc phÐp tožn tšng gi¶m :
      - PhÐp tšng : phÐp tšng (tožn tö tšng) tšng giž trÞ cña tožn hÂčng lÂȘn
mĂ©t Ÿn vÞ.
      $a ++ : $a ¼−üc sö dĂŽng rĂ„i mĂ­i tšng
      ++ $a : $a tšng rĂ„i mĂ­i ¼−üc sö dĂŽng
      - PhÐp gi¶m : t−¬ng tĂč nh− phÐp tšng, khžc l” giž trÞ bÞ gi¶m Âźi mĂ©t
¼¬n vÞ.
      $a -- : $a ¼−üc sö dĂŽng rĂ„i mĂ­i gi¶m
      -- $a : $a gi¶m rĂ„i mĂ­i ¼−üc sö dĂŽng
      vÝ dî :
                $a = 10;     // $a b»ng 10
                $b = $a++ ; // $a b»ng 11 nh−ng $b b»ng 10
                $a = 10;     // $a b»ng 10
                $b = -- $a ; // $a b»ng 9 v” $b b»ng 9
      + PhÐp to¾n ¼iÒu kiÖn. ? :
      PhÐp tožn ÂźiÒu kiÖn cĂŻng vĂ­i tožn hÂčng tÂčo nÂȘn biÓu thĂžc ÂźiÒu kiÖn.
Ta kĂœ hiÖu e1 ,e2, e3 l” ba tožn hÂčng.
      BiÓu thĂžc cĂŁ dÂčng : e1 ? e2 : e3
                NÕu e1 != 0 th× giž trÞ cña biÓu thĂžc ÂźiÒu kiÖn l” e2
                NÕu e1 == 0 th× giž trÞ cña biÓu thĂžc ÂźiÒu kiÖn l” e3
      vÝ dî : t×m max
                max = $a>$b ? a : b ;


                                                                                 13
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                    PHP & MySQL



          + Tožn tö sizeof (ŸÚi t−üng) :
          PhÐp tožn sizeof cho biÕt kÝch th−íc (tÝnh b»ng byte ) « nhĂ­ m” ŸÚi
          t−üng chiÕm trong bĂ© nhĂ­. §Úi t−üng Ă« Ÿ©y cĂŁ kiÓu l” integer, double,
string.
          vÝ dî : $a = 10;
          echo sizeof($a);     //sÏ in ra m”n h×nh l” : 4


IV. Cžc c©u lÖnh ÂźiÒu khiÓn
1. LÖnh if_else : Ÿ©y l” lÖnh rÏ nhžnh cĂŁ ÂźiÒu kiÖn .

          a. DÂčng 1 :
                        if ( biÓu thĂžc ) c©u lÖnh;
       C©u lÖnh Ă« Ÿ©y t−¬ng ¼−¬ng vĂ­i mĂ©t khĂši lÖnh. MĂ©t khĂši lÖnh ¼−üc
¼Æt trong dÊu ngoÆc kÐp.
          Ăœ nghÜa :
          + NÕu biÓu thĂžc khžc kh«ng ,th× c©u lÖnh ¼−üc thĂčc hiÖn.
          + NÕu biÓu thĂžc b»ng kh«ng, th× c©u lÖnh kh«ng ¼−üc thĂčc hiÖn
          b. DÂčng 2 :
                        if ( biÓu thþc )
                               c©u lÖnh 1;
                        else
                               c©u lÖnh 2;


          Ăœ nghÜa :
          + NÕu biÓu thĂžc khžc kh«ng ,th× c©u lÖnh 1 ¼−üc thĂčc hiÖn.
          + NÕu biÓu thĂžc b»ng kh«ng, th× c©u lÖnh 2 ¼−üc thĂčc hiÖn
          ChĂł Ăœ :
                * C©u lÖnh 1 Ă« dÂčng 2 l” lÖnh if_else

                                                                                14
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                              PHP & MySQL



             + NÕu l−üng else b»ng l−üng If th× else thuĂ©c vÒ If gÇn nhÊt
theo tĂ”ng cÆp tĂ” trong ra ngo”i.
       VÝ dî :
                    $a = 10; $b = 10;
                    $c = 3; $d = 3;
                    $e = 12; $f = 8;
                    if($a == $b)
                    if($c == $d)
                        if($e == $f)
                              $max = $e;
                        else
                              $max = $f;
                    else
                            $max = $d;
                    else
                            $max = $b
                    echo $max ;             //printf max = 8
             + NÕu l−üng else Ýt hÂŹn l−üng If th× else thuĂ©c vÒ If ngÇn nhÊt
theo tĂ”ng cÆp tĂ” trong ra ngo”i.
            VÝ dî :
            <?php
            if ($a == $b)
            if ($c == $d)
                   $max = 0
            else
                   $max = $d;
            ?>
            T−¬ng ¼−¬ng víi :
            <?php
            if ($a == $b)

            {      if ( $c == $d)
                           $max = 0;
            }
            else
                   $max = $b;
            ?>
            * C©u lÖnh 2 cña dÂčng 2 l” elseif :


                                                                            15
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                              PHP & MySQL


     BŸt nguĂ„n tĂ” :                      CĂŁ thÓ viÕt lÂči nh− sau:
           if ( biÓu_thþc1 )                   if ( biÓu_thþc1 )
              c©u_lÖnh 1;                        c©u_lÖnh 1;
           else                                elseif (biÓu_thþc 2)
              if ( biÓu_thĂžc 2 )                    c©u_lÖnh 2;
                 c©u_lÖnh 2;                   elseif (biÓu_thĂžc 3)
              else                                  c©u_lÖnh 3;
                 if ( biÓu_thþc 3 )                 ...
                    c©u_lÖnh 3;                elseif (biÓu_thĂžc i)
                 ...                                c©u_lÖnh i;
                 else                               ...
                    if ( biÓu_thþc i )         else
                      c©u_lÖnh i;                   c©u_lÖnh n;
                    ...
                    else
                       c©u_lÖnh n;
           C©u lÖnh elseif tÂčo ra lÖnh rÏ nhžnh cĂŁ ÂźiÒu kiÖn trong Ÿã thĂčc
     hiÖn 1 trong n c¾ch kh¾c nhau.
               - NÕu biÓu_thĂžc i khžc kh«ng (i = 1,..n-1) th× thĂčc hiÖn c©u
        lÖnh i .
              - NÕu biÓu_thĂžc i b»ng kh«ng (i = 1, ..n-1) th× c©u lÖnh thĂž
        n ¼−üc thĂčc hiÖn.
     2. C©u lÖnh switch :
        switch (biÓu_thþc n)
        {
           case n1:
              c©u lÖnh 1;
              break;
           case n2:
              c©u lÖnh 2;
              break;
           ...
           case nn:
              c©u lÖnh nn;
          [default: c©u lÖnh]
        }



                                                                             16
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                               PHP & MySQL



        C©u lÖnh switch l” c©u lÖnh rÏ nhžnh cĂŁ ÂźiÒu kiÖn trong Ÿã thĂčc
  hiÖn mĂ©t trong n cži rÏ nhžnh.
        +NÕu biÓu_thĂžc n = ni (i = 1, .. n) th× c©u lÖnh sau case ni ¼−üc
  thĂčc hiÖn cho ¼Õn khi gÆp lÖnh break hoÆc dÊu ngoÆc “}”
        +NÕu biÓu_thĂžc n != mĂ€i ni (i = 1, .. n) m” cĂŁ nhžnh Default th×
  cžc c©u lÖnh sau Default ¼−üc thĂčc hiÖn.
        VÝ dî :
           <?php
           $val = 6;
           $a = 5;
           $b = 6;
           $d = 7;
           switch ($val)
           {
                 case $a :
                        echo (“five”);
                        break;
                 case $b :
                        echo (“six”);
                        break;
                 case $c :
                        echo (“seven”);
                        break;
                 default :
                        echo ($val);
              }
           ?>
     3. C©u lÖnh FOR:

     DÂčng lÖnh :        for (biÓu_thĂžc 1; biÓu_thĂžc 2; biÓu_thĂžc 3)
                                 c©u lÖnh ;
     LÖnh for l” lÖnh tÂčo chu tr×nh cĂŁ ÂźiÒu kiÖn.
     B−íc 1 : tÝnh biÓu_thþc 1
     B−íc 2 : tÝnh biÓu_thþc 2 :
            NÕu biÓu_thĂžc 2 khžc 0 th× thĂčc hiÖn c©u lÖnh v” sang b−íc 3.


                                                                            17
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                        PHP & MySQL



                NÕu biÓu_thĂžc 2 b»ng 0 th× kÕt thĂłc vßng for
      B−íc 3 : tÝnh biÓu_thĂžc 3 v” quay lÂči b−íc 2.
      + biÓu_thĂžc 1, biÓu_thĂžc 2, biÓu_thĂžc 3 l” cžc th”nh phÇn. Mçi th”nh
phÇn cĂŁ thÓ gĂ„m nhiÒu biÓu thĂžc. Khi Ÿã mçi biÓu thĂžc ¼−üc viÕt cžch nhau
mĂ©t dÊu phÈy (“,”).
      +Cžc biÓu thĂžc ¼−üc tÝnh lÇn l−üt tĂ” trži qua ph¶i
      +BiÓu thĂžc trong biÓu_thĂžc 2 quyÕt ¼Þnh thĂčc hiÖn th©n cña for.
      VÝ dî :
                     <?php
                             for($i = 0; $j = 4,$i < $j; $i++,$j--)
                             {      echo (“i =”. $i. “ ,j = “. $j. “<br>”);
                             }
                     ?>
       +CĂŁ thÓ vŸng mÆt bÊt kÓ th”nh phÇn n”o. NÕu vŸng mÆt biÓu_thĂžc 2
th× c©u lÖnh lu«n ¼−üc thĂčc hiÖn. MÆc dĂŻ vŸng mÆt vÉn ph¶i cĂŁ dÊu chÊm
phÈy (“;”)
            VÝ dî :
                     <?php
                             for ( ; ; ) {
                             if (my_function() == “stop”) break;
                             }
                     ?>
      +NÕu vŸng biÓu_thĂžc 1 v” biÓu_thĂžc 3 th× :
                                    for ( ; biÓu_thþc 2 ; ) cau_lenh ;
      t−¬ng ¼−¬ng víi :
                                    while (biÓu_thþc 2) cau_lenh ;
      4. C©u lÖnh WHILE

            while (biÓu_thþc)
                     c©u lÖnh ;


                                                                                  18
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                               PHP & MySQL



      LÖnh while l” mĂ©t lÖnh tÂčo chu tr×nh cĂŁ ÂźiÒu kiÖn. §iÒu kiÖn thĂčc hiÖn
¼−üc kiÓm tra Ă« ¼Çu chu tr×nh.
      B−íc 1 : TÝnh biÓu thþc
                NÕu biÓu thĂžc khžc kh«ng, sang b−íc 2
                NÕu biÓu thĂžc b»ng kh«ng, kÕt thĂłc vßng while
      B−íc 2 : ThĂčc hiÖn c©u lÖnh.
                Quay lÂči b−íc 1.
      ChĂł Ăœ :
   + BiÓu thĂžc cĂŁ thÓ bao gĂ„m nhiÒu biÓu thĂžc. Khi Ÿã cžc biÓu thĂžc ¼−üc
   viÕt cžch nhau mĂ©t dÊu phÈy ,v” ¼−üc tÝnh lÇn l−üt tĂ” trži qua ph¶i. BiÓu
   thĂžc cuĂši cĂŻng quyÕt ¼Þnh thĂčc hiÖn c©u lÖnh.
      + Kh«ng ¼−üc phÐp vŸng mÆt biÓu thĂžc
      + §Ó tÂčo chu tr×nh v« tËn th×


            while(1)
            {      ...
                   if (biÓu_thþc) break;
                   ...
            }
      VÝ dî :
            $i = 11;
            while (--$i)
            {      if (my_function($i) == “error”) {
                           break;
                   }
                   ++ $number;
            }



                                                                          19
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                PHP & MySQL



      5. LÖnh DO ... WHILE

      DÂčng lÖnh :
                     do {
                            c©u lÖnh;
                     }while (biÓu_thþc);
      LÖnh do ... while l” lÖnh tÂčo chu tr×nh cĂŁ ÂźiÒu kiÖn, trong Ÿã ÂźiÒu kiÖn
thĂčc hiÖn chu tr×nh ¼−üc kiÓm tra Ă« cuĂši chu tr×nh.
      HoÂčt Ÿéng :
      B−íc 1 : ThĂčc hiÖn c©u lÖnh
      B−íc 2 : TÝnh biÓu thþc biÓu_thþc
             +NÕu biÓu thĂžc biÓu_thĂžc khžc kh«ng th× quay lÂči b−íc 1
             +NÕu biÓu thĂžc biÓu_thĂžc b»ng kh«ng th× kÕt thĂłc do ... while.
      VÝ dî :
             <?php
                     echo (“<SELECT name=’num’>n”);
                     $i = 0;
                     $total = 10;
                     do {
                            echo (“t <OPTION value=$i>$i</OPTION>n”);
             }while(++ $i < $total);
             echo (“</SELECT>n”);
      ?>


      6. LÖnh break

      L” lÖnh rÏ nhžnh kh«ng ÂźiÒu kiÖn v” th−ĂȘng dĂŻng ¼Ó ra khĂĄi th©n cña
switch, while, do ... while, for .



                                                                            20
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                               PHP & MySQL



        LÖnh break chØ cho phÐp thožt khĂĄi th©n cžc lÖnh bÂȘn trong nhÊt chĂža
nĂŁ.
        7. LÖnh continue

      L” lÖnh rÏ nhžnh kh«ng ÂźiÒu kiÖn .LÖnh th−ĂȘng dĂŻng ¼Ó bŸt ¼Çu lÂči
mĂ©t chu tr×nh mĂ­i trong cžc lÖnh for, while, do ... while m” kh«ng cÇn thĂčc
hiÖn hÕt to”n bĂ© th©n cña cña lÖnh tÂčo chu tr×nh.


        8. Khai bžo tiÒn xö lĂœ include v” require .

       §Ó sö dĂŽng cžc ÂźoÂčn m· Ă« bÂȘn ngo”i, chĂłng ta cĂŁ thÓ sö dĂŽng khai
bžo tiÒn xö lĂœ include v” require. Cho phÐp chĂłng ta x©y dĂčng cžc h”m cžc
h»ng sĂš, v” bÊt kĂș ÂźoÂčn m· n”o sau Ÿã cĂŁ thÓ chÌn v”o cžc ÂźoÂčn script.
      Require khžc include l”, nĂŁ cĂŁ thÓ l”m thay ŸÊi nĂ©i dung cña trang hiÖn
      tÂči khi biÂȘn dÞch, cžc trang n”y dĂŻng ¼Ó khai bžo cžc biÕn, cžc h»ng sĂš
      hay cžc ÂźoÂčn m· Ÿn gi¶n kh«ng cĂŁ vßng lÆp. Khi Ÿã include cho phÐp
      thĂčc hiÖn cžc c©u lÖnh phĂžc tÂčp – cĂŁ c©u lÖnh tÂčo chu tr×nh. NĂŁ chØ sö
      dĂŽng cžc h”m nh− nhĂ·ng h”m ngo”i cña ch−¬ng tr×nh.

V. H”m trong PHP

1. Quy tŸc x©y dĂčng h”m

        function tÂȘn_h”m (danh sžch ŸÚi sĂš h×nh thĂžc) {
         Th©n h”m .
         }
      + §Þnh nghÜa h”m kh«ng nhÊt thiÕt ph¶i n»m ngo”i th©n mĂ€i h”m,
trong h”m cĂŁ thÓ cĂŁ h”m khžc. Nh−ng viÖc sö dĂŽng mĂ©t h”m kh«ng khžc
nhau giĂ·a x©y dĂčng h”m trong th©n mĂ©t h”m v” ngo”i mĂ€i h”m .
        + TÂȘn h”m tuĂș ¼Æt v” khžc tÂȘn h”m chuÈn.
        + H”m cĂŁ thÓ cĂŁ giž trÞ tr¶ vÒ hoÆc kh«ng.
      + Cžc c©u lÖnh ¼−üc quyÒn gĂ€i bÊt kĂș h”m n”o Ÿ· ¼−üc khai bžo v” Ÿ·
¼−üc ¼Þnh nghÜa.


                                                                              21
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                               PHP & MySQL



      + Return : - Tr¶ mĂ©t giž trÞ vÒ cho nÂŹi gĂ€i h”m
                - L” nÂŹi bžo kÕt thĂłc h”m
2. GÀi h”m .

      + H”m ph¶i ¼−üc x©y dĂčng (khai bžo) tr−íc khi gĂ€i .
      + Khi gĂ€i h”m, nÕu cĂŁ giž trÞ tr¶ vÒ th−ĂȘng ¼−üc ¼Æt trong biÓu thĂžc .


3. BiÕn to”n cĂŽ v” biÕn cĂŽc bĂ©.

      Th«ng th−ĂȘng PHP coi cžc biÕn ¼−üc sö dĂŽng trong th©n cña h”m l”
biÕn cĂŽc bĂ©. NghÜa l” biÕn trong th©n h”m kh«ng l”m thay ŸÊi giž trÞ cña
biÕn Ă« ngo”i h”m Ÿã. MuĂšn h”m l”m thay ŸÊi giž trÞ cña biÕn ngo”i ta cÇn
khai bžo global tr−íc biÕn Ÿã trong th©n h”m .
      VÝ dî :
            $position = “m”;
            function change_pos()
            {
                   $position = “s”;
            }
            change_pos();
            echo (“$position”);        //Prints “m”
      Ta thÊy biÕn $position giž trÞ kh«ng ŸÊi sau khi gĂ€i h”m change_pos().
            $position = “m”;
            function change_pos()
            {      global $position;
                   $position = “s”;
            }
            change_pos();
            echo (“$position”);        //Prints “s”


                                                                           22
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                               PHP & MySQL



      Ta cĂŁ thÓ viÕt nh− trÂȘn hoÆc ta cĂŁ thÓ viÕt :
            $position = “m”;
            function change_pos()
            {      GOLOBALS[$position] = “s”;
            }
            change_pos();
            echo (“$position”);         //Prints “s”

VI. BiÕn m¶ng trong PHP

      1. M¶ng mĂ©t chiÒu

      M¶ng l” mĂ©t biÕn bao gĂ„m nhiÒu phÇn tö cĂŁ cĂŻng tÂȘn nh−ng khžc
nhau vÒ chØ sĂš (cžc chØ sĂš n”y tšng dÇn tĂ” 0 ¼Õn n). VĂ­i ng«n ngĂ· lËp tr×nh
C, cžc phÇn tö cña m¶ng cĂŁ cĂŻng kiÓu dĂ· liÖu ,nh−ng vĂ­i PHP th× mÒm dÎo
hÂŹn. Cžc phÇn tö cña m¶ng kh«ng nhÊt thiÕt ph¶i cĂŻng kiÓu.
      a. Khai bžo m¶ng mĂ©t chiÒu.
      Ta cĂŁ thÓ khai bžo m¶ng b»ng cžch gžn tÂȘn m¶ng vĂ­i dÊu Ÿãng mĂ«
ngoÆc vu«ng kh«ng cĂŁ chØ sĂš. ChĂłng ta h·y xÐt vÝ dĂŽ sau :
      $countries[] = “cr”;
      $countries[] = “de”;
      $countries[] = “us”;
      VÝ dĂŽ trÂȘn tÂčo ra mĂ©t m¶ng gĂ„m ba phÇn tö cĂŁ chØ sĂš l” 0, 1 v” 2.
ViÖc Ÿã cĂČng t−¬ng tĂč nh− ta gžn :
      $countries[0] = “cr”;
      $countries[1] = “de”;
      $countries[2] = “us”;
      Ngo”i ra cžc chØ sĂš cña m¶ng kh«ng nhÊt thiÕt ph¶i tšng dÇn m” cĂŁ thÓ
¼−üc khai b¾o nh sau :
      $countries[50] = “cr”;

                                                                              23
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                PHP & MySQL



      $countries[20] = “de”;
      $countries[10] = “us”;
      echo (“$countries[20]”); // prints de
      Khi Ÿã ¼Ó thÂȘm mĂ©t phÇn tö mĂ­i v”o m¶ng chĂłng ta cĂŁ thÓ viÕt
      $countries[] = “uk”;      // chØ sĂš sÏ l” 51
      MĂ©t phÇn tö mĂ­i ¼−üc thÂȘm v”o vĂ­i chØ sĂš l” chØ sĂš lĂ­n nhÊt cña m¶ng
cĂ©ng thÂȘm mĂ©t. Ngo”i ra cĂČng cĂŁ thÓ khai bžo m¶ng mĂ©t chiÒu b»ng c©u
lÖnh array
      $countries = array (“cr”, “de”, “us”) ;
      echo (“$countries[2]”);      //prints “us”
      §Ó chØ sĂš kh«ng bŸt ¼Çu tĂ” kh«ng ta cĂŁ thÓ khai bžo lÂči nh− sau
      $countries = array (1 => “cr”, “de”, “us”);
      echo (“$countries[2]”); //prints “de”
      Tožn tö => cĂŁ thÓ ¼−üc sö dĂŽng tr−íc bÊt kĂș mĂ©t phÇn tö n”o trong
      m¶ng
      $countries = array (“cr”, 7 => “de”, “us”);
       v” khi Ÿã phÇn tö cĂŁ giž trÞ “cr” cĂŁ chØ sĂš l” 0 cßn phÇn tö cĂŁ giž trÞ
“de”, “us” lÇn l−üt l” 7 v” 8. Khžc vĂ­i ng«n ngĂ· lËp tr×nh C, chØ sĂš cña m¶ng
mĂ©t chiÒu kh«ng chØ l” cžc sĂš nguyÂȘn m” cßn l” x©u kĂœ tĂč. Ta cĂŁ thÓ khai
b¾o nh− sau :
      $countries[“ca”] = “Canada”;
      $countries[“cr”] = “Costa Rica”;
      $countries[“de”] = “Germany”;
      $countries[“uk”] = “United Kingdom”;
      $countries[“us”] = “United States”;
      echo (“$countries[“ca”]);          // print Canada
      NÕu dĂŻng array th× sÏ l” :
      $countries = (“ca” => “Canada”,



                                                                            24
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng             PHP & MySQL



                  “cr” => “Costa Rica”,
                  “de” => “Germany”,
                  “uk” => “United Kingdom”,
                  “us” => “United States”);




                                                       25
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                              PHP & MySQL



      b. L”m viÖc vĂ­i cžc phÇn tö cña m¶ng

      CĂŁ thÓ sö dĂŽng vßng lÆp for xÐt tĂ”ng phÇn tö cña m¶ng.
      $countries = array (“cr”, “de”, “us”);
      $num_elements = count($countries);
      for ($i = 0 ; $i < $num_elements ; $i ++) {
             echo (“$countries[$i] <BR>n”);
      }
      VÝ dĂŽ trÂȘn sÏ Ÿóng khi chØ sĂš cña cžc phÇn tö tšng dÇn ¼Òu. NÕu chØ sĂš
cžc phÇn tö kh«ng theo mĂ©t thĂž tĂč n”o c¶ ta cĂŁ thÓ sö dĂŽng h”m list() v”
each().
      reset ($countries);
      while (list ($key, $value ) = each ($countries)) {
             echo (“ChØ sù $key, gi¾ trÞ $value”);
      }
   §Ó di chuyÓn con trĂĄ tĂ­i phÇn tö tiÕp theo hoÆc tr−íc Ÿã ta cĂČng cĂŁ thÓ
   dĂŻng h”m next() - h”m next() tr¶ vÒ l” 1 (true) nÕu phÇn tö tiÕp theo
   kh«ng ph¶i l” phÇn tö cuĂši cĂŻng, ng−üc lÂči l” 0 (false) v” prev() - h”m
   prev() cho giž trÞ tr¶ vÒ l” 1 (true) nÕu phÇn tö tiÕp theo kh«ng ph¶i l”
   phÇn tö ¼Çu tiÂȘn, ng−üc lÂči l” 0 (false). H”m key () sÏ cho biÕt chØ sĂš v”
   h”m current() sÏ cho biÕt giž trÞ cña phÇn tö Ÿã .
      $arr = array (3, 4, 5, 6, 7);
      do {
             $k = key ($arr);
             $val = current ($arr);
             echo (“PhÇn tö $k = $val”);
      }while
      2. M¶ng hai chiÒu

      ChĂłng ta cĂŁ thÓ khai bžo m¶ng hai chiÒu nh− sau :


                                                                          26
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                   PHP & MySQL



     $countries = array (“Europs” => array (“de”, “uk”),
                          “North America” => array (“ca”, “cr”, “us”));
     echo ($countries[“Europs”][1]);                // print “uk”
     echo ($countries[“North America”][2]);         // print “us”
   Ta cĂŁ cÊu trĂłc cña m¶ng trÂȘn nh− sau :

         $countries[“Europs”]          $countries[“North America”]
            [0]           [1]            [0]         [1]            [2]
         “de”            “uk”          “ca”         “cr”            “us”
   CĂČng giĂšng nh− m¶ng mĂ©t chiÒu ta sÏ dĂŻng vßng lÆp nh− for, while, do
   ... while ¼Ó duyÖt qua cžc phÇn tö cña m¶ng.
   VÝ dî :
     $countries = array (“Europs” => array (“de”, “uk”),
                          “North America” => array (“ca”, “cr”, “us”));
     while (list ($key1) = each ($countries)) {
              echo (“$key1 : <BR>n”);
              while (list ($key2, $val) = each($countries[“$key1”])) {
                    echo (“ - $val <BR>n”)
     }
     }
     Khi chÂčy ch−¬ng tr×nh sÏ in ra m”n h×nh l” :
     Europ :
     - de
     - uk
     North America :
     - ca
     - cr
     - us


                                                                             27
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                PHP & MySQL



      3. Cžc h”m sŸp xÕp m¶ng .

      PHP cung cÊp cho chĂłng ta cžc h”m ¼Ó sŸp xÕp m¶ng. VĂ­i mçi loÂči
m¶ng sÏ cĂŁ mĂ©t h”m t−¬ng Ăžng. VĂ­i m¶ng cĂŁ chØ sĂš l” kiÓu nguyÂȘn chĂłng ta
cĂŁ h”m sort() ¼Ó sŸp xÕp tšng dÇn cžc phÇn tö cña m¶ng, h”m rsort() sÏ sŸp
xÕp cžc phÇn tö cña m¶ng gi¶m dÇn .
      $countries = array (“us”, “uk”, “ca”, “cr”, “de”);
      sort ($countries);
      while (list ($key, $val) = each ($countries)) {
             echo (“Element $key equals $val <BR>n”);
      }
      Khi chÂčy ch−¬ng tr×nh sÏ l” :
      Element 0 equals ca
      Element 1 equals cr
      Element 2 equals de
      Element 3 equals uk
      Element 4 equals us
       VĂ­i m¶ng chØ sĂš cĂŁ kiÓu string th× dĂŻng h”m asort (), arsort () ¼Ó sŸp
xÕp m¶ng theo chiÒu tšng dÇn v” gi¶m dÇn. NÕu bÂčn dĂŻng cžc h”m sort() v”
rsort() th× cžc chØ sĂš cĂŁ kiÓu string sÏ chuyÓn th”nh cžc chØ sĂš cĂŁ kiÓu
nguyÂȘn.
       $countries = array(“us” => “United States”,
                            “uk” => “United Kingdom”,
                            “ca” => “Canada”,
                            “cr” => “Costa Rica”,
                            “de” => “Germany”);
      asort ($countries);
      while (list($key, $val) = each($countries)) {
             echo “Chi so $key bang $val <BR>n”;


                                                                            28
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                              PHP & MySQL



      }
      KÕt qu¶ khi chÂčy ch−¬ng tr×nh :
      Chi so ca bang Canada
      Chi so cr bang Costa Rica
      Chi so de bang Germany
      Chi so uk bang United Kingdom
      Chi so us bang United States
      Nh−ng nÕu thay dßng asort ($countries); b»ng sort ($countries); kÕt
qu¶ sÏ l”
      Chi so 0 bang Canada
      Chi so 1 bang Costa Rica
      Chi so 2 bang Germany
      Chi so 3 bang United Kingdom
      Chi so 4 bang United States
       §Ó sŸp xÕp m¶ng tšng dÇn hay gi¶m dÇn theo chØ sĂš chĂłng ta cĂŁ h”m
ksort() – tšng dÇn v” krsort() – gi¶m dÇn .
      $countries = array(“e” => “United States”,
                            “d” => “United Kingdom”,
                            “c” => “Canada”,
                            “b” => “Costa Rica”,
                            “a” => “Germany”);
      ksort ($countries);
      while (list($key, $val) = each($countries)) {
            echo “Chi so $key bang $val <BR>n”;
      }
      KÕt qu¶ :
      Chi so a bang Germany


                                                                            29
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                              PHP & MySQL



      Chi so b bang Costa Rica
      Chi so c bang Canada
      Chi so d bang United Kingdom
      Chi so e bang United States


      VII. LËp tr×nh h−íng ¼ùi t−üng (OOP)

      1. §Þnh nghÜa líp .

      ChĂłng ta cĂŁ thÓ ¼Þnh nghÜa lĂ­p b»ng tožn tö class, v” trong mçi mĂ©t
lĂ­p chĂłng ta sÏ x©y dĂŽng cžc ph−¬ng thĂžc v” thuĂ©c tÝnh cho lĂ­p Ÿã .
      Gi¶ sö muĂšn ¼Þnh nghÜa lĂ­p “Sesssion” chĂłng ta l”m nh− sau :
      <?php
      class Session
      {
              // §Þnh nghÜa cžc thuĂ©c tÝnh v” ph−¬ng thĂžc
              // X©y dĂčng cžc ph−¬ng thĂžc cho lĂ­p
      }       // KÕt thĂłc mĂ©t lĂ­p
      ?>
       §Ó ¼Þnh nghÜa thuĂ©c tÝnh cho lĂ­p chĂłng ta ¼Æt tĂ” khož var tr−íc thuĂ©c
tÝnh ¼ã.
      <?
              class Session
              {
                    var $sqlhost = “localhost”;
                    var $sqluser = “root”;
                    var $sqlpass = “password”;
                    var $sqldb = “session”;


                                                                            30
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                             PHP & MySQL



                   var $linkid;
                   var $seshid;
                   var $sessdata;
                   var $userid;
                   var $error_no;
                   var $err;
                   ...
                   // §Þnh nghÜa cžc ph−¬ng thĂžc Ă« Ÿ©y
            }      //KÕt thóc ¼Þnh nghÜa líp
      ?>
      TiÕp theo chĂłng ta sÏ ¼Þnh nghÜa cžc ph−¬ng thĂžc cho lĂ­p trÂȘn.
Ph−¬ng thĂžc cÇn x©y dĂčng ¼Çu tiÂȘn l” Session() sau Ÿã ¼Õn cžc ph−¬ng thĂžc
khžc.
      <?
      // §Þnh nghÜa líp Session
      class Session
      {
            // §Þnh nghÜa cžc thuĂ©c tÝnh
            .. .
            // §Þnh nghÜa c¾c ph−¬ng thþc
      function Session($localSeshID, $localUserID=0)
      {
      $this->seshid = $localSeshID;
      $this->userid = $localUserID;
      // KÕt nùi tíi MySQL
      $this->linkid=mysql_connect($this->sqlhost, $this->sqluser, $this-
>sqlpass);


                                                                           31
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                      PHP & MySQL



      if (!$this->linkid)
            {
                $this->err=mysql_error();
                $this->error_no=102;
            }
      }
      ...       // §Þnh nghÜa c¾c ph−¬ng thþc kh¾c
      }
      ?>
      2. Sö dĂŽng lĂ­p Ÿ· ¼−üc ¼Þnh nghÜa.

      §Ó khai bžo mĂ©t ŸÚi t−üng cĂŁ kiÓu thuĂ©c lĂ­p Ÿ· x©y dĂčng ta dĂŻng tožn
tö new nh− sau :
      <?php
                require (“classes/sessions.php”);    //include class
                $mysesh = new Session($seshid);
      if ($mysesh->error_no)
                {
                      //Th«ng bžo cã lçi
                }
                $user = $mysesh->sessdata[userid];
      ?>
      <HTML>
      <HEAD>
      <TITLE>Welcome to my website, <? echo $user ?></TITLE>
      </HEAD>
      <BODY>
      <a href=”nextpage.php?seshid=<? print $user ?>”>Next Page </a>

                                                                                32
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                 PHP & MySQL



      <FORM ACTION=”nextpage.php” METHOD=”POST”>
      <input type=”hidden” name=”seshid” value=”<? print $seshid ?>”>
      </FORM>
      </BODY>
      </HTML>

VIII. T×m hiÓu thÂȘm vÒ HTML

       PhÇn mĂ©t chĂłng ta Ÿ· t×m hiÓu sÂŹ l−üc vÒ ng«n ngĂ· HTML. Trong
mĂŽc n”y chĂłng ta sÏ tr×nh b”y thÂȘm vÒ nĂŁ vĂ­i trĂ€ng t©m l” FORM cña
HTML. LĂœ do l” v× khi muĂšn giao tiÕp giĂ·a HTML v” PHP script th× kh«ng
thÓ kh«ng biÕt ¼Õn FORM. FORM l” c«ng cĂŽ phĂŠ biÕn nhÊt ¼Ó chuyÓn dĂ·
liÖu tĂ” HTML ¼Õn PHP script (client lÂȘn server).
Th«ng th−ĂȘng, khi viÕt mĂ©t script, ng−ĂȘi ta thiÕt kÕ mĂ©t FORM sao cho nĂŁ
cung cÊp ¼Çy Ÿñ nhĂ·ng th«ng tin m” script cÇn ¼Ó xö lĂœ.
      1. CÊu trĂłc cña mĂ©t FORM

      MĂ©t FORM ¼−üc mĂ« ¼Çu b»ng thÎ <FORM ... > v” kÕt thĂłc b»ng thÎ
      </FORM>.
   Trong FORM cĂŁ :
       - ThuĂ©c tÝnh : FORM th−ĂȘng cĂŁ ba thuĂ©c tÝnh, ba thuĂ©c tÝnh n”y n»m
trong thÎ FORM mĂ« ¼Çu cña mĂ©t FORM : action, method, enctype .
        - C¾c thÎ ¼−üc dïng trong FORM : input, select, textarea, hn, p, hr,
dir, dl, menu, ol, ul, address, blockquote, [isindex]. pre .
      - FORM cĂŁ ba th”nh phÇn chÝnh : textarea, select, input .
      - FORM cã thÓ ¼−üc dïng trong c¾c thÎ : blockquote,body,dd, li.
      2. Cžc thuĂ©c tÝnh

      Khi tÂčo mĂ©t FORM ,c«ng viÖc ¼Çu tiÂȘn l” xžc ¼Þnh thuĂ©c tÝnh cña nĂŁ.
      - ThuĂ©c tÝnh action : Action=”URL” chØ ¼Õn script m” FORM sö
dĂŽng. Ngo”i ra nĂŁ cĂČng cĂŁ thÓ l” mailto url, khi Ÿã nĂ©i dung cña FORM
¼−üc mail ¼Õn ¼Þa chØ trong url .


                                                                               33
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                              PHP & MySQL



        - ThuĂ©c tÝnh method : Method cĂŁ thÓ ¼−üc gžn b»ng “GET” hoÆc
“POST” ,nĂŁ chØ ra ph−¬ng thĂžc Post hay Get sÏ ¼−üc sö dĂŽng trong FORM,
giž trÞ ngÇm ¼Þnh l” Get.
       - ThuĂ©c tÝnh enctype : Enctype=”Mime_type” :chØ ra loÂči dĂ· liÖu sÏ
göi Âźi. Giž trÞ ngÇm ¼Þnh l” application/x-www-form-urlencode.
      Trong mĂ©t trang chĂłng ta cĂŁ thÓ sö dĂŽng nhiÒu FORM nhng kh«ng
¼−üc lĂ„ng chĂłng v”o nhau.
      2. Cžc th”nh phÇn cÂŹ b¶n cña FORM.

      MĂ©t FORM ,th«ng th−ĂȘng cĂŁ ba th”nh phÇn chÝnh :
      +Textarea
      +Select
      +Input
      a - Textarea

      §−üc bŸt ¼Çu b»ng thÎ <Texterea> v” kÕt thĂłc b»ng thÎ </Texterea>.
BÂȘn trong chĂža cžc kĂœ tĂč, thÎ n”y ¼−üc dĂŻng lĂ„ng v”o trong FORM.
      Cžc thuĂ©c tÝnh cña Texterea .
      - Name : §Þnh nghÜa tÂȘn cña th”nh phÇn, thuĂ©c tÝnh n”y lu«n lu«n ph¶i
cĂŁ.
      - Rows : Cho biÕt sĂš h”ng cña hĂ©p všn b¶n.
      - Cols : Cho biÕt sĂš cĂ©t cña všn b¶n.
      Wrap : ChØ ra cžch xö lĂœ word_wraping (cšn chiÒu d”i cña dßng všn
b¶n theo kÝch th−íc cña hĂ©p všn b¶n) trong hĂ©p thoÂči. NÕu wrap=”off”, chĂžc
nšng word_wraping bÞ cÊm. NÕu wrap=”vitual”, chĂžc nšng n”y ¼−üc bËt lÂȘn,
khi gĂą všn b¶n v”o, ta thÊy con trĂĄ tĂč Ÿéng xuĂšng h”ng mçi khi nĂŁ chÂčy ¼Õn
biÂȘn cña hĂ©p všn b¶n, kĂœ tĂč newline (OA hex) tĂč Ÿéng ¼−üc thÂȘm v”o nh−ng
kh«ng ¼−üc göi Âźi cĂŻng FORM. NÕu wrap=”physical”, chĂžc nšng n”y cĂČng
¼−üc bËt v” hoÂčt Ÿéng nh− trÂȘn nh−ng kĂœ tĂč newline ¼−üc göi Âźi cĂŻng vĂ­i
FORM.




                                                                            34
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                  PHP & MySQL



      Všn b¶n n»m giĂ·a hai thÎ <Texterea> v” </Texterea> sÏ ¼−üc thÓ hiÖn
nh− ÂźoÂčn všn b¶n ngÇm ¼Þnh trong vĂŻng dĂ· liÖu.
      VÝ dî:
       <Texterea name=”van_ban” rows=”4” cols=”40”>
               .. .
       </ Texterea >
      b. Select

      §−üc bŸt ¼Çu b»ng thÎ <Select> v” kÕt thĂłc b»ng thÎ </ Select >, cÆp
thÎ n”y cĂŁ thÓ lĂ„ng trong FORM hay bÊt kĂș th”nh phÇn n”o cña FORM
ngoÂči trĂ” Texterea v” Select .
      Select cĂŁ cžc thuĂ©c tÝnh sau :
      - Name : TÂȘn cña th”nh phÇn.
       - Size : Cho biÕt sĂš th”nh phÇn sÏ hiÓn thÞ, giž trÞ ngÇm ¼Þnh l” 1, do
Ÿã danh sžch lĂča chĂ€n th−ĂȘng ¼−üc thÓ hiÖn dĂ­i dÂčng pop-up menu. ThuĂ©c
tÝnh n”y cĂŁ thÓ kh«ng cĂŁ.
      - Multiple : NÕu thuĂ©c tÝnh n”y ¼−üc thiÕt lËp, nhiÒu lĂča chĂ€n sÏ ¼−üc
chĂ€n cĂŻng mĂ©t lĂłc, ng−üc lÂči chØ ¼−üc chĂ€n mĂ©t item.
      Khi sö dĂŽng Select, chĂłng ta cĂŁ thÓ dĂŻng thÂȘm Option
      <Option>. .. .. .. </Option>
      BÂȘn trong chĂža cžc kĂœ tĂč, cĂŁ thÓ ¼−üc sö dĂŽng lĂ„ng v”o Select .
      Cžc thuĂ©c tÝnh Option :
     - Disable : §žnh mĂ©t lĂča chĂ€n bÞ cÊm. Khi hiÓn thÞ, chĂ€n lĂča n”y sÏ bÞ
che mĂȘ.
      - Selected : §žnh dÊu chĂ€n lĂča n”y Ÿ· ¼−üc chĂ€n, nÕu thuĂ©c tÝnh
Multiple ¼−üc bËt trong Select, bÂčn cĂŁ thÓ Ÿžnh dÊu Selected nhiÒu chĂ€n lĂča
cĂŻng lĂłc. NĂŁ dĂŻng ¼Ó Ÿžnh dÊu cžc lĂča chĂ€n ngÇm ¼Þnh.
      - Value : ChØ ra giž trÞ ¼−üc gžn cho lĂča chĂ€n, nÕu kh«ng cĂŁ th× nĂ©i
dung cña th− mĂŽc option sÏ ¼−üc göi Âźi thay cho value.
      c. Input


                                                                                 35
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                 PHP & MySQL



      MĂ« ¼Çu b»ng thÎ < Input >, thÎ n”y cĂŁ thÓ dĂŻng trong bÊt cĂž th”nh
phÇn n”o khžc cña FORM ngoÂči trĂ” Texterea v” Select.
      Cžc thuĂ©c tÝnh :
       - Align : CĂŁ thÓ l” mĂ©t trong ba giž trÞ top, middle, bottom dĂŻng ¼Ó
cšn lÒ ¶nh vĂ­i cžc všn b¶n xung quanh, thuĂ©c tÝnh n”y chØ cĂŁ Ăœ nghÜa vĂ­i
Type=“image” .
       - Name : gŸn tÂȘn biÕn cho dĂ· liÖu cña th”nh phÇn n”y. Giž trÞ cña
thuĂ©c tÝnh do user lĂča chĂ€n .
     - Type : ¼Þnh ra mĂ©t trong nhĂ·ng giž trÞ sau checkbox, hidden, image,
password, radio, reset, submit, text, file, bottom .
     - Checked : chØ ra mĂ©t nĂłt radio, hay mĂ©t checkbox cÂŹ ¼−üc chĂ€n hay
kh«ng.
      - Maxlength : chØ ra chiÒu d”i tĂši Âźa m” hĂ©p thoÂči všn b¶n cĂŁ thÓ chĂža,
thuĂ©c tÝnh n”y chØ cĂŁ Ăœ nghÜa vĂ­i input cĂŁ type=”text” hay type=”password” .
      - Size : chØ ra kÝch th−íc thĂčc sĂč cña hĂ©p thoÂči všn b¶n.
IX. Tãm l−üc

   Nh− vËy, chĂłng ta Ÿ· kh¶o sžt hÇu hÕt cžc chĂžc nšng cÂŹ b¶n cña PHP, tĂ”
   cžc kiÓu dĂ· liÖu, khai bžo biÕn, h”ng, m¶ng cho tĂ­i cžch thĂčc hiÖn
   ch−¬ng tr×nh dÂčng Mžy khžch/Mžy chñ (Client/Server), v” nhĂłng cžc
   ÂźoÂčn m· PHP v”o cžc trang HTML .v.v.
      Nh− trÂȘn chĂłng ta Ÿ· tr×nh b”y, cÂŹ sĂ« dĂ· liÖu cho trang Web l” th”nh
phÇn kh«ng thÓ thiÕu, nĂŁ Ÿãng vai trß quyÕt ¼Þnh cho ch−¬ng tr×nh. VÝ lĂœ do
Ÿã, phÇn tiÕp theo chĂłng ta sÏ kh¶o sžt ng«n ngĂ· SQL v” cžc h”m API cña
PHP ¼Ó thĂčc hiÖn cžc lÖnh truy vÊn trÂȘn hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu MySQL.

X. Cžc h”m API trong PHP
      1. Giíi thiÖu vÒ MySQL .

      PHP hç trĂź mĂ©t sĂš l−üng lĂ­n cžc h”m l”m viÖc vĂ­i cÂŹ sĂ« dĂ· liÖu nh
Oracle, Sybase, PostgreSQL, MySQL. .. Th«ng qua chuÈn ODBC (Open
Database Connectivity), b»ng cžch sö dÎng cžc h”m API (Application


                                                                              36
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                               PHP & MySQL



Programming Interface) m” PHP cĂŁ thÓ l”m viÖc ¼−üc vĂ­i nhiÒu hÖ qu¶n trÞ
cÂŹ sĂ« dĂ· liÖu nh− vËy. NÕu hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu kh«ng hç trĂź ODBC ,v”
hÂŹn nĂ·a ODBC cĂŁ ¼Æc ÂźiÓm chØ hç trĂź Ă« dÂčng chuÈn th× PHP cĂŁ thÓ l”m viÖc
vĂ­i ODBC Ă« tÇng trÂȘn. NÕu kh«ng muĂšn sö dĂŽng ODBC ta cĂŁ thÓ sö dĂŽng
cžc h”m API .
      Trong phÇn n”y chĂłng ta chØ sö dĂŽng cžc h”m API ¼Ó l”m viÖc vĂ­i hÖ
qu¶n trÞ cÂŹ sĂ« dĂ· liÖu MySQL .
2. Cžc h”m cÂŹ b¶n l”m viÖc vĂ­i cÂŹ sĂ« dĂ· liÖu MySQL.

      a) Cžc h”m kÕt nĂši ¼Õn MySQL Server
     PHP cung cÊp hai h”m ¼Ó kÕt nĂši vĂ­i cÂŹ sĂ« dĂ· liÖu MySQL :
mysql_connect v” mysql_pconnect .
    + mysql_connect () : h”m n”y sÏ tÂčo ra mĂ©t liÂȘn kÕt tĂ­i mžy chñ
MySQL .
   Có phžp :
      int mysql_connect (string [hostname [:port] [:/path_to_socket]], string
[username], string [password]);
      Trong Ÿã :
       - hostname : TÂȘn mžy chñ cÂŹ sĂ« dĂ· liÖu, nÂŹi trang web sÏ chĂža cÂŹ sĂ«
dĂ· liÖu. Giž trÞ ngÇm ¼Þnh l” “localhost’”
   - :port : §Þa chØ cĂŠng, nÂŹi bĂ© mžy cÂŹ sĂ« dĂ· liÖu lŸng nghe yÂȘu cÇu. Giž trÞ
   ngÇm ¼Þnh l” “:3306” .
    - :/path_to_socket : CĂČng giĂšng nh− :port nh−ng chØ cho hÖ ÂźiÒu h”nh
UNIX. Giž trÞ ngÇm ¼Þnh l” “:/tmp/mysql.sock” .
       - username : TÂȘn cña ng−ĂȘi sö dĂŽng ¼−üc phÐp kÕt nĂši v”o bĂ© mžy cÂŹ
sĂ« dĂ· liÖu.
       - password : MËt khÈu cña ng−ĂȘi sö dĂŽng ¼Ó kÕt nĂši v”o bĂ© mžy cÂŹ sĂ«
dĂ· liÖu.
       H”m n”y tr¶ vÒ m· sĂš nhËn dÂčng nÕu kÕt nĂši th”nh c«ng, giž trÞ 0
(false) nÕu viÖc kÕt nĂši cĂŁ lçi. M· sĂš nhËn dÂčng n”y sÏ ¼−üc sö dĂŽng cho tÊt
c¶ cžc yÂȘu cÇu tĂ­i bĂ© mžy cÂŹ sĂ« dĂ· liÖu sau n”y.


                                                                             37
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                 PHP & MySQL



      SĂč kÕt nĂši n”y sÏ Ÿãng lÂči khi gĂ€i h”m mysql_close() hoÆc kÕt thĂłc
ÂźoÂčn PHP script.
     + mysql_pconnect() : H”m n”y tÂčo ra mĂ©t liÂȘn kÕt bÒn vĂ·ng vĂ­i mžy
chñ MySQL.
   Có phžp :
   int mysql_pconnect (string [hostname [:port] [:/path_to_socket]], string
   [username], string [password]);
      Tham sĂš v” giž trÞ tr¶ vÒ cña h”m n”y cĂČng giĂšng h”m
mysql_connect(). SĂč khžc biÕt giĂ·a hai h”m n”y l” liÂȘn kÕt tĂ­i mžy chñ
MySQL kh«ng bÞ Ÿãng lÂči kÓ c¶ khi kÕt thĂłc kÞch b¶n (script) PHP hay gĂ€i
h”m mysql_close(). MĂŽc ¼Ých cña h”m n”y l” lu«n lu«n duy tr× liÂȘn kÕt tĂ­i
mžy chñ MySQL do lu«n cĂŁ sĂč yÂȘu cÇu tĂ­i mžy chñ, tržnh cho mžy chñ ph¶i
t×m kiÕm m· sĂš nhËn dÂčng mĂ­i tĂ” Ÿã gi¶m thĂȘi gian truy cËp .
      ChĂł Ăœ : h”m n”y chØ thĂčc hiÖn ¼−üc khi PHP ¼−üc ¼Þnh cÊu h×nh nh−
l” mét module cña Web server .
      + mysql_close() : H”m n”y huĂ» bĂĄ sĂč kÕt nĂši tĂ­i mžy chñ MySQL .
      Có phžp :
      int mysql_close(int [link_identifier]);
     Tham sĂš link_identifier l” m· sĂš nhËn dÂčng tÂčo ra bĂ«i h”m
mysql_connect(). H”m tr¶ vÒ l” True nÕu th”nh c«ng, ng−üc lÂči l” False .
      b) Cžc h”m thao tžc trÂȘn CSDL
      + mysql_create_db() : H”m tÂčo cÂŹ sĂ« dĂ· liÖu
   Có phžp :
      int mysql_create_db(string name, int [link_identifier]) ;
   Trong Ÿã :
      - string name : TÂȘn cña cÂŹ sĂ« dĂ· liÖu cÇn tÂčo.
     - int link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m
mysql_connect() .
   ChĂłng ta ho”n to”n cĂŁ thÓ göi c©u lÖnh SQL ¼Ó tÂčo cÂŹ sĂ« dĂ· liÖu th«ng
   qua h”m mysql_query() .


                                                                           38
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                               PHP & MySQL



      + mysql_drop_db() : H”m xož cÂŹ sĂ« dĂ· liÖu
   Có phžp :
      int mysql_drop_db(string name, int [link_identifier]);
      Trong Ÿã :
      - string name : TÂȘn cña cÂŹ sĂ« dĂ· liÖu cÇn xož .
     - int link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m
mysql_connect() .
   ChĂłng ta ho”n to”n cĂŁ thÓ göi c©u lÖnh SQL ¼Ó xož cÂŹ sĂ« dĂ· liÖu th«ng
   qua h”m mysql_query().
      + mysql_select_db() : H”m cho cÂŹ sĂ« dĂ· liÖu hoÂčt Ÿéng .
   Có phžp :
      int mysql_select_db(string database_name, int [link_identifier]);
      Trong Ÿã:
      - database_name : TÂȘn cña cÂŹ sĂ« dĂ· liÖu m” sau n”y cžc h”m API
khžc cña PHP sÏ thĂčc hiÖn trÂȘn Ÿã.
      - int link_identifier : M· nhËn dÂčng ¼−üc cÊp bĂ«i h”m mysql_connect().
      C©u lÖnh n”y sÏ gŸn tÂȘn cÂŹ sĂ« dĂ· liÖu vĂ­i m· nhËn dÂčng, sau n”y khi
      l”m viÖc vĂ­i link_identifier sÏ bao gĂ„m c¶ cÂŹ sĂ« dĂ· liÖu ¼−üc chĂ€n .
      c) Cžc h”m thao tžc trÂȘn dĂ· liÖu
      + mysql_query() : H”m göi c©u lÖnh SQL tĂ­i mžy chñ MySQL .
      Có phžp :
      int mysql_query(string query, [int link_identifier]) ;
      Trong Ÿã :
      - string query : C©u lÖnh SQL cÇn göi tĂ­i mžy chñ MySQL .
     - int link_identifier : M· sĂš nhËn dÂčng, nĂŁ ph¶i ¼−üc thĂčc hiÖn trong
h”m mysql_select_db() tr−íc Ÿã .
      + mysql_db_query() : H”m göi c©u lÖnh SQL tĂ­i mžy chñ MySQL .
   Có phžp :



                                                                             39
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                PHP & MySQL



       int mysql_db_query(string database, string query, int
[link_identifier]);
      Trong Ÿã :
      - string database : TÂȘn cÂŹ sĂ« dĂ· liÖu c©u lÖnh SQL sÏ thĂčc hiÖn trÂȘn Ÿã.
      - string query : C©u lÖnh SQL cÇn thĂčc hiÖn .
      - link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m mysql_connect()
       H”m n”y chØ rĂą c©u lÖnh ¼−üc thĂčc hiÖn trÂȘn cÂŹ sĂ« dĂ· liÖu n”o nÂȘn
tr−íc Ÿã kh«ng cÇn thĂčc hiÖn h”m mysql_select_db();
      +mysql_insert_id() :
      H”m lÊy giž trÞ ¼−üc sinh ra tĂ” c©u truy vÊn INSERT trĂ­c
      Có phžp :
   int mysql_insert_id([link_identifier]) ;
      trong Ÿã:
      int link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m
mysql_connect() .
        H”m n”y tr¶ vÒ giž trÞ id ¼−üc sinh ra trong cĂ©t AUTO_INCREMENT
bĂ«i c©u truy vÊn tr−íc Ÿã. §iÒu n”y chØ cĂŁ tžc dĂŽng trÂȘn link_identifier ¼−üc
chØ ra trong h”m, nÕu gĂ€i h”m trÂȘn m” kh«ng chØ ¼Þnh tham sĂš link_identifier
th× liÂȘn kÕt ¼−üc mĂ« cuĂši cĂŻng sÏ ¼−üc chØ ¼Þnh.
H”m mysql_insert_id() tr¶ vÒ giž trÞ 0 nÕu c©u truy vÊn tr−íc Ÿã kh«ng sinh
ra mĂ©t giž trÞ AUTO_INCREMENT. NÕu ta muĂšn giĂ· lÂči giž trÞ cho lÇn sau,
th× ph¶i gĂ€i h”m n”y ngay sau c©u truy vÊn sinh ra giž trÞ .
   + mysql_fetch_row() :
       H”m tr¶ vÒ mĂ©t m¶ng l” giž trÞ cña mĂ©t b¶ng ghi hiÖn tÂči vĂ­i chØ sĂš l”
sĂš thĂž tĂč cña cžc tr−ĂȘng (chØ sĂš bŸt ¼Çu tĂ” 0). Sau Ÿã h”m sÏ trĂĄ tĂ­i b¶ng ghi
tiÕp theo cho tĂ­i khi gÆp b¶ng ghi cuĂši cĂŻng h”m tr¶ vÒ giž trÞ false. §Ó truy
xuÊt tĂ­i cžc giž trÞ cña cĂ©t ta viÕt : tÂȘn_m¶ng[sĂš thĂž tĂč]
   Có phžp :
      array mysql_fetch_row( int result_identifier);



                                                                             40
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                 PHP & MySQL



      Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query()
hoÆc mysql_db_query() .
      VÝ dî :
      <?php
           $mysql = “select id, name from ds_thanhvien”; // cau lenh SQL
           $link = mysql_connect($host, $user, $password); //lay ma
           mysql_select_db($database_name, $link);
           $result = mysql_query($mysql ,$link);
           while ($row = mysql_fetch_row($result))
              {
                    echo $row[0] ;
                    echo $row[1];
              }
      ?>
+ mysql_fetch_array() :
        H”m tr¶ vÒ mĂ©t m¶ng l” giž trÞ cña mĂ©t b¶ng ghi hiÖn tÂči, sau Ÿã h”m
sÏ trĂĄ tĂ­i b¶ng ghi tiÕp theo cho tĂ­i khi gÆp b¶ng ghi cuĂši cĂŻng h”m tr¶ vÒ
gi¾ trÞ false.
   Có phžp :
      array mysql_fetch_array( int result_identifier [, int result_type] );
      Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query()
hoÆc mysql_db_query() .
      §Ó truy xuÊt ¼Õn cžc th”nh phÇn cña cĂ©t :
                  tÂȘn_biÕn_m¶ng[“tÂȘn_trĂȘng”];
      result_type l” mĂ©t h»ng sĂš cĂŁ thÓ nhËn cžc giž trÞ sau:
      -MYSQL_NUM : chØ tr¶ lÂči mĂ©t m¶ng chĂža cžc chØ sĂš l” sĂš (giĂšng
nh− h”m mysql_fetch_row() )
      -MYSQL_ASSOC: chØ tr¶ lÂči mĂ©t m¶ng liÂȘn kÕt


                                                                              41
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                PHP & MySQL



       -MYSQL_BOTH : tr¶ lÂči m¶ng chĂža ÂźĂčng cžc chØ sĂš gĂ„m c¶ cžc con
sĂš v” chØ sĂš liÂȘn kÕt .
       H”m n”y l” sĂč mĂ« rĂ©ng cña h”m mysql_fetch_row(). NĂŁ cho phÐp truy
cËp tr−ĂȘng dĂ· liÖu cña m¶ng kÕt qu¶ kh«ng chØ th«ng qua cžc chØ sĂš l” cžc sĂš
m” chĂłng cĂŁ thÓ l” tÂȘn cña cžc tr−ĂȘng dĂ· liÖu. §iÒu n”y l”m cho viÖc lËp
tr×nh Ÿn gi¶n v” chÝnh xžc hÂŹn.
      VÝ dî:
      <?php
               $mysql = “select id, name from ds_thanhvien”;
               $link = mysql_connect($host, $user, $password);
               $result = mysql_db_query(“php”, $mysql);
               while ($row = mysql_fetch_array($result)) {
                     echo “user_id: “. $row[“id”] .“<BR>n”;
                     echo “user_id: “. $row[0] .“<BR>n”;
                  echo “user_name: “. $row[“name”] .“<BR>n”;
      echo “user_name: “. $row[1] .“<BR>n”;
               }
               mysql_free_result ($result);
        ?>


+ mysql_fetch_object() : H”m tr¶ vÒ mĂ©t ŸÚi t−üng l” giž trÞ cña mĂ©t b¶ng ghi
hiÖn thĂȘi. Sau Ÿã h”m sÏ trĂĄ tĂ­i b¶ng ghi tiÕp theo cho tĂ­i khi gÆp b¶ng ghi cuĂši
cĂŻng h”m tr¶ vÒ giž trÞ false. §Ó truy xuÊt tĂ­i cžc giž trÞ cña cĂ©t ta viÕt
tÂȘn_object->tÂȘn_cĂ©t .
   Có phžp :
      object mysql_fetch_object(int result_identifier);
      Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query()
hoÆc mysql_db_query() .
      VÝ dî :


                                                                            42
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                   PHP & MySQL



          <?php
           $mysql = “select id, name from ds_thanhvien”;
           $link = mysql_connect($host, $user, $password);
           $result = mysql_db_query(“php”, $mysql);
           while ($row = mysql_fetch_object($result)) {
                      echo $row->id ;
                      echo $row->name;
                  }
          ?>
          +mysql_fetch_assoc() :lÊy vÒ mĂ©t dßng kÕt qu¶ nh− l” mĂ©t m¶ng liÂȘn
kÕt .
          có phžp: array mysql_fetch_assoc(int result_identifier)
      Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query()
hoÆc mysql_db_query() .
    H”m tr¶ vÒ mĂ©t m¶ng t−¬ng Ăžng vĂ­i mĂ©t b¶n ghi ¼−üc lÊy vÒ v” tr¶ lÂči
FALSE nÕu kh«ng cĂŁ b¶n ghi n”o. H”m n”y t−¬ng ¼−¬ng vĂ­i h”m
array mysql_fetch_array() víi tham sÚ result_type l” : MYSQL_ASSOC
vÝ dî :
          <?php
           $mysql = “select id, name from ds_thanhvien”;
           $link = mysql_connect($host, $user, $password);
           $result = mysql_db_query(“php”, $mysql);
           while ($row = mysql_fetch_assoc($result)) {
                      echo $row[“id”];
                      echo $row[“name”];
                  }
          ?>


                                                                             43
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                              PHP & MySQL



+mysql_data_seek()
Di chuyÓn con trĂĄ bÂȘn trong “tËp kÕt qu¶” (cĂŁ ¼−üc sau khi c©u truy vÊn
SELECT ¼−üc thĂčc hiÖn)
Có phžp: bool mysql_data_seek(int result_identifier, int row_number);
     Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(),
mysql_db_query(), mysql_list_tables(), mysql_list_dbs() .
       row_number l” chØ sĂš cña b¶n ghi m” cÇn ¼Æt con trĂĄ v”o .
       H”m tr¶ vÒ true nÕu th”nh c«ng, false nÕu lçi .
      H”m n”y sÏ di chuyÓn con trĂĄ bÂȘn trong “tËp kÕt qu¶” (¼−üc chØ rĂą bĂ«i
tham ŸÚi result_identifier) ¼Õn dßng cĂŁ m· b»ng tham ŸÚi row_number.
       Cžc dßng trong tËp kÕt qu¶ ¼−üc bŸt ¼Çu tĂ” 0
       VÝ dî:
<?php
  $link = mysql_pconnect ($host, $user, $password)
     or die ("Could not connect");

  $query = "SELECT last_name, first_name FROM friends";
  $result = mysql_db_query (“php”,$query)
    or die ("Query failed");

  # fetch rows in reverse order

  for ($i = mysql_num_rows ($result) - 1; $i >=0; $i--) {
     if (! Mysql_data_seek ($result, $i)) {
        printf ("Cannot seek to row %dn", $i);
        continue;
     }

      if(!($row = mysql_fetch_object ($result)))
         continue;

      printf ("%s %s<BR>n", $row->last_name, $row->first_name);
  }

  mysql_free_result ($result);
?>


                                                                           44
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                PHP & MySQL



+ mysql_num_rows() :tr¶ lÂči sĂš dßng trong result_identifier (nÂŹi chĂža kÕt
qu¶ cña c©u lÖnh SQL Ÿ· ¼−üc thĂčc hiÖn)
có phžp: mysql_num_rows(int result_identifier) ;
    Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(),
mysql_db_query(), mysql_list_tables(), mysql_list_dbs() .
+mysql_affected_rows()
có phžp : int mysql_affected_rows(int [link_identifier]) ;
Trong Ÿã :int link_identifier l” m· sĂš nhËn dÂčng, nĂŁ ph¶i ¼−üc thĂčc hiÖn
trong h”m mysql_select_db() tr−íc Ÿã .
H”m tr¶ vÒ sĂš dßng Ÿ· bÞ tžc Ÿéng bĂ«i mĂ©t c©u truy vÊn SQL :INSERT,
UPDATE, DELETE tr−íc ¼ã theo tham sù link_identifier. NÕu
link_identifier kh«ng ¼−üc chØ ¼Þnh th× m· kÕt nĂši tr−íc Ÿã sÏ ¼−üc chØ ¼Þnh.
ChĂł Ăœ :
- NÕu c©u lÖnh SQL tr−íc Ÿã l” DELETE m” kh«ng cĂŁ mÖnh ¼Ò WHERE th×
to”n bĂ© cžc b¶n ghi trong b¶ng Ÿ· bÞ xož nh−ng h”m mysql_affected_rows()
sÏ tr¶ vÒ gižn trÞ 0.
-H”m n”y kh«ng cĂŁ tžc dĂŽng ŸÚi vĂ­i c©u lÖnh truy vÊn SELECT. §Ó lÊy ¼−üc
sĂš dßng tr¶ vÒ (sĂš dßng Ÿ· bÞ tžc Ÿéng) bĂ«i c©u lÖnh SELECT ta dĂŻng
h”m mysql_num_rows().
+mysql_result() : lÊy dĂ· liÖu tĂ” result_identifier
có phžp : mixed mysql_result(int result_identifier, int row, mixed [field]);
     Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(),
mysql_db_query(), mysql_list_tables(), mysql_list_dbs() .
                row l” b¶n ghi m” ta sÏ lÊy dĂ· liÖu
                field l” tr−ĂȘng trong dßng row m” ta sÏ lÊy dĂ· liÖu .
      Cžc tham sĂš result_identifier v” row ph¶i cĂŁ, cßn tham field l” tĂŻy
chĂ€n. H”m sÏ tr¶ lÂči cžc nĂ©i dung cña dßng row v” cĂ©t field tĂ” tËp kÕt qu¶
¼−üc chØ ¼Þnh bĂ«i biÕn result_identifier. NÕu ŸÚi sĂš field kh«ng ¼−üc chØ
¼Þnh rĂą th× tr−ĂȘng tiÕp theo cña b¶n ghi sÏ ¼−üc tr¶ vÒ .



                                                                               45
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                     PHP & MySQL



      VÝ dî:
      <?php
        $mysql = “select id, name from ds_thanhvien”;
        $link = mysql_connect($host, $user, $password);
        $result = mysql_db_query(“php”, $mysql);
        echo “ mysql_result($result, 0, “id”) <BR>n”;
        echo “ mysql_result($result, 0, “name”) <BR>n”;
      ?>
       +mysql_free_result() : H”m gi¶i phĂŁng vĂŻng bĂ© nhĂ­ ¼−üc liÂȘn kÕt vĂ­i
result_identifier .
      có phžp: mysql_free_result(int result_identifier) ;
     Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(),
mysql_db_query(), mysql_list_tables(), mysql_list_dbs() .
       H”m n”y chØ ¼−üc dĂŻng nÕu nh− bÂčn Ÿžnh giž thÊy r»ng kÞch b¶n cña
bÂčn sö dĂŽng quž nhiÒu bĂ© nhĂ­ khi Âźang chÂčy. GĂ€i h”m n”y trÂȘn mĂ©t tr×nh xö
lĂœ kÕt qu¶ sÏ gi¶i phĂŁng to”n bĂ© dĂ· liÖu liÂȘn kÕt trong bĂ© nhĂ­ .


        Ngo”i ra cßn cžc h”m khžc:
string mysql_tablename (int result_identifier, int i)
H”m tr¶ lÂči tÂȘn cña b¶ng/csdl tÂči chØ sĂš i trong result_identifier.
string mysql_field_name (int result_identifier, int field_index)
H”m tr¶ lÂči tÂȘn cña tr−ĂȘng tÂči vÞ trÝ field_index trong m· result_identifier
int mysql_list_dbs ([int link_identifier])
H”m tr¶ lÂči mĂ©t result_identifier l” danh sžch biÕn CSDL trÂȘn MySQL Server
nÕu th”nh c«ng, lçi tr¶ vÒ false .
int mysql_list_tables (string database [, int link_identifier])
H”m tr¶ vÒ danh sžch tÊt c¶ c©c b¶ng trong mĂ©t CSDL MySQL, th”nh c«ng
tr¶ vÒ mĂ©t result identifier, giž trÞ false nÕu cĂŁ lçi .


                                                                               46
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                  PHP & MySQL


int mysql_list_fields (string database_name, string table_name [, int
link_identifier])
H”m tr¶ vÒ th«ng tin liÂȘn quan ¼Õn mĂ©t b¶ng dĂ· liÖu.
int mysql_num_fields (int result_identifier)
Tr¶ vÒ sĂš tr−ĂȘng trong tËp kÕt qu¶ .
int mysql_num_rows (int result_identifier)
Tr¶ vÒ sĂš b¶n ghi trong tËp kÕt qu¶, h”m n”y chØ cĂŁ giž ŸÚi vĂ­i cžc c©u lÖnh
SELECT ,¼Ó lÊy lÂči sĂš b¶n ghi ¼−üc tr¶ lÂči tĂ” cžc lÖnh :INSERT, UPDATE
hoÆc DELETE, dïng mysql_affected_rows().
string mysql_field_type (int result_identifier, int field_index)
H”m tr¶ vÒ kiÓu dĂ· liÖu cña tr−ĂȘng tÂči vÞ trÝ field_index trong m·
result_identifier .
int mysql_field_len (int result_identifier, int field_offset)
H”m tr¶ vÒ Ÿé d”i cña tr−ĂȘng ¼−üc chØ ¼Þnh th«ng qua tham sĂš field_offset .
array mysql_fetch_lengths (int result_identifier)
tr¶ vÒ mĂ©t m¶ng t−¬ng Ăžng vĂ­i cžc Ÿé d”i cña mçi tr−ĂȘng trong b¶n ghi ¼−üc
lÊy vÒ bĂ«i h”m mysql_fetch_row() hoÆc false nÕu cĂŁ lçi.
int mysql_errno ([int link_identifier])
H”m tr¶ vÒ m· lçi tĂ” h”m thao tžc CSDL MySQL tr−íc ,tr¶ vÒ giž trÞ 0 nÕu
kh«ng cã lçi .
string mysql_error ([int link_identifier])
H”m tr¶ vÒ x©u th«ng bžo lçi tĂ” h”m thao tžc CSDL MySQL tr−íc, tr¶ vÒ
x©u rçng nÕu kh«ng cĂŁ lçi .
object mysql_fetch_field (int result_identifier [, int field_offset])
LÊy th«ng tin vÒ trĂȘng tĂ” tËp kÕt qu¶ rĂ„i tr¶ lÂči nh mĂ©t ŸÚi t−üng.




                                                                            47
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                               PHP & MySQL



XI. Session v” Cookie
1. Session l” g× ?
HTTP l” giao thĂžc kh«ng ¼−üc x©y dĂčng theo cžch ¼Ó cĂŁ thÓ lu giĂ· ¼−üc
trÂčng thži giĂ·a hai lÇn giao dÞch. Khi mĂ©t ng−ĂȘi dĂŻng yÂȘu cÇu truy nhËp mĂ©t
trang Web, rĂ„i sau Ÿã ng−ĂȘi dĂŻng n”y lÂči tiÕp tĂŽc yÂȘu cÇu truy nhËp ŸÚi vĂ­i
trang Web khžc th× HTTP kh«ng thÓ biÕt ¼−üc r»ng Ÿã l” hai yÂȘu cÇu tĂ” cĂŻng
mĂ©t ng−ĂȘi dĂŻng.

 Ăœ tâˆ’Ă«ng cña viÖc ÂźiÒu khiÓn phiÂȘn l”m viÖc l” cĂŁ thÓ l−u vÕt cña mĂ©t ng−ĂȘi
dĂŻng trong suĂšt mĂ©t phiÂȘn l”m viÖc.
NÕu chĂłng ta l”m ¼−üc ÂźiÒu n”y th× sÏ dÔ d”ng cung cÊp mĂ©t truy nhËp cho
ng−ĂȘi dĂŻng, tĂ” Ÿã ta cĂŁ thÓ l−u vÕt trÂčng thži cña ng−ĂȘi dĂŻng v” cĂŁ thÓ thĂčc
hiÖn viÖc mua bžn trÂȘn mÂčng.
Session trong PHP ¼−üc ÂźiÒu khiÓn bĂ«i mĂ©t giž trÞ ID duy nhÊt gĂ€i l”
“sessionID”, giž trÞ n”y sÏ ¼−üc tĂč Ÿéng sinh ra v” m· hĂŁa. SessionID ¼−üc
sinh ra bĂ«i PHP v” ¼−üc l−u trĂ· Ă« phÝa client trong suĂšt mĂ©t phiÂȘn giao dÞch.
NĂŁ cĂŁ thÓ ¼−üc l−u trĂ· trÂȘn cžc Cookie Ă« mžy ng−ĂȘi dĂŻng hay truyÒn lÂȘn cžc
URL.
SessionID cĂŁ tžc dĂŽng nh− mĂ©t khož ¼Ó bÂčn cĂŁ thÓ Ÿšng kĂœ nhĂ·ng biÕn ¼Æc
biÖt gĂ€i l” biÕn session. NĂ©i dung cña nhĂ·ng biÕn n”y ¼−üc chĂža trÂȘn Server.
SessionID l” nhĂ·ng th«ng tin chØ thÊy ¼−üc Ă« phÝa client. NÕu tÂči thĂȘi ÂźiÓm
n”o Ÿã cña mĂ©t kÕt nĂši ¼Õn trang Web cña bÂčn, sessionID cĂŁ thÓ thÊy ¼−üc
trÂȘn cookie hay URL, bÂčn cĂŁ thÓ truy nhËp nhĂ·ng biÕn session chĂž trÂȘn
Server Ă« phiÂȘn l”m viÖc Ÿã.
2) Cookie l” g× ?
Cookie l” nhĂ·ng mÈu tin nhĂĄ m” trang script cĂŁ thÓ chĂža trÂȘn cžc mžy khžch
(client). BÂčn cĂŁ thÓ thiÕt lËp mĂ©t cookie trÂȘn mĂ©t mžy ng−ĂȘi dĂŻng b»ng cžch
göi mĂ©t “HTTP header” cĂŁ chĂža dĂ· liÖu theo dÂčng sau:
Set-Cookie:Name=VALUE;[expires=DATE;][path=PATH;]
[domain=DOMAIN_NAME;][secure]
c©u lÖnh n”y sÏ tÂčo ra mĂ©t cookie cĂŁ tÂȘn gĂ€i l” NAME vĂ­i giž trÞ l” VALUE.
Tr−ĂȘng expires sÏ thiÕt lËp ng”y m” cookie sÏ hÕt hiÖu lĂčc, path v” domain
cĂŁ thÓ ¼−üc sö dĂŽng ¼Ó chØ ¼Þnh cžc URL (nÂŹi m” cookie sÏ ¼−üc göi Âźi). TĂ”



                                                                           48
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                   PHP & MySQL


khož secure cĂŁ nghÜa l” cookie sÏ kh«ng göi Âźi trÂȘn quž mĂ©t kÕt nĂši HTTP
chuÈn.
Khi mĂ©t browser kÕt nĂši tĂ­i mĂ©t URL, trĂ­c tiÂȘn nĂŁ kiÓm tra cžc cookie Ÿ·
¼−üc l−u trĂ· trÂȘn mžy. NÕu cĂŁ bÊt k× mĂ©t cookie n”o cĂŁ liÂȘn quan ¼Õn ¼Þa chØ
URL vĂ”a ¼−üc kÕt nĂši, chĂłng sÏ ¼−üc truyÒn trĂ« lÂči cho server.
3) ThiÕt lËp cžc cookie tĂ” PHP
Ta cĂŁ thÓ thiÕt lËp cžc cookie trong PHP b»ng cžch sö dĂŽng h”m:
int setcookie (string name [,string value [,int expire [,string path [,string
domain [, int secure]]]]]);

NhĂ·ng tham ŸÚi cña h”m t−¬ng Ăžng vĂ­i nhĂ·ng tham ŸÚi cña Set-Cookie
header Ă« trÂȘn.
NÕu ta thiÕt lËp cookie nh− sau:
         setcookie ("TestCookie", "Test Value");
th× khi ng−ĂȘi dĂŻng ¼Õn thšm trang kÕ tiÕp trong site cña ta (hoÆc reload trang
hiÖn tÂči) ta sÏ ph¶i truy nhËp v”o biÕn vĂ­i tÂȘn l” "TestCookie" cĂŁ chĂža giž trÞ
l” "Test Value", ta chØ cĂŁ thÓ truy nhËp tĂ­i nĂŁ th«ng qua biÕn m¶ng
$HTTP_COOKIE_VARS [] cña PHP .
Ta cĂŁ thÓ xož mĂ©t cookie b»ng cžch gĂ€i lÂči h”m setcookie() vĂ­i tham ŸÚi nh−
sau:
        tÂȘn cña cookie l” tÂȘn cña cookie cÇn xož v” kh«ng cĂŁ tr−ĂȘng giž trÞ.
4) Sö dĂŽng kÕt hĂźp cookie vĂ­i session
§Úi vĂ­i cookie cĂŁ mĂ©t sĂš vÊn ¼Ò sau Ÿ©y:
MĂ©t v”i webrowser kh«ng thÓ truy cËp ¼−üc tĂ­i cžc cookie (kh«ng hç trĂź
cookie) v” mĂ©t sĂš ng−ĂȘi dĂŻng kh«ng cĂŁ cžc cookie trÂȘn browser cña hĂ€. §©y
l” lĂœ do ¼Ó PHP sö dĂŽng c¶ hai cžch thĂžc :cookie v” URL method.
Khi sö dĂŽng PHP session, ta sÏ kh«ng ph¶i thiÕt lËp cžc cookie, nhĂ·ng h”m
session sÏ l−u giĂ· nhĂ·ng th«ng tin n”y cho chĂłng ta.
§Ó xem nĂ©i dung cña cžc cookie Ÿ· ¼−üc thiÕt lËp bĂ«i session ta sö dĂŽng
h”m:
session_get_cookie_params(). H”m n”y sÏ tr¶ vÒ mĂ©t m¶ng liÂȘn kÕt m” cžc
phÇn tö cña m¶ng chĂža cžc th«ng tin nh−: lifetime, path, domain,.. .

                                                                                49
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                               PHP & MySQL



§Ó thiÕt lËp cžc tham sĂš cho session cookie ta dĂŻng h”m:
void session_set_cookie_params (int lifetime [, string path [, string
domain]])

5) L−u giĂ· sessionID
PHP sÏ sö dĂŽng cžc cookie mÆc ¼Þnh cĂŻng vĂ­i session. NÕu cĂŁ thÓ ¼−üc, mĂ©t
cookie sÏ ¼−üc thiÕt lËp chþa SessionID.
MĂ©t cžch ¼Ó sö dĂŽng cžc SessionID trÂȘn URL Ÿã l” dÞch PHP cĂŻng vĂ­i lĂča
chĂ€n –enable-tran-sid.
Cžch nĂ·a l” ta cĂŁ thÓ Âźa sessionID v”o trong thÎ link. SessionID ¼−üc chĂža
trong h»ng SID. §Ó l”m ¼−üc ÂźiÒu n”y, ta thÂȘm v”o cuĂši thÎ link h»ng SID
¼Ó dĂŻng nĂŁ nh− l” ph−¬ng thĂžc GET.
VÝ dî:
<A HREF = “link.php?<?=SID?>”>
H»ng SID l”m viÖc ¼−üc nh− trÂȘn chØ khi ta cÊu h×nh PHP cĂŻng vĂ­i
--enable-track-vars.
6) ThĂčc thi nhĂ·ng phiÂȘn l”m viÖc Ÿn gi¶n.
NhĂ·ng b−íc cÂŹ b¶n cña viÖc sö dĂŽng session:
+ BŸt ¼Çu mĂ©t Session
+ §šng kĂœ nhĂ·ng biÕn Session
+ Sö dĂŽng biÕn Session
+ HuĂ» bĂĄ biÕn Session v” kÕt thĂłc Session
   6.1 BŸt ¼Çu mĂ©t Session
Cžch Ÿn gi¶n nhÊt ¼Ó bŸt ¼Çu mĂ©t Session l” dĂŻng h”m:
         Bool Session_start();
H”m n”y sÏ kiÓm tra xem Ÿ· cĂŁ mĂ©t Session ID n”o Ÿ· ¼−üc tÂčo ra hay ch−a.
NÕu ch−a th× nĂŁ sÏ tÂčo ra mĂ©t Session ID, cßn nÕu Ÿ· tĂ„n tÂči mĂ©t Session ID
th× thĂčc chÊt nĂŁ chØ lÊy ra nhĂ·ng biÕn Session ¼Ó ta cĂŁ thÓ dĂŻng nĂŁ. H”m tr¶
vÒ giž trÞ TRUE nÕu th”nh c«ng ,ng−üc lÂči tr¶ vÒ giž trÞ FALSE.




                                                                             50
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                PHP & MySQL



ChĂłng ta cĂČng cĂŁ thÓ bŸt ¼Çu mĂ©t Session b»ng cžch cÊu h×nh PHP ¼Ó nĂŁ tĂč
Ÿéng bŸt ¼Çu khi cĂŁ ai Ÿã thšm trang Web cña ta. §iÒu n”y cĂŁ thÓ l”m ¼−üc
nÕu ta chĂ€n session. auto_start trong file c:Windowsphp.ini
MĂ©t Session cĂČng sÏ ¼−üc bŸt ¼Çu khi ta Ÿšng kĂœ mĂ©t biÕn Session.
6.2 §šng kĂœ nhĂ·ng biÕn Session
§Ó cho mĂ©t biÕn cĂŁ thÓ l−u dÊu th«ng tin tĂ” mĂ©t trang script n”y sang trang
script khžc, ta cÇn ph¶i Ÿšng kĂœ nĂŁ b»ng cžch gĂ€i h”m:
bool session_register(mixed VarName [,mixed...]);
ViÖc Ÿšng kĂœ n”y sÏ l−u trĂ· tÂȘn biÕn v” ghi giž trÞ cña biÕn cho ¼Õn khi phiÂȘn
giao dÞch kÕt thĂłc hoÆc khi ta huĂ» bĂĄ (deregister) viÖc Ÿšng kĂœ biÕn Ÿã.
VÝ dî:
§Ó Ÿšng kĂœ biÕn $Var_name ta viÕt nh− sau:
$Var_name= 5;
session_register(“Var_name”);// kh«ng nÂȘn sö dĂŽng kĂœ tĂč $ trong Ÿšng kĂœ
mĂ©t biÕn


6.3 Sö dĂŽng biÕn Session
§Ó Âźa mĂ©t biÕn Session v”o trong phÂčm vi m” nĂŁ cĂŁ thÓ ¼−üc sö dĂŽng, ta cÇn
ph¶i khĂ«i tÂčo mĂ©t Session b»ng mĂ©t trong nhĂ·ng cžch Ÿ· nÂȘu trÂȘn.
Sau Ÿã, ta cĂŁ thÓ truy cËp ¼−üc nhĂ·ng biÕn n”y. NÕu Ÿ· Ÿšng kĂœ biÕn n”y l”
to”n cĂŽc b»ng cžch sö dĂŽng h”m register_global(), th× ta cĂŁ thÓ truy nhËp
biÕn b×nh th−ĂȘng th«ng qua tÂȘn biÕn, vÝ dĂŽ : $Var_name ;
NÕu kh«ng khai bžo biÕn l” to”n cĂŽc th× ta ph¶i truy nhËp nhĂ·ng biÕn Session
th«ng qua m¶ng liÂȘn kÕt $HTTP_SESSION_VARS(“Var_name”);
§Ó kiÓm tra xem mĂ©t biÕn Ÿ· ¼−üc Ÿšng kĂœ l” biÕn Session hay ch−a ta dĂŻng
h”m: bool session_is_registered (string name);
  H”m n”y tr¶ vÒ giž trÞ TRUE nÕu biÕn Ÿ· ¼−üc Ÿšng kĂœ, ng−üc lÂči tr¶ vÒ
gi¾ trÞ FALSE.
Ta cĂČng cĂŁ thÓ kiÓm tra mĂ©t biÕn cĂŁ l” biÕn Session b»ng cžch kiÓm tra
m¶ng liÂȘn kÕt $HTTP_SESSION_VARS() vÒ sĂč tĂ„n tÂči cña biÕn.


                                                                            51
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                PHP & MySQL



6.4 HuĂ» bĂĄ biÕn Session v” kÕt thĂłc Session
Khi muĂšn kÕt thĂłc mĂ©t biÕn Session, ta cĂŁ thÓ huĂ» bĂĄ Ÿšng kĂœ cña biÕn Ÿã
b»ng h”m : bool session_unregister (string name) ;
Trong Ÿã: name l” tÂȘn biÕn ta muĂšn huĂ» Ÿšng kĂœ (tÂȘn n”y kh«ng cÇn cĂŁ kĂœ
tĂč $)
H”m tr¶ vÒ giž trÞ TRUE nÕu th”nh c«ng ,ng−üc lÂči tr¶ vÒ giž trÞ FALSE.
H”m n”y chØ cĂŁ thÓ huĂ» Ÿšng kĂœ cña mĂ©t biÕn Session tÂči mĂ©t thĂȘi ÂźiÓm.
§Ó huĂ» tÊt c¶ cžc biÕn Session hiÖn tÂči, ta dĂŻng h”m: void session _unset ( ) ;
§Ó kÕt thĂłc mĂ©t Session ta dĂŻng h”m:s
bool session_destroy () ;
H”m n”y sÏ xož Âźi SessionID v” hñy tÊt c¶ nhĂ·ng dĂ· liÖu liÂȘn quan ¼Õn
Session n”y. H”m tr¶ vÒ giž trÞ TRUE nÕu th”nh c«ng, ng−üc lÂči tr¶ vÒ giž trÞ
FALSE.
Ta nÂȘn hñy tÊt c¶ cžc biÕn Session tr−íc khi kÕt thĂłc mĂ©t Session.




                                                                             52
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                 PHP & MySQL




 Ch−¬ng III : Ph−¬ng ph¾p Fast Template trong
                       PHP

    I. C¾c kÜ thuËt mÉu phé biÕn
        Cžc mÉu cĂŁ thÓ ¼−üc dĂŻng nÕu nh− bÂčn Âźang thĂčc hiÖn mĂ©t site
    th−ĂȘng xuyÂȘn sö dĂŽng lÂči cžc th”nh phÇn .Trong phÂčm vi cña PHP ,cžc
    mÉu Ă« Ÿ©y Ăœ nĂŁi ¼Õn HTML. Kh«ng dĂŻng cžc mÉu ,mĂ©t web site phĂžc
    tÂčp sÏ cĂŁ cÊu trĂłc rÊt nÆng.
        §Ó gi¶i quyÕt vÊn ¼Ò trÂȘn ,nhiÒu kÜ thuËt mÉu Ÿ· tĂ„n tÂči, nhĂłng cĂŁ
    thÓ hĂ·u Ých trong mĂ©t sĂš tr−ĂȘng hĂźp. ChĂłng ta giĂ­i thiÖu qua mĂ©t sĂš kÜ
    thuËt ¼−üc sö dĂŽng th−ĂȘng xuyÂȘn .


                         HTML
               Code/
                         structure   Advantages
Name           HTML                                  Disadvantages         Useful for
                         Defined
               mixed
                         in PHP
                                                     Leadsto unreadable
Embedded                             Fastand         scrips, noreuse of   Quick and
                  Yes        Yes
PHP                                  easy            existing code,hardto Smallscripts
                                                     maintain
                                     Fast and
Separating                           easy,           Leadsto unreadable    Web sites
common            Yes        No                      scripts, often hard   with LOC <
parts                                Reuseof         to maintain           1000
                                     certain pasts
                                     Abstracts
                                     HTML
                                     completely                            Web sites
FastTemplate      No         No      from         Complex                  with LOC >
                                     coding, easy                             1000
                                     to adapt to
                                     new needs




                                                                              53
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                           PHP & MySQL




     ViÖc sö dĂŽng cžc mÉu trong cžc tr×nh Ăžng dĂŽng
   1. Embedded PHP
   ChĂłng ta cĂŁ thÓ nhĂłng cžc c©u lÖnh PHP v”o trong HTML. MĂ©t vÝ dĂŽ
   ÂźiÓn h×nh cña cžch thĂžc trÂȘn :
   <HTML>
   <HEAD>
            <TITLE>powers</TITLE>
   </HEAD>
   <BODY BGCOLOR=”black” TEXT=”white”>
        <H1>powers</H1>
        <TABLE>
        <TR>
               <TH>i</TH>
               <TH>i^i</TH>
        </TR>
   <?php
        for ($i= 0 ; $i< 10 ; $i++) {
        echo “<TR><TD>$i</TD><TD>”.pow($i,$i).”</TD></TR>n”;
        }
   ?>
        </TABLE>
        </BODY>
        </ HTML >
       Ph−¬ng phžp n”y ¼−üc dĂŻng khž phĂŠ biÕn vĂ­i nhĂ·ng ng−ĂȘi bŸt ¼Çu
   hĂ€c lËp tr×nh PHP. TĂ­i mĂ©t lĂłc n”o Ÿã ,nhĂ·ng ng−ĂȘi mĂ­i lËp tr×nh b»ng
   ph−¬ng phžp nhĂłng tiÕn tĂ­i sĂč th”nh thÂčo Ă« cžc mĂžc cao hÂŹn, nh−ng thËt
   Ÿžng tiÕc, cžch lËp tr×nh n”y lÂči ngšn c¶n ÂźiÒu Ÿã .
   2. Separating common parts

                                                                      54
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                            PHP & MySQL


    MÆc dĂŻ kÜ thuËt n”y cĂŁ sö dĂŽng lÂči cžc m· code/HTML v” viÖc thay ŸÊi
    cĂČng dÔ d”ng hÂŹn ,nh−ng nĂŁ vÉn thĂ”a hâˆ’Ă«ng hÇu hÕt cžc nh−üc ÂźiÓm cña
    ph−¬ng ph¾p PHP nhóng .
    Cžch l”m th«ng th−ĂȘng l” bŸt ¼Çu vĂ­i cžc HTML header v” footer, chĂłng
    ¼−üc viÕt th”nh cžc h”m. Cžc h”m n”y cĂŁ thÓ ¼−üc gĂ€i khi cÇn ¼Õn chĂłng
    v” do Ÿã linh hoÂčt hÂŹn khi sö dĂŽng. SĂč thay ŸÊi cžc h”m sÏ ¼−üc ph¶n
    žnh trong tÊt c¶ cžc tr−ĂȘng hĂźp.
    Ta tžch vÝ dĂŽ PHP nhĂłng Ă« trÂȘn ra hai file .
    TÖp prepend.inc chĂža hai h”m :hiÓn thÞ mĂ©t HTML header v” mĂ©t HTML
    footer .
    <?php       //prepend.inc
    function CommonHeader($title) {
    ?>
    <HTML>
    <HEAD>
         <TITLE><?php echo $title ?></TITLE>
    </HEAD>
    <BODY BGCOLOR=”black” TEXT=”white”>
    <H1><?php echo $title ?></H1>
    <?php
    }
    function CommonFooter() {
    ?>
    </TABLE>
    </BODY>
    </HTML>
    <?php
    }
    ?>

 TÖp main.php sö dĂŽng tÖp prepend.inc


                                                                       55
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                           PHP & MySQL


   <?php include “prepend.inc”; ?>
   <?php CommonHeader( “power” ); ?>
   <TABLE>
   <TR>
     <TH>i</TH>
     <TH>i^i</TH>
   </TR>
   <?php
        for ($i= 0 ; $i< 10 ; $i++) {
            echo “<TR><TD>$i</TD><TD>”.pow($i,$i).” </TD></TR>n”;
        }
   ?>
   </TABLE>
   <?php CommonFooter(); ?>


   3. FastTemplate
        Trong phÇn n”y chĂłng ta cĂŻng t×m hiÓu vÒ ph−¬ng phžp thiÕt kÕ
   Web trong PHP l” FastTemplate. §©y l” ph−¬ng phžp hay, nĂŁ ¼−üc gŸn
   kÌm vĂ­i cžc gĂŁi Ăžng dĂŽng cña PHP, nĂŁ ¼−üc x©y dĂčng trong tÖp tin cĂŁ
   tÂȘn class. FastTemplate.php .
   MĂŽc ¼Ých cña ph−¬ng phžp n”y l” giĂłp cho ch−¬ng tr×nh viÕt b»ng PHP
   cĂŁ nhiÒu giao diÖn khžc nhau trÂȘn cĂŻng mĂ©t cÂŹ sĂ« m·, v” l”m gi¶m khĂši
   l−üng c«ng viÖc do ch−¬ng tr×nh ¼−üc tžch ra l”m hai phÇn : phÇn viÕt
   cžc ÂźoÂčn m· (code) v” phÇn thiÕt kÕ giao diÖn cho ch−¬ng tr×nh. PhÇn
   viÕt cžc ÂźoÂčn m· sÏ tÝnh tožn dĂ· liÖu v” thÓ hiÖn trÂȘn cžc trang HTML
   th«ng qua cžc biÕn FastTemplate. PhÇn giao diÖn sÏ thiÕt kÕ giao diÖn
   cho ch−¬ng tr×nh b»ng ng«n ngĂ· HTML. Trong phÇn n”y chĂłng ta cĂŁ thÓ
   lĂ„ng v”o trang HTML cžc ng«n ngĂ· nh− Java Applet, JavaScript, ... cho
   trang web thÂȘm sinh Ÿéng. ViÖc thÂȘm v”o trang HTML nhĂ·ng ÂźoÂčn m·
   n”y kh«ng l”m ¶nh hâˆ’Ă«ng tĂ­i phÇn ÂźoÂčn m· PHP. Khi Ÿã, Ă« vÞ trÝ n”o
   trÂȘn trang web cÇn thÓ hiÖn cžc kÕt qu¶ tÝnh tožn tĂ” ÂźoÂčn m· th× sÏ sö
   dîng c¾c biÕn FastTemplate ¼Ó thÓ hiÖn.




                                                                      56
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                              PHP & MySQL


II. Ph−¬ng ph¾p FastTemplate

1. BiÕn FastTemplate

BiÕn FastTemplate l” g× ?

C¾c biÕn FastTemplate cã cÊu tróc nh− sau :
      {TEN_BIEN_FASTTEMPLATE}
   BiÕn ¼−üc ¼Æt trong dÊu Ÿãng mĂ« ngoÆc nhĂ€n, tÂȘn biÕn Ă« giĂ·a, tÂȘn cĂŁ thÓ
   l” chĂ· hoa hoÆc chĂ· th−ĂȘng. Tuy nhiÂȘn trong phÇn ÂźoÂčn m· PHP bÂčn
   cĂČng ph¶i viÕt giĂšng nh− vËy.


2. VÞ trÝ ¼Æt biÕn FastTemplate

       Cžc biÕn FastTemplatse cĂŁ thÓ ¼Æt bÊt kĂș Ÿ©u trong trang HTML. NĂŁ
cĂŁ thÓ l” biÕn thÓ hiÖn th«ng tin trÂȘn cžc trang HTML khi ¼−üc browser hiÓn
thÞ hoÆc cžc biÕn sÏ thÂȘm v”o cžc ÂźoÂčn m· HTML .
      VÝ dĂŽ : ta ¼Æt tÂȘn tÖp l” : vidu_template.tpl
      <HTML>
      <HEAD>
      <TITLE>{TITLE}</TITLE>
      </HEAD>
      <BODY>
      {CONTENT}
      </BODY>
      </HTML>
      Trong vÝ dĂŽ trÂȘn cĂŁ hai biÕn FastTemplate l” {TITLE} v”
{CONTENT}. BiÕn {CONTENT} sÏ thÓ hiÖn th«ng tin trÂȘn trang web khi
¼−üc hiÓn thÞ, biÕn {TITLE} ¼−üc thÂȘm v”o nh− mĂ©t th”nh phÇn cña m·
HTML .


3. MĂ©t vÝ dĂŽ minh hĂ€a

   Theo vÝ dĂŽ trÂȘn chĂłng ta Ÿ· cĂŁ tÖp “vidu_template.tpl”, b©y giĂȘ chĂłng ta
   Âźi x©y dĂčng ÂźoÂčn script sau :


                                                                         57
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                PHP & MySQL



      <?php
      include “class.FastTemplate.php”;
      # khai bžo mĂ©t ŸÚi t−üng thuĂ©c lĂ­p FastTemplate
      $tpl = new FastTemplate(“.”);
      # §Þnh nghÜa mĂ©t b¶n ŸÄ cžc tÖp FastTemplate
      $tpl->set_filenames(array(“body” => “vidu_template.tpl ”));
      # G¾n c¾c gi¾ trÞ cho biÕn FastTemplate
      $tpl->assign_vars(array(
       “TITLE” => “Vi du”,
       “CONTENT” => “NĂ©i dung cña trang web” ));
      # Cho hiÖn trang web n”y
      $tpl->pparse(“body”);
      ?>
4. BĂšn b−íc cho mĂ©t trang web .

      Trong mĂ©t script cÇn thĂčc hiÖn bĂšn bĂ­c theo thĂž tĂč sau :
      B−íc 1 : Khai bžo mĂ©t ŸÚi t−üng thuĂ©c lĂ­p FastTemplate
       B−íc 2 : Gžn cžc tÖp chĂža m· HTML (tÖp n”y cĂŁ phÇn mĂ« rĂ©ng kh«ng
nhÊt thiÕt l” *.htm) cho cžc phÇn tö cña m¶ng ¼−üc ¼Þnh nghÜa bĂ«i ph−¬ng
thĂžc set_filenames() ( b−íc n”y ¼−üc gĂ€i l” “¼Þnh nghÜa mĂ©t b¶n ŸÄ cžc tÖp
FastTemplate” ) .
      B−íc 3 : G¾n gi¾ trÞ cho c¾c biÕn FastTemplate trong c¾c tÖp .
      B−íc 4 : Cho hiÖn trang web b»ng ph−¬ng thĂžc
pparse(“tÂȘn_trang_web”)
      ChĂł Ăœ :
      + B−íc 2: Trong “¼Þnh nghÜa mĂ©t b¶n ŸÄ cžc tÖp FastTemplate” cĂŁ thÓ
nhiÒu tÖp ¼−üc g¾n .
      + B−íc 4: Mçi lÇn gĂ€i ph−¬ng thĂžc pparse(); chØ ¼−üc mĂ©t tÖp
FastTemplate.


                                                                          58
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                                PHP & MySQL



      + Cžc b−íc 1,2,3,4 cĂŁ thÓ lÆp lÂči nhiÒu lÇn .
      + ThĂž tĂč gĂ€i ph−¬ng thĂžc pparse(); l” rÊt quan trĂ€ng v× nĂŁ ¶nh hâˆ’Ă«ng
¼Õn cžch thÓ hiÖn cña trang web.


5. KhĂši FastTemplate

      Th«ng tin trÂȘn trang web cĂŁ thÓ ¼−üc thÓ hiÖn d−íi dÂčng b¶ng, vĂ­i sĂš
h”ng kh«ng xžc ¼Þnh do Ÿã FastTemplate cĂŁ hç trĂź “khĂši FastTemplate”.
KhĂši FastTemplate sÏ lÆp Âźi lÆp lÂči mĂ©t ÂźoÂčn HTML n”o Ÿã khi ¼−üc Ÿžnh
dÊu khùi. XÐt vÝ dî sau :
      H·y thĂčc hiÖn phÐp tÝnh 2a vĂ­i a = 1, ..., n. KÕt qu¶ ¼−üc thÓ hiÖn bĂ«i
mĂ©t b¶ng gĂ„m hai cĂ©t, cĂ©t giž trÞ cña a v” cĂ©t kÕt qu¶ cña phÐp tÝnh 2a.
      ChĂłng ta tÂčo tÖp
“tinh_2_mu.htm”
      <html>
      <head>
      <title>Tinh 2 mu a</title>
      </head>
      <body>
      <table border="1"
width="100%">
       <tr>
         <td width="50%">
         <p align="center">Gia tri a</td>
         <td width="50%">
          <p align="center">Tinh 2ÂȘ</td>
       </tr>
       <!-- BEGIN block -->
       <tr>
         <td width="50%">
          <p align="center">{block.GIATRI}</td>
         <td width="50%">
          <p align="center">{block.KETQUA}</td>


                                                                                59
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                               PHP & MySQL



       </tr>
       <!-- END block -->
      </table>
      </body>
      </html>
       Ta thÊy tÖp n”y tÂčo mĂ©t b¶ng hai h”ng hai cĂ©t, h”ng trÂȘn l” tiÂȘu ¼Ò cña
cžc cĂ©t, h”ng d−íi cĂ©t thĂž nhÊt l” giž trÞ cña a v” cĂ©t thĂž hai l” kÕt qu¶ cña
phÐp tÝnh 2a. H”ng d−íi ¼−üc bŸt ¼Çu bĂ«i khož <!-- BEGIN block --> v” kÕt
thĂłc bĂ«i khož <!-- END block-->. Hai khož n”y cho biÕt phÇn bÂȘn trong sÏ bÞ
lÆp (block Ă« Ÿ©y l” tÂȘn khož), cžc biÕn FastTemplate bÂȘn trong cĂŁ dÂčng
{tenkhoa.TEN_BEN}.
      §oÂčn PHP Script sÏ nh− sau :
      <?php
      include "class.FastTemplate.php";
      $tpl = new FastTemplate(".");
      $tpl->set_filenames(array(
            'tinh_2_mu_a' => 'tinh_2_mu.htm'
      ));
      $n = 10;
      for ($i = 1 ; $i <= $n ; $i++)
        $tpl->assign_block_vars("block",array(
             'GIATRI' => $i,
             'KETQUA' => pow(2, $i)
        ));
      $tpl->pparse("tinh_2_mu_a");
      ?>
      KÕt qu¶ khi chÂčy ch−¬ng tr×nh nh− h×nh vÏ.




                                                                           60
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng                            PHP & MySQL




PhÇn II : HÖ C„ SĂ« DĂ· LIÖU MYSQL

Ch−¬ng I.     GiĂ­i thiÖu Ng«n ngĂ· MySQL


   I. Giíi thiÖu chung

  MySQL rÊt phĂžc tÂčp, nh−ng giao diÖn SQL trĂčc gižc v” dÓ hĂ€c. Trong
ch−¬ng n”y chĂłng ta m« t¶ khži qužt vÒ cžc lÖnh, cžc kiÓu dĂ· liÖu v” cžc
h”m m” chĂłng ta cÇn biÕn ¼Ó sö dĂŽng Mysql mĂ©t cžch cĂŁ hiÖu qu¶ v” cĂŁ
hiÖu suÊt cao.
Ch−¬ng n”y cung cÊp tÊt c¶ cžc h”m tham kh¶o trong Mysql. §Ó sö dĂŽng
ch−¬ng n”y cĂŁ hiÖu qu¶ bÂčn cĂŁ thÓ t×m ¼Õn h”ng loÂčt cžc b¶ng Ÿ· ¼−üc liÖt
kÂȘ.
Cžc −u ÂźiÓm cña MySQL:
      ‱ MySQL l” mĂ©t hÖ qu¶n trÞ nhĂĄ, b¶o mËt, v” rÊt dÔ sö dĂŽng, th−ĂȘng
        ¼−üc sö dĂŽng cho cžc Ăžng dĂŽng nhĂĄ v” trung b×nh. NĂŁ ¼−üc sö
        dĂŽng cho cžc Ăžng dĂŽng client / server vĂ­i mžy chñ mÂčnh nh−
        UNIX, Windows NT v” Windows 95/98, v” ¼Æc biÖt trÂȘn mžy chñ
        UNIX .
      ‱ MySQL hç trĂź cžc ÂźiÓm v”o l” ANSI SQL92 v” ODBC mĂžc 0-2
        SQL chuÈn.
      ‱ MySQL hç trĂź nhiÒu ng«n ngĂ· cho viÖc th«ng bžo lçi nh− : Czec,
        Dutc, English, Estonian, French, German, Hungarian, Italian,
        Norwegian Nynorsk, Polish, Portuguese, Spanish and Swedish.
        Ng«n ngĂ· ¼−üc hç trĂź mÆc ¼Þnh cho dĂ· liÖu l” ISO-8859-1
        (Latin1), muÚn thay ŸÊi ph¶i söa trong m· nguÄn .
      ‱ Ng«n ngĂ· lËp tr×nh sö dĂŽng viÕt cžc h”m API ¼Ó th©m nhËp cÂŹ sĂ«
        dĂ· liÖu MySQL cĂŁ thÓ l” C, Perl, PHP.. .
      ‱ Cžc b¶ng (table) trong cÂŹ sĂ« dĂ· liÖu MySQL cĂŁ kÝch th−íc rÊt lĂ­n
        v” ¼−üc l−u Ă« th− mĂŽc Datas. KÝch th−íc lĂ­n nhÊt cña mĂ©t b¶ng tĂši
        thiÓu l” 4GB v” nĂŁ cßn phĂŽ thuĂ©c v” kÝch th−íc lĂ­n nhÊt cña mĂ©t
        file do hÖ ÂźiÒu h”nh quy ¼Þnh .


                                                                         61
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql

Weitere Àhnliche Inhalte

Andere mochten auch

The endocrine system
The endocrine systemThe endocrine system
The endocrine system
mmercado31
 
Blogs in computers in l2 share
Blogs in computers in l2 shareBlogs in computers in l2 share
Blogs in computers in l2 share
Roberto Luiz Arruda
 
Electrospn 17 yalcinkaya-full
Electrospn 17 yalcinkaya-fullElectrospn 17 yalcinkaya-full
Electrospn 17 yalcinkaya-full
miroli
 
The Big Miracle vocabulary
The Big Miracle vocabularyThe Big Miracle vocabulary
The Big Miracle vocabulary
micklethwait
 
Jtpa geek salon_may2011
Jtpa geek salon_may2011Jtpa geek salon_may2011
Jtpa geek salon_may2011
keikubo
 
ĂŒlkeler
ĂŒlkelerĂŒlkeler
ĂŒlkeler
aybars
 
Ratificados 15 12-13
Ratificados 15 12-13Ratificados 15 12-13
Ratificados 15 12-13
UTTA OSPAT
 
Baranoff Market Day Review
Baranoff Market Day ReviewBaranoff Market Day Review
Baranoff Market Day Review
micklethwait
 
ОжДĐČсĐș сюĐČОЎ ĐœĐŸŃĐ±Ń€ŃŒ 2010
ОжДĐČсĐș сюĐČОЎ ĐœĐŸŃĐ±Ń€ŃŒ 2010ОжДĐČсĐș сюĐČОЎ ĐœĐŸŃĐ±Ń€ŃŒ 2010
ОжДĐČсĐș сюĐČОЎ ĐœĐŸŃĐ±Ń€ŃŒ 2010
Sokirianskiy&Lazerson School
 
Programa video tutorial
Programa video tutorialPrograma video tutorial
Programa video tutorial
UPBC
 
WordPress Child Themes
WordPress Child ThemesWordPress Child Themes
WordPress Child Themes
rfair404
 
Framtiden och det livslÄnga lÀrandet prakticum 20 10 2010
Framtiden och det livslÄnga lÀrandet prakticum 20 10 2010Framtiden och det livslÄnga lÀrandet prakticum 20 10 2010
Framtiden och det livslÄnga lÀrandet prakticum 20 10 2010
Heidi Backman
 

Andere mochten auch (20)

Presentation @ ICT4Ag
Presentation @ ICT4AgPresentation @ ICT4Ag
Presentation @ ICT4Ag
 
ĐŸŃ€ĐžĐłĐŸŃ€ĐŸĐŽŃ‹ Đ’Đ»Đ°ĐŽĐžĐŒĐžŃ€Đ°: ĐșуЎа ĐżĐ»Ń‹Ń‚ŃŒ?
ĐŸŃ€ĐžĐłĐŸŃ€ĐŸĐŽŃ‹ Đ’Đ»Đ°ĐŽĐžĐŒĐžŃ€Đ°: ĐșуЎа ĐżĐ»Ń‹Ń‚ŃŒ?ĐŸŃ€ĐžĐłĐŸŃ€ĐŸĐŽŃ‹ Đ’Đ»Đ°ĐŽĐžĐŒĐžŃ€Đ°: ĐșуЎа ĐżĐ»Ń‹Ń‚ŃŒ?
ĐŸŃ€ĐžĐłĐŸŃ€ĐŸĐŽŃ‹ Đ’Đ»Đ°ĐŽĐžĐŒĐžŃ€Đ°: ĐșуЎа ĐżĐ»Ń‹Ń‚ŃŒ?
 
The endocrine system
The endocrine systemThe endocrine system
The endocrine system
 
Blogs in computers in l2 share
Blogs in computers in l2 shareBlogs in computers in l2 share
Blogs in computers in l2 share
 
Blogs in computers in l2
Blogs in computers in l2Blogs in computers in l2
Blogs in computers in l2
 
Web Visions
Web VisionsWeb Visions
Web Visions
 
Electrospn 17 yalcinkaya-full
Electrospn 17 yalcinkaya-fullElectrospn 17 yalcinkaya-full
Electrospn 17 yalcinkaya-full
 
The Big Miracle vocabulary
The Big Miracle vocabularyThe Big Miracle vocabulary
The Big Miracle vocabulary
 
Listado de inscripciones reuniĂłn nÂș 2 10 04-16
Listado de inscripciones reuniĂłn nÂș 2  10 04-16Listado de inscripciones reuniĂłn nÂș 2  10 04-16
Listado de inscripciones reuniĂłn nÂș 2 10 04-16
 
Jtpa geek salon_may2011
Jtpa geek salon_may2011Jtpa geek salon_may2011
Jtpa geek salon_may2011
 
The Gifted Gazette
The Gifted GazetteThe Gifted Gazette
The Gifted Gazette
 
TERRA MATER, TURISME SOSTENIBLE
TERRA MATER, TURISME SOSTENIBLETERRA MATER, TURISME SOSTENIBLE
TERRA MATER, TURISME SOSTENIBLE
 
ĂŒlkeler
ĂŒlkelerĂŒlkeler
ĂŒlkeler
 
Ratificados 15 12-13
Ratificados 15 12-13Ratificados 15 12-13
Ratificados 15 12-13
 
Baranoff Market Day Review
Baranoff Market Day ReviewBaranoff Market Day Review
Baranoff Market Day Review
 
ОжДĐČсĐș сюĐČОЎ ĐœĐŸŃĐ±Ń€ŃŒ 2010
ОжДĐČсĐș сюĐČОЎ ĐœĐŸŃĐ±Ń€ŃŒ 2010ОжДĐČсĐș сюĐČОЎ ĐœĐŸŃĐ±Ń€ŃŒ 2010
ОжДĐČсĐș сюĐČОЎ ĐœĐŸŃĐ±Ń€ŃŒ 2010
 
Identity theft godwin oyedokun
Identity theft   godwin oyedokunIdentity theft   godwin oyedokun
Identity theft godwin oyedokun
 
Programa video tutorial
Programa video tutorialPrograma video tutorial
Programa video tutorial
 
WordPress Child Themes
WordPress Child ThemesWordPress Child Themes
WordPress Child Themes
 
Framtiden och det livslÄnga lÀrandet prakticum 20 10 2010
Framtiden och det livslÄnga lÀrandet prakticum 20 10 2010Framtiden och det livslÄnga lÀrandet prakticum 20 10 2010
Framtiden och det livslÄnga lÀrandet prakticum 20 10 2010
 

Ähnlich wie Haiphongit.com.tai lieu-laptrinh ph-pvamysql

HÆ°ÆĄÌng DĂąÌƒn Php
HÆ°ÆĄÌng DĂąÌƒn  PhpHÆ°ÆĄÌng DĂąÌƒn  Php
HÆ°ÆĄÌng DĂąÌƒn Php
xeroxk
 
Lap trinh web dong voi php my sql
Lap trinh web dong voi php my sqlLap trinh web dong voi php my sql
Lap trinh web dong voi php my sql
Giang Nguyễn
 
Macromedia dreamweaver
Macromedia dreamweaverMacromedia dreamweaver
Macromedia dreamweaver
dang2011
 
Tim hieu ve lo hong web va cach phong chong
Tim hieu ve lo hong web va cach phong chongTim hieu ve lo hong web va cach phong chong
Tim hieu ve lo hong web va cach phong chong
Vu Trung Kien
 
03 udpt php
03 udpt   php03 udpt   php
03 udpt php
Nguyen Son
 
Láș­p trĂŹnh web đáșĄi học tĂ i nguyĂȘn mĂŽi trường
Láș­p trĂŹnh web   đáșĄi học tĂ i nguyĂȘn mĂŽi trườngLáș­p trĂŹnh web   đáșĄi học tĂ i nguyĂȘn mĂŽi trường
Láș­p trĂŹnh web đáșĄi học tĂ i nguyĂȘn mĂŽi trường
KiĂȘn Thỏ
 
Macromedia dreamweaver
Macromedia dreamweaverMacromedia dreamweaver
Macromedia dreamweaver
lankhcb
 

Ähnlich wie Haiphongit.com.tai lieu-laptrinh ph-pvamysql (20)

Láș­p trĂŹnh PHP vĂ  MySQL
Láș­p trĂŹnh PHP vĂ  MySQLLáș­p trĂŹnh PHP vĂ  MySQL
Láș­p trĂŹnh PHP vĂ  MySQL
 
Laptrinh ph pvamysql
Laptrinh ph pvamysqlLaptrinh ph pvamysql
Laptrinh ph pvamysql
 
NgĂŽn ngữ láș­p trĂŹnh PHP vĂ  MySQL - khoahoclaptrinhweb.tin.vn
NgĂŽn ngữ láș­p trĂŹnh PHP vĂ  MySQL - khoahoclaptrinhweb.tin.vnNgĂŽn ngữ láș­p trĂŹnh PHP vĂ  MySQL - khoahoclaptrinhweb.tin.vn
NgĂŽn ngữ láș­p trĂŹnh PHP vĂ  MySQL - khoahoclaptrinhweb.tin.vn
 
HÆ°ÆĄÌng DĂąÌƒn Php
HÆ°ÆĄÌng DĂąÌƒn  PhpHÆ°ÆĄÌng DĂąÌƒn  Php
HÆ°ÆĄÌng DĂąÌƒn Php
 
Lap trinh web dong voi php my sql
Lap trinh web dong voi php my sqlLap trinh web dong voi php my sql
Lap trinh web dong voi php my sql
 
Hướng dáș«n láș­p trĂŹnh web với PHP
Hướng dáș«n láș­p trĂŹnh web với PHPHướng dáș«n láș­p trĂŹnh web với PHP
Hướng dáș«n láș­p trĂŹnh web với PHP
 
Macromedia dreamweaver
Macromedia dreamweaverMacromedia dreamweaver
Macromedia dreamweaver
 
Tim hieu ve lo hong web va cach phong chong
Tim hieu ve lo hong web va cach phong chongTim hieu ve lo hong web va cach phong chong
Tim hieu ve lo hong web va cach phong chong
 
Gioi thieu VanMenh.COM
Gioi thieu VanMenh.COMGioi thieu VanMenh.COM
Gioi thieu VanMenh.COM
 
PHP cĂł thể lĂ m gĂŹ? 9 Thứ thĂș vị cĂł thể lĂ m với PHP
PHP cĂł thể lĂ m gĂŹ?  9 Thứ thĂș vị cĂł thể lĂ m với PHPPHP cĂł thể lĂ m gĂŹ?  9 Thứ thĂș vị cĂł thể lĂ m với PHP
PHP cĂł thể lĂ m gĂŹ? 9 Thứ thĂș vị cĂł thể lĂ m với PHP
 
Buoi3
Buoi3Buoi3
Buoi3
 
03 udpt php
03 udpt   php03 udpt   php
03 udpt php
 
XĂąy dá»±ng website thÆ°ÆĄng máșĄi điện tá»­
XĂąy dá»±ng website thÆ°ÆĄng máșĄi điện tá»­XĂąy dá»±ng website thÆ°ÆĄng máșĄi điện tá»­
XĂąy dá»±ng website thÆ°ÆĄng máșĄi điện tá»­
 
Láș­p trĂŹnh web đáșĄi học tĂ i nguyĂȘn mĂŽi trường
Láș­p trĂŹnh web   đáșĄi học tĂ i nguyĂȘn mĂŽi trườngLáș­p trĂŹnh web   đáșĄi học tĂ i nguyĂȘn mĂŽi trường
Láș­p trĂŹnh web đáșĄi học tĂ i nguyĂȘn mĂŽi trường
 
Dw
DwDw
Dw
 
Macromedia dreamweaver
Macromedia dreamweaverMacromedia dreamweaver
Macromedia dreamweaver
 
Macromedia dreamweaver
Macromedia dreamweaverMacromedia dreamweaver
Macromedia dreamweaver
 
GiĂĄo trĂŹnh thiáșżt káșż web
GiĂĄo trĂŹnh thiáșżt káșż webGiĂĄo trĂŹnh thiáșżt káșż web
GiĂĄo trĂŹnh thiáșżt káșż web
 
Chuong 1 tongquanve web&amp;htm-lcanban
Chuong 1  tongquanve web&amp;htm-lcanban Chuong 1  tongquanve web&amp;htm-lcanban
Chuong 1 tongquanve web&amp;htm-lcanban
 
Chuong 1 tongquanve web&amp;htm-lcanban
Chuong 1  tongquanve web&amp;htm-lcanban Chuong 1  tongquanve web&amp;htm-lcanban
Chuong 1 tongquanve web&amp;htm-lcanban
 

Mehr von Giang Nguyễn

Php can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.comPhp can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.com
Giang Nguyễn
 
Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01
Giang Nguyễn
 
Hay php architect eav modeling
Hay php architect   eav modelingHay php architect   eav modeling
Hay php architect eav modeling
Giang Nguyễn
 
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dongHaiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Giang Nguyễn
 
Haiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sqlHaiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sql
Giang Nguyễn
 
Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206
Giang Nguyễn
 
Canbanvethietkevalaptrinhgame
CanbanvethietkevalaptrinhgameCanbanvethietkevalaptrinhgame
Canbanvethietkevalaptrinhgame
Giang Nguyễn
 
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menuBuilding websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Giang Nguyễn
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release review
Giang Nguyễn
 
Bai tap lap trinh web voi joomla csau
Bai tap   lap trinh web voi joomla csauBai tap   lap trinh web voi joomla csau
Bai tap lap trinh web voi joomla csau
Giang Nguyễn
 

Mehr von Giang Nguyễn (20)

Php can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.comPhp can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.com
 
Os xmldomphp
Os xmldomphpOs xmldomphp
Os xmldomphp
 
Os php-7oohabits
Os php-7oohabitsOs php-7oohabits
Os php-7oohabits
 
Os php-5.3new1
Os php-5.3new1Os php-5.3new1
Os php-5.3new1
 
Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01
 
Php day4
Php day4Php day4
Php day4
 
Hay php architect eav modeling
Hay php architect   eav modelingHay php architect   eav modeling
Hay php architect eav modeling
 
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dongHaiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
 
Chuong07 php
Chuong07 phpChuong07 php
Chuong07 php
 
Bai th08 php voi csdl
Bai th08 php voi csdlBai th08 php voi csdl
Bai th08 php voi csdl
 
Haiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sqlHaiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sql
 
Hd lap pttkht2008
Hd lap pttkht2008Hd lap pttkht2008
Hd lap pttkht2008
 
Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206
 
Canbanvethietkevalaptrinhgame
CanbanvethietkevalaptrinhgameCanbanvethietkevalaptrinhgame
Canbanvethietkevalaptrinhgame
 
C1
C1C1
C1
 
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menuBuilding websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release review
 
Bai tap lap trinh web voi joomla csau
Bai tap   lap trinh web voi joomla csauBai tap   lap trinh web voi joomla csau
Bai tap lap trinh web voi joomla csau
 
Analyse
AnalyseAnalyse
Analyse
 
Bai1
Bai1Bai1
Bai1
 

Haiphongit.com.tai lieu-laptrinh ph-pvamysql

  • 1. Ban chØ ÂźÂčo c«ng nghÖ th«ng tin cña cÂŹ quanMySQL Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & ٦ng *** T”I liÖu tham kh¶o Ng«n ngĂ· lËp tr×nh pHP H” nĂ©i, 2003 1
  • 2. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL PhÇn I : GiĂ­i thiÖu ng«n ngĂ· lËp tr×nh PHP ch−¬ng i : Ng«n ngĂ· lËp tr×nh pHP I. GiĂ­i thiÖu PHP v” m«i tr−ĂȘng lËp tr×nh web. 1. PHP l” g× ? Cži tÂȘn PHP ban ¼Çu ¼−üc viÕt tŸt bĂ«i cĂŽm tĂ” Personal Home Page, v” ¼−üc phžt triÓn tĂ” nšm 1994 bĂ«i Rasmus Lerdorf. LĂłc ¼Çu chØ l” mĂ©t bĂ© ¼Æc t¶ Perl, ¼−üc sö dĂŽng ¼Ó l−u dÊu vÕt ng−ĂȘi dĂŻng trÂȘn cžc trang web. Sau Ÿã, Rasmus Lerdorf Ÿ· phžt triÓn PHP nh− l” mĂ©t mžy ¼Æc t¶ (Scripting engine). V”o giĂ·a nšm 1997, PHP Ÿ· ¼−üc phžt triÓn nhanh chĂŁng trong sĂč yÂȘu thÝch cña nhiÒu ng−ĂȘi. PHP Ÿ· kh«ng cßn l” mĂ©t dĂč žn cž nh©n cña Rasmus Lerdorf v” Ÿ· trĂ« th”nh mĂ©t c«ng nghÖ web quan trĂ€ng. Zeev Suraski v” Andi Gutmans Ÿ· ho”n thiÖn viÖc ph©n tÝch cĂł phžp cho ng«n ngĂ· ¼Ó rĂ„i thžng 6 nšm 1998, PHP3 Ÿ· ra ÂźĂȘi (phiÂȘn b¶n n”y cĂŁ phÇn mĂ« rĂ©ng l” *.php3). Cho ¼Õn tËn thĂȘi ÂźiÓm Ÿã, PHP ch−a mĂ©t lÇn ¼−üc phžt triÓn chÝnh thĂžc, mĂ©t yÂȘu cÇu viÕt lÂči bĂ© ¼Æc t¶ ¼−üc ¼−a ra, ngay sau Ÿã PHP4 ra ÂźĂȘi (phiÂȘn b¶n n”y cĂŁ phÇn mĂ« rĂ©ng kh«ng ph¶i l” *.php4 m” l” *.php). PHP4 nhanh hÂŹn so vĂ­i PHP3 rÊt nhiÒu. PHP b©y giĂȘ ¼−üc gĂ€i l” PHP Hypertext PreProcesor. 2. TÂči sao ph¶i sö dĂŽng PHP Nh− chĂłng ta Ÿ· biÕt, cĂŁ rÊt nhiÒu trang web ¼−üc x©y dĂčng bĂ«i ng«n ngĂ· HTML (HyperText Markup Language). §©y chØ l” nhĂ·ng trang web tÜnh, nghÜa l” chĂłng chØ chĂža ÂźĂčng mĂ©t nĂ©i dung cĂŽ thÓ vĂ­i nhĂ·ng dßng všn b¶n Ÿn thuÇn, h×nh ¶nh ,v” cĂŁ thÓ ¼−üc sĂč hç trĂź bĂ«i ng«n ngĂ· JavaScript, hoÆc Java Apple. NhĂ·ng trang web nh− vËy ng−ĂȘi ta th−ĂȘng gĂ€i l” client- side. Tuy nhiÂȘn, Internet v” Intranets Ÿ· ¼−üc sö dĂŽng cho cžc Ăžng dĂŽng cÇn tĂ­i cÂŹ sĂ« dĂ· liÖu. Cžc trang Ăžng dĂŽng nh− vËy ¼−üc gĂ€i l” trang web Ÿéng, bĂ«i v× nĂ©i dung cña chĂłng lu«n thay ŸÊi tĂŻy thuĂ©c v”o dĂ· liÖu v” ng−ĂȘi sö dĂŽng. PHP l” ng«n ngĂ· l”m ¼−üc nhĂ·ng ÂźiÒu nh− vËy. B»ng cžch chÂčy ch−¬ng tr×nh PHP trÂȘn mžy chñ Web server, bÂčn cĂŁ thÓ tÂčo ra cžc Ăžng dĂŽng 2
  • 3. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL cĂŁ sĂč t−¬ng tžc vĂ­i cÂŹ sĂ« dĂ· liÖu ¼Ó tÂčo ra nhĂ·ng trang web v” Ÿ©y ¼−üc gĂ€i l” trang web Ÿéng. ChĂłng ta h·y xem xÐt cžch hoÂčt Ÿéng cña trang web ¼−üc viÕt b»ng ng«n ngĂ· HTML v” PHP nh− thÕ n”o. Web server VĂ­i cžc trang HTML : + Đọc yĂȘu cáș§u từ browser + TĂŹm file.htm trĂȘn server Khi cĂŁ yÂȘu cÇu tĂ­i mĂ©t trang web tĂ” + Gá»­i láșĄi cáșŁ file.htm cho browser phÝa ng−ĂȘi sö dĂŽng (browser). Web server thĂčc hiÖu ba b−íc sau : + §Àc yÂȘu cÇu tĂ” phÝa browser, Request + T×m trang web trÂȘn server. http://domain/file.htm + Göi trang web Ÿã trĂ« lÂči cho browser (nÕu t×m thÊy) qua mÂčng Internet hoÆc Intranet . Trang html VĂ­i cžc trang PHP : Khžc vĂ­i cžc trang HTML, khi mĂ©t trang PHP ¼−üc yÂȘu cÇu, web server ph©n tÝch v” thi h”nh cžc ÂźoÂčn m· PHP ¼Ó tÂčo ra trang HTML. Web server + Đọc yĂȘu cáș§u từ browser §iÒu Ÿã ¼−üc thÓ hiÖn b»ng bĂšn b−íc sau : + TĂŹm trang web(file.php) trĂȘn server + §Àc yÂȘu cÇu tö phÝa browser. + Thá»±c hiện cĂĄc đoáșĄn mĂŁ PHP + Gá»­i tráșŁ láșĄi nội dung cho browser + T×m trang web trÂȘn server. + ThĂčc hiÖn cžc ÂźoÂčn m· PHP trÂȘn trang web Ÿã ¼Ó söa ŸÊi nĂ©i dung cña trang. + Göi trĂ« lÂči nĂ©i dung cho browser (Ÿ©y l” trang HTML cĂŁ thÓ hiÓn thÞ ¼−üc bĂ«i tr×nh duyÖt Internet Explorer hoÆc tr×nh duyÖt n”o Ÿã). Káșżt xuáș„t TĂŁm lÂči, sĂč khžc nhau giĂ·a HTML v” PHP l” HTML kh«ng ¼−üc thĂčc hiÖn trÂȘn mžy Request chñ Web server cßn cžc trang *.php http://domain/file.php viÕt b»ng cžc ÂźoÂčn m· PHP ¼−üc thĂčc hiÖn trÂȘn mžy chñ Web server do Ÿã nĂŁ linh Ÿéng v” mÒm dÎo hÂŹn . 3
  • 4. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 3. NhĂ·ng ÂźiÓm mÂčnh cña PHP -PHP thĂčc hiÖn vĂ­i tĂšc Ÿé rÊt nhanh v” hiÖu qu¶ .MĂ©t Server b×nh th−ĂȘng cĂŁ thÓ Ÿžp Ăžng ¼−üc h”ng triÖu truy cËp tĂ­i trong mĂ©t ng”y. PHP hç trĂź kÕt nĂši tĂ­i rÊt nhiÒu hÖ CSDL khžc nhau: PostgreSQL,mSQL,Oracle, dbm, filePro ,Hyperware, informix,InterBase, Sybase, ... Ngo”i ra cßn hç trĂź kÕt nĂši vĂ­i ODBC th«ng qua Ÿã cĂŁ thÓ kÕt nĂši vĂ­i nhiÒu ng«n ngĂ· khžc m” ODBC hç trĂź. -PHP cung cÊp mĂ©t hÖ thĂšng th− viÖn phong phĂł : Do PHP ngay tĂ” ¼Çu ¼−üc thiÕt kÕ nh»m mĂŽc ¼Ých x©y dĂčng v” phžt triÓn cžc Ăžng dĂŽng trÂȘn web nÂȘn PHP cung cÊp rÊt nhiÒu h”m x©y dĂčng sÂœn giĂłp thĂčc hiÖn cžc c«ng viÖc rÊt dÔ d”ng : göi, nhËn mail ,l”m viÖc vĂ­i cžc cookie, v” nhiÒu thĂž khžc nĂ·a . -PHP l” mĂ©t ng«n ngĂ· rÊt dÔ dĂŻng, dÔ hĂ€c v” Ÿn gi¶n hÂŹn nhiÒu so vĂ­i cžc ng«n ngĂ· khžc nh− Perl, Java. NÕu bÂčn Ÿ· biÕt ng«n ngĂ· C th× mĂ€i viÖc sÏ ho”n to”n thuËn lĂźi . -PHP cĂŁ thÓ sö dĂŽng ¼−üc trÂȘn nhiÒu hÖ ÂźiÒu h”nh, chĂłng ta cĂŁ thÓ viÕt chĂłng trÂȘn Unix, Lunix v” cžc phiÂȘn b¶n cña Windows. V” cĂŁ thÓ Âźem m· PHP n”y chÂčy trÂȘn cžc hÖ ÂźiÒu h”nh khžc m” kh«ng ph¶i söa ŸÊi lÂči m·. -PHP l” ng«n ngĂ· m· nguĂ„n mĂ«. II. BiÕn, h»ng sĂš v” kiÓu dĂ· liÖu trong PHP. 1. KiÓu dĂ· liÂȘu . PHP cĂŁ ba kiÓu dĂ· liÖu cÂŹ b¶n : interger, double v” string. Ngo”i ra cßn cĂŁ cžc kiÓu dĂ· liÖu khžc (nh−ng kh«ng ph¶i cžc kiÓu dĂ· liÖu cÂŹ b¶n) nh− arrays (cžc kiÓu dĂ· liÖu m¶ng), objects (cžc kiÓu dĂ· liÖu ŸÚi t−üng). Interger l” kiÓu chiÕm 4 byte bĂ© nhĂ­ ,giž trÞ cña nĂŁ trong kho¶ng –2 tĂ» tĂ­i + 2 tĂ». KiÓu Double l” kiÓu sĂš thĂčc ,phÂčm vi biÓu diÔn ± (10-308 Ă· 10308). KiÓu string dĂŻng ¼Ó chĂža cžc giž trÞ bao gĂ„m cžc kĂœ tĂč v” con sĂš . VÝ dĂŽ : 2 // Ÿ©y l” kiÓu interger 1.0 // Ÿ©y l” kiÓu double “2” // Ÿ©y l” kiÓu string 4
  • 5. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL “2 hours” // Ÿ©y l” mĂ©t kiÓu string khžc 2. H»ng sĂš H»ng sĂš l” nhĂ·ng giž trÞ kh«ng ŸÊi. ChĂłng ta th−ĂȘng dĂŻng h»ng sĂš ¼Ó l−u cžc giž trÞ kh«ng ŸÊi trong suĂšt ch−¬ng tr×nh nh− : nhiÖt Ÿé (00C), cžc giž trÞ thĂȘi gian chØ sĂč chuyÓn giao giĂ·a sžng ,ch−a ,chiÒu ,tĂši ... a. Khai bžo h»ng sĂš : Ta dĂŻng h”m define() ¼Ó khai bžo h»ng sĂš : define(“COMPANY”, “Phop’s Bicycles”); define(“YELLOW”, “#FFFF00”); define(“VERSION”, 4); define(“NL”, “<BR>n”); Trong vÝ dĂŽ trÂȘn chĂłng ta Ÿ· dĂŻng h”m define() ¼Ó khai bžo h»ng sĂš NL. H»ng sĂš n”y l” mĂ©t thÎ ngŸt dßng trong HTML. ChĂłng ta sÏ sö dĂŽng cžc h»ng sĂš trong PHP nh− sau : echo (“Employment at ”. COMPANY. NL); Cžch viÕt trÂȘn cĂČng giĂšng nh− cžc viÕt sau: echo (“Employment at Phop’s Bicycles<BR>n”); ChĂł Ăœ : h»ng sĂš ph¶i Ă« ngo”i hai dÊu “ v” ”. TrĂȘng hĂźp sau l” kh«ng cĂŁ hiÖu lĂčc : echo (“Employment at COMPANY NL”);. Khi thĂčc hiÖn nĂŁ sÏ cho kÕt qu¶ l” : “Employment at COMPANY NL”. H”m defined() : h”m n”y dĂŻng ¼Ó kiÓm tra xem mĂ©t h»ng sĂš n”o Ÿã Ÿ· ¼−üc khai bžo ch−a. VÝ dĂŽ : if ( defined (“YELLOW”)) { echo (“<BODY BGCOLOR=”. YELLOW. “>n”); } 5
  • 6. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL b. Cžc h»ng sĂš Ÿ· ¼−üc ¼Þnh nghÜa trong PHP (Built-in Constants): §Ó hç trĂź cho ng−ĂȘi lËp tr×nh, PHP cung cÊp sÂœn cžc h»ng sĂš nh− : cžc biÕn m«i trĂȘng, cžc biÕn cña Web server Apache ... NgĂȘi lËp tr×nh cĂŁ thÓ sö dĂŽng h”m phpinfo() ¼Ó xem cžc giž trÞ n”y. <HTML> <!—phpinfo() --> <BODY> <?php phpinfo(); ?> </BOCY> </HTML> + H»ng sĂš nguyÂȘn : Ÿ©y l” nhĂ·ng giž trÞ cĂŁ kiÓu integer. VÝ dĂŽ : 10 + H»ng sĂš thĂčc: Ÿ©y l” nhĂ·ng giž trÞ cĂŁ kiÓu double. VÝ dĂŽ : 10.00 + HŸng kĂœ tĂč : Ÿ©y l” mĂ©t x©u kĂœ tĂč ¼Æt trong dÊu ngoÆc Ÿn hoÆc kÐp. VÝ dĂŽ : “Ng«n ngĂ· lËp tr×nh PHP”. 6
  • 7. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 3. BiÕn v” giž trÞ logic. + CĂČng giĂšng vĂ­i C/C++, PHP kh«ng cĂŁ khži niÖm TRUE v” FALSE. Cžc giž trÞ TRUE ¼−üc hiÓu l” nhĂ·ng giž trÞ b»ng 1 v” giž trÞ FALSE l” nhĂ·ng giž trÞ b»ng 0 hoÆc x©u rçng . + Khi sö dĂŽng biÕn chĂłng ta kh«ng cÇn khai bžo kiÓu . VÝ dĂŽ : $a = 1; // $a l” mĂ©t biÕn kiÓu integer. $a = 1.2; // b©y giĂȘ $a l” mĂ©t biÕn kiÓu double. $a = “A” ; // b©y giĂȘ $a lÂči l” mĂ©t biÕn kiÓu string. + NÕu nh− thĂčc hiÖn phÐp tožn giĂ·a biÕn cĂŁ kiÓu sĂš v” kiÓu string, PHP sÏ coi chuçi l” mĂ©t d·y sĂš nh− sau : $str = “222B Baker Street”; Ta thÊy biÕn $str cĂŁ giž trÞ kiÓu string, v” nÕu cĂ©ng sĂš 3 vĂ­i giž trÞ n”y th× : $x = 3 + $str ; // $x = 225 khi Ÿã biÕn $x nhËn ¼−üc giž trÞ 255 v× PHP Ÿ· cĂ©ng 3 vĂ­i ba sĂš ¼Çu. Nhng nÕu ta in giž trÞ cña biÕn $str th× echo ($str); // print : “222B Baker Street” ChĂł Ăœ r»ng cžc phÐp tožn giĂ·a sĂš v” chuçi chØ Ÿóng khi kĂœ tĂč ¼Çu cña chuçi l” sĂš . + Ta cĂČng cĂŁ thÓ l”m thay ŸÊi kiÓu giž trÞ cña mĂ©t biÕn b»ng cžch Ðp kiÓu $a = 11.2; // biÕn $a cĂŁ kiÓu double $a = (int) $a; // b©y giĂȘ $a cĂŁ kiÓu integer ,giž trÞ l” 11 $a = (double) $a; // b©y giĂȘ $a lÂči cĂŁ kiÓu double, giž trÞ l” 11.0 $b = (string) $a ; // biÕn $b cĂŁ kiÓu string ,giž trÞ l” “11” CĂČng ph¶i biÕt r»ng PHP tĂč Ÿéng chuyÓn ŸÊi kiÓu rÊt tĂšt. NÕu thËt sĂč cÇn thiÕt chĂłng ta mĂ­i ph¶i dĂŻng cžch trÂȘn. 7
  • 8. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL + Cžc h”m l”m viÖc vĂ­i biÕn gettype() : h”m n”y tr¶ lÂči kiÓu cña mĂ©t biÕn n”o Ÿã. Giž trÞ tr¶ vÒ cĂŁ thÓ l” : “integer” “double” “string” “array” “object” “class” “unknown type” vÝ dĂŽ : if (gettype($user_input) == “integer”) { $age = $user_input; } settype() : h”m n”y Ðp kiÓu cho mĂ©t biÕn n”o Ÿã. NÕu th”nh c«ng h”m tr¶ vÒ giž trÞ 1 (true) ,ng−üc lÂči l” 0 (false). vÝ du : $a = 7.5; settype($a, “integer”); if (settype($a, “array”)){ echo (“Conversion succeeded. ”); }else{ echo (“Conversion error. ”); } isset() v” unset() : H”m isset() kiÓm tra mĂ©t biÕn Ÿ· ¼−üc gžn giž trÞ hay ch−a, h”m unset() sÏ gi¶i phĂŁng bĂ© nhĂ­ cho mĂ©t biÕn n”o Ÿã . vÝ dĂŽ : 8
  • 9. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL $id = “323bb”; if (isset($id)) { echo (“DĂ· liÖu Ÿ· ¼−üc gžn”); }else{ echo (“DĂ· liÖu ch−a ¼−üc gžn”); } unset($id); if(!isset($id)) { echo (“DĂ· liÖu Ÿ· ¼−üc gi¶i phĂŁng”); } empty() : CĂČng giĂšng h”m isset(), h”m empty() sÏ tr¶ vÒ giž trÞ 1 (true) nÕu mĂ©t biÕn l” rçng v” ng−üc lÂči 0 (false). §Úi vĂ­i biÕn cĂŁ kiÓu sĂš giž trÞ b»ng 0 ¼−üc coi l” rçng, biÕn kiÓu string ¼−üc coi l” rçng nÕu x©u l” x©u rçng. vÝ dĂŽ: echo empty($new) ; // true $new = 1; echo empty($new); // false $new = “”; echo empty($new); // true $new = 0; echo empty($new); // true $new = “So 323”; echo empty($new); // false unset($new); echo empty($new); // true 9
  • 10. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL III. Cžc tožn tö + B¶ng cžc phÐp tožn sĂš hĂ€c PhÐp tožn Ăœ nghÜa VÝ dĂŽ Gi¶i thÝch + PhÐp cĂ©ng 7+2 ThĂčc hiÖn phÐp cĂ©ng giĂ·a 7 v” 2 : 9 - PhÐp trĂ” 7–2 ThĂčc hiÖn phÐp trĂ” giĂ·a 7 v” 2 : 5 * PhÐp nh©n 7*2 ThĂčc hiÖn phÐp nh©n giĂ·a 7 v” 2 : 14 / PhÐp chia 7/2 ThĂčc hiÖn phÐp chia giĂ·a 7 v” 2 : 3.5 % Chia d 7%2 ThĂčc hiÖn phÐp chia d giĂ·a 7 v” 2 : 1 Ta cĂŁ thÓ viÕt cžc phÐp tožn ngŸn gĂ€n nh− b¶ng sau : Khi viÕt T−¬ng ¼−¬ng vĂ­i $h += $i $h = $h + $i $h -= $i $h = $h - $i $h *= $i $h = $h * $i $h /= $i $h = $h / $i $h %= $i $h = $h % $i + PhÐp gžn : vÝ dĂŽ : $x = 1; $y = $x + 1; $length = $area / $width; 10
  • 11. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL + B¶ng cžc phÐp tožn quan hÖ PhÐp Ăœ nghÜa VÝ dĂŽ Gi¶i thich tožn == So sžnh b»ng $h == KiÓm tra $h v” $i cĂŁ b»ng nhau < So sžnh nhĂĄ hÂŹn $i kh«ng > So sžnh lĂ­n hÂŹn $h < $i KiÓm tra $h cĂŁ nhĂĄ hÂŹn $i kh«ng <= NhĂĄ hÂŹn hoÆc $h > $i KiÓm tra $h cĂŁ lĂ­n hÂŹn $i kh«ng >= b»ng $h <= KiÓm tra $h cĂŁ nhĂ« hÂŹn hoÆc b»ng $i LĂ­n hÂŹn hoÆc $i KiÓm tra $h cĂŁ lĂ­n hÂŹn hoÆc b»ng $i != b»ng $h => KiÓm tra $h cĂŁ khžc $i kh«ng <> $i So sžnh khžc KiÓm tra $h cĂŁ khžc $i kh«ng So sžnh khžc $h != $i $h <> $i Cžc phÐp so sžnh th−ĂȘng dĂŻng kiÓm tra ÂźiÒu kiÖn trong cžc c©u lÖnh ÂźiÒu khiÓn m” ta sÏ hĂ€c Ă« b”i sau . + B¶ng cžc phÐp tožn logic PhÐp tožn logic cĂŻng vĂ­i tožn hÂčng tÂčo th”nh biÓu thĂžc logic. BiÓu thĂžc logic cĂŁ thÓ cĂŁ giž trÞ l” 1 (true) hoÆc 0 (false) . Tožn hÂčng a Tožn hÂčng b a && b a || b !a !b 1 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 1 1 + Cžc phÐp tožn vĂ­i biÕn kiÓu string . 11
  • 12. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL Ta sö dĂŽng dÊu “. “ ¼Ó ghÐp hai biÕn kiÓu string vĂ­i nhau . vÝ dĂŽ : $first = “Phineas”; $last = “Phop”; $full = $first. “ ”. $last; // $full = “Phineas Phop” ; echo ($full); Ta cĂŁ thÓ ghÐp hai x©u nh− sau: echo ($last. “’s Bicycles”); //print : Phop’s Bicycles §Ó cĂŁ thÓ chÌn mĂ©t biÕn v”o trong h”ng cĂŁ kiÓu string th× tÂȘn biÕn ph¶i ¼Ó trong dÊu Ÿãng mĂ« ngoÆc nhĂ€n. echo (“${last}’s Bicycles”); + Cžc phÐp tožn thao tžc mĂžc bit. Cžc phÐp tožn thao tžc mĂžc bit tžc Ÿéng lÂȘn tĂ”ng bit cña tožn hÂčng . KĂœ hiÖu Ăœ nghÜa & AND bit | OR bit ^ XOR bit B¶ng cžc phÐp tožn nh− sau : & KÕt qu¶ | KÕt qu¶ ^ KÕt qu¶ 1&1 1 1|1 1 1^1 0 1&0 0 1|0 1 1^0 1 0&1 0 0|1 1 0^1 1 0&0 0 0|0 0 0^0 0 PHP cĂČng hç trĂź cžc phÐp dÞch ph¶i v” dÞch trži >> : dÞch ph¶i << : dÞch trži Gi¶ sö $a l” mĂ©t biÕn nguyÂȘn th× phÐp tožn : $a >> n l”m cho cžc bit trong $a bÞ dÞch ph¶i Âźi n vÞ trÝ. T−¬ng tĂč ta cĂŁ phÐp dÞch trži . 12
  • 13. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL vÝ dĂŽ : 11 >> 2 = 2 ; v× : 11 (1011) >> 2 2 (0010) + Cžc phÐp tožn tšng gi¶m : - PhÐp tšng : phÐp tšng (tožn tö tšng) tšng giž trÞ cña tožn hÂčng lÂȘn mĂ©t Ÿn vÞ. $a ++ : $a ¼−üc sö dĂŽng rĂ„i mĂ­i tšng ++ $a : $a tšng rĂ„i mĂ­i ¼−üc sö dĂŽng - PhÐp gi¶m : t−¬ng tĂč nh− phÐp tšng, khžc l” giž trÞ bÞ gi¶m Âźi mĂ©t Ÿn vÞ. $a -- : $a ¼−üc sö dĂŽng rĂ„i mĂ­i gi¶m -- $a : $a gi¶m rĂ„i mĂ­i ¼−üc sö dĂŽng vÝ dĂŽ : $a = 10; // $a b»ng 10 $b = $a++ ; // $a b»ng 11 nh−ng $b b»ng 10 $a = 10; // $a b»ng 10 $b = -- $a ; // $a b»ng 9 v” $b b»ng 9 + PhÐp tožn ÂźiÒu kiÖn. ? : PhÐp tožn ÂźiÒu kiÖn cĂŻng vĂ­i tožn hÂčng tÂčo nÂȘn biÓu thĂžc ÂźiÒu kiÖn. Ta kĂœ hiÖu e1 ,e2, e3 l” ba tožn hÂčng. BiÓu thĂžc cĂŁ dÂčng : e1 ? e2 : e3 NÕu e1 != 0 th× giž trÞ cña biÓu thĂžc ÂźiÒu kiÖn l” e2 NÕu e1 == 0 th× giž trÞ cña biÓu thĂžc ÂźiÒu kiÖn l” e3 vÝ dĂŽ : t×m max max = $a>$b ? a : b ; 13
  • 14. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL + Tožn tö sizeof (ŸÚi t−üng) : PhÐp tožn sizeof cho biÕt kÝch th−íc (tÝnh b»ng byte ) « nhĂ­ m” ŸÚi t−üng chiÕm trong bĂ© nhĂ­. §Úi t−üng Ă« Ÿ©y cĂŁ kiÓu l” integer, double, string. vÝ dĂŽ : $a = 10; echo sizeof($a); //sÏ in ra m”n h×nh l” : 4 IV. Cžc c©u lÖnh ÂźiÒu khiÓn 1. LÖnh if_else : Ÿ©y l” lÖnh rÏ nhžnh cĂŁ ÂźiÒu kiÖn . a. DÂčng 1 : if ( biÓu thĂžc ) c©u lÖnh; C©u lÖnh Ă« Ÿ©y t−¬ng ¼−¬ng vĂ­i mĂ©t khĂši lÖnh. MĂ©t khĂši lÖnh ¼−üc ¼Æt trong dÊu ngoÆc kÐp. Ăœ nghÜa : + NÕu biÓu thĂžc khžc kh«ng ,th× c©u lÖnh ¼−üc thĂčc hiÖn. + NÕu biÓu thĂžc b»ng kh«ng, th× c©u lÖnh kh«ng ¼−üc thĂčc hiÖn b. DÂčng 2 : if ( biÓu thĂžc ) c©u lÖnh 1; else c©u lÖnh 2; Ăœ nghÜa : + NÕu biÓu thĂžc khžc kh«ng ,th× c©u lÖnh 1 ¼−üc thĂčc hiÖn. + NÕu biÓu thĂžc b»ng kh«ng, th× c©u lÖnh 2 ¼−üc thĂčc hiÖn ChĂł Ăœ : * C©u lÖnh 1 Ă« dÂčng 2 l” lÖnh if_else 14
  • 15. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL + NÕu l−üng else b»ng l−üng If th× else thuĂ©c vÒ If gÇn nhÊt theo tĂ”ng cÆp tĂ” trong ra ngo”i. VÝ dĂŽ : $a = 10; $b = 10; $c = 3; $d = 3; $e = 12; $f = 8; if($a == $b) if($c == $d) if($e == $f) $max = $e; else $max = $f; else $max = $d; else $max = $b echo $max ; //printf max = 8 + NÕu l−üng else Ýt hÂŹn l−üng If th× else thuĂ©c vÒ If ngÇn nhÊt theo tĂ”ng cÆp tĂ” trong ra ngo”i. VÝ dĂŽ : <?php if ($a == $b) if ($c == $d) $max = 0 else $max = $d; ?> T−¬ng ¼−¬ng vĂ­i : <?php if ($a == $b) { if ( $c == $d) $max = 0; } else $max = $b; ?> * C©u lÖnh 2 cña dÂčng 2 l” elseif : 15
  • 16. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL BŸt nguĂ„n tĂ” : CĂŁ thÓ viÕt lÂči nh− sau: if ( biÓu_thĂžc1 ) if ( biÓu_thĂžc1 ) c©u_lÖnh 1; c©u_lÖnh 1; else elseif (biÓu_thĂžc 2) if ( biÓu_thĂžc 2 ) c©u_lÖnh 2; c©u_lÖnh 2; elseif (biÓu_thĂžc 3) else c©u_lÖnh 3; if ( biÓu_thĂžc 3 ) ... c©u_lÖnh 3; elseif (biÓu_thĂžc i) ... c©u_lÖnh i; else ... if ( biÓu_thĂžc i ) else c©u_lÖnh i; c©u_lÖnh n; ... else c©u_lÖnh n; C©u lÖnh elseif tÂčo ra lÖnh rÏ nhžnh cĂŁ ÂźiÒu kiÖn trong Ÿã thĂčc hiÖn 1 trong n cžch khžc nhau. - NÕu biÓu_thĂžc i khžc kh«ng (i = 1,..n-1) th× thĂčc hiÖn c©u lÖnh i . - NÕu biÓu_thĂžc i b»ng kh«ng (i = 1, ..n-1) th× c©u lÖnh thĂž n ¼−üc thĂčc hiÖn. 2. C©u lÖnh switch : switch (biÓu_thĂžc n) { case n1: c©u lÖnh 1; break; case n2: c©u lÖnh 2; break; ... case nn: c©u lÖnh nn; [default: c©u lÖnh] } 16
  • 17. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL C©u lÖnh switch l” c©u lÖnh rÏ nhžnh cĂŁ ÂźiÒu kiÖn trong Ÿã thĂčc hiÖn mĂ©t trong n cži rÏ nhžnh. +NÕu biÓu_thĂžc n = ni (i = 1, .. n) th× c©u lÖnh sau case ni ¼−üc thĂčc hiÖn cho ¼Õn khi gÆp lÖnh break hoÆc dÊu ngoÆc “}” +NÕu biÓu_thĂžc n != mĂ€i ni (i = 1, .. n) m” cĂŁ nhžnh Default th× cžc c©u lÖnh sau Default ¼−üc thĂčc hiÖn. VÝ dĂŽ : <?php $val = 6; $a = 5; $b = 6; $d = 7; switch ($val) { case $a : echo (“five”); break; case $b : echo (“six”); break; case $c : echo (“seven”); break; default : echo ($val); } ?> 3. C©u lÖnh FOR: DÂčng lÖnh : for (biÓu_thĂžc 1; biÓu_thĂžc 2; biÓu_thĂžc 3) c©u lÖnh ; LÖnh for l” lÖnh tÂčo chu tr×nh cĂŁ ÂźiÒu kiÖn. B−íc 1 : tÝnh biÓu_thĂžc 1 B−íc 2 : tÝnh biÓu_thĂžc 2 : NÕu biÓu_thĂžc 2 khžc 0 th× thĂčc hiÖn c©u lÖnh v” sang b−íc 3. 17
  • 18. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL NÕu biÓu_thĂžc 2 b»ng 0 th× kÕt thĂłc vßng for B−íc 3 : tÝnh biÓu_thĂžc 3 v” quay lÂči b−íc 2. + biÓu_thĂžc 1, biÓu_thĂžc 2, biÓu_thĂžc 3 l” cžc th”nh phÇn. Mçi th”nh phÇn cĂŁ thÓ gĂ„m nhiÒu biÓu thĂžc. Khi Ÿã mçi biÓu thĂžc ¼−üc viÕt cžch nhau mĂ©t dÊu phÈy (“,”). +Cžc biÓu thĂžc ¼−üc tÝnh lÇn l−üt tĂ” trži qua ph¶i +BiÓu thĂžc trong biÓu_thĂžc 2 quyÕt ¼Þnh thĂčc hiÖn th©n cña for. VÝ dĂŽ : <?php for($i = 0; $j = 4,$i < $j; $i++,$j--) { echo (“i =”. $i. “ ,j = “. $j. “<br>”); } ?> +CĂŁ thÓ vŸng mÆt bÊt kÓ th”nh phÇn n”o. NÕu vŸng mÆt biÓu_thĂžc 2 th× c©u lÖnh lu«n ¼−üc thĂčc hiÖn. MÆc dĂŻ vŸng mÆt vÉn ph¶i cĂŁ dÊu chÊm phÈy (“;”) VÝ dĂŽ : <?php for ( ; ; ) { if (my_function() == “stop”) break; } ?> +NÕu vŸng biÓu_thĂžc 1 v” biÓu_thĂžc 3 th× : for ( ; biÓu_thĂžc 2 ; ) cau_lenh ; t−¬ng ¼−¬ng vĂ­i : while (biÓu_thĂžc 2) cau_lenh ; 4. C©u lÖnh WHILE while (biÓu_thĂžc) c©u lÖnh ; 18
  • 19. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL LÖnh while l” mĂ©t lÖnh tÂčo chu tr×nh cĂŁ ÂźiÒu kiÖn. §iÒu kiÖn thĂčc hiÖn ¼−üc kiÓm tra Ă« ¼Çu chu tr×nh. B−íc 1 : TÝnh biÓu thĂžc NÕu biÓu thĂžc khžc kh«ng, sang b−íc 2 NÕu biÓu thĂžc b»ng kh«ng, kÕt thĂłc vßng while B−íc 2 : ThĂčc hiÖn c©u lÖnh. Quay lÂči b−íc 1. ChĂł Ăœ : + BiÓu thĂžc cĂŁ thÓ bao gĂ„m nhiÒu biÓu thĂžc. Khi Ÿã cžc biÓu thĂžc ¼−üc viÕt cžch nhau mĂ©t dÊu phÈy ,v” ¼−üc tÝnh lÇn l−üt tĂ” trži qua ph¶i. BiÓu thĂžc cuĂši cĂŻng quyÕt ¼Þnh thĂčc hiÖn c©u lÖnh. + Kh«ng ¼−üc phÐp vŸng mÆt biÓu thĂžc + §Ó tÂčo chu tr×nh v« tËn th× while(1) { ... if (biÓu_thĂžc) break; ... } VÝ dĂŽ : $i = 11; while (--$i) { if (my_function($i) == “error”) { break; } ++ $number; } 19
  • 20. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 5. LÖnh DO ... WHILE DÂčng lÖnh : do { c©u lÖnh; }while (biÓu_thĂžc); LÖnh do ... while l” lÖnh tÂčo chu tr×nh cĂŁ ÂźiÒu kiÖn, trong Ÿã ÂźiÒu kiÖn thĂčc hiÖn chu tr×nh ¼−üc kiÓm tra Ă« cuĂši chu tr×nh. HoÂčt Ÿéng : B−íc 1 : ThĂčc hiÖn c©u lÖnh B−íc 2 : TÝnh biÓu thĂžc biÓu_thĂžc +NÕu biÓu thĂžc biÓu_thĂžc khžc kh«ng th× quay lÂči b−íc 1 +NÕu biÓu thĂžc biÓu_thĂžc b»ng kh«ng th× kÕt thĂłc do ... while. VÝ dĂŽ : <?php echo (“<SELECT name=’num’>n”); $i = 0; $total = 10; do { echo (“t <OPTION value=$i>$i</OPTION>n”); }while(++ $i < $total); echo (“</SELECT>n”); ?> 6. LÖnh break L” lÖnh rÏ nhžnh kh«ng ÂźiÒu kiÖn v” th−ĂȘng dĂŻng ¼Ó ra khĂĄi th©n cña switch, while, do ... while, for . 20
  • 21. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL LÖnh break chØ cho phÐp thožt khĂĄi th©n cžc lÖnh bÂȘn trong nhÊt chĂža nĂŁ. 7. LÖnh continue L” lÖnh rÏ nhžnh kh«ng ÂźiÒu kiÖn .LÖnh th−ĂȘng dĂŻng ¼Ó bŸt ¼Çu lÂči mĂ©t chu tr×nh mĂ­i trong cžc lÖnh for, while, do ... while m” kh«ng cÇn thĂčc hiÖn hÕt to”n bĂ© th©n cña cña lÖnh tÂčo chu tr×nh. 8. Khai bžo tiÒn xö lĂœ include v” require . §Ó sö dĂŽng cžc ÂźoÂčn m· Ă« bÂȘn ngo”i, chĂłng ta cĂŁ thÓ sö dĂŽng khai bžo tiÒn xö lĂœ include v” require. Cho phÐp chĂłng ta x©y dĂčng cžc h”m cžc h»ng sĂš, v” bÊt kĂș ÂźoÂčn m· n”o sau Ÿã cĂŁ thÓ chÌn v”o cžc ÂźoÂčn script. Require khžc include l”, nĂŁ cĂŁ thÓ l”m thay ŸÊi nĂ©i dung cña trang hiÖn tÂči khi biÂȘn dÞch, cžc trang n”y dĂŻng ¼Ó khai bžo cžc biÕn, cžc h»ng sĂš hay cžc ÂźoÂčn m· Ÿn gi¶n kh«ng cĂŁ vßng lÆp. Khi Ÿã include cho phÐp thĂčc hiÖn cžc c©u lÖnh phĂžc tÂčp – cĂŁ c©u lÖnh tÂčo chu tr×nh. NĂŁ chØ sö dĂŽng cžc h”m nh− nhĂ·ng h”m ngo”i cña ch−¬ng tr×nh. V. H”m trong PHP 1. Quy tŸc x©y dĂčng h”m function tÂȘn_h”m (danh sžch ŸÚi sĂš h×nh thĂžc) { Th©n h”m . } + §Þnh nghÜa h”m kh«ng nhÊt thiÕt ph¶i n»m ngo”i th©n mĂ€i h”m, trong h”m cĂŁ thÓ cĂŁ h”m khžc. Nh−ng viÖc sö dĂŽng mĂ©t h”m kh«ng khžc nhau giĂ·a x©y dĂčng h”m trong th©n mĂ©t h”m v” ngo”i mĂ€i h”m . + TÂȘn h”m tuĂș ¼Æt v” khžc tÂȘn h”m chuÈn. + H”m cĂŁ thÓ cĂŁ giž trÞ tr¶ vÒ hoÆc kh«ng. + Cžc c©u lÖnh ¼−üc quyÒn gĂ€i bÊt kĂș h”m n”o Ÿ· ¼−üc khai bžo v” Ÿ· ¼−üc ¼Þnh nghÜa. 21
  • 22. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL + Return : - Tr¶ mĂ©t giž trÞ vÒ cho nÂŹi gĂ€i h”m - L” nÂŹi bžo kÕt thĂłc h”m 2. GĂ€i h”m . + H”m ph¶i ¼−üc x©y dĂčng (khai bžo) tr−íc khi gĂ€i . + Khi gĂ€i h”m, nÕu cĂŁ giž trÞ tr¶ vÒ th−ĂȘng ¼−üc ¼Æt trong biÓu thĂžc . 3. BiÕn to”n cĂŽ v” biÕn cĂŽc bĂ©. Th«ng th−ĂȘng PHP coi cžc biÕn ¼−üc sö dĂŽng trong th©n cña h”m l” biÕn cĂŽc bĂ©. NghÜa l” biÕn trong th©n h”m kh«ng l”m thay ŸÊi giž trÞ cña biÕn Ă« ngo”i h”m Ÿã. MuĂšn h”m l”m thay ŸÊi giž trÞ cña biÕn ngo”i ta cÇn khai bžo global tr−íc biÕn Ÿã trong th©n h”m . VÝ dĂŽ : $position = “m”; function change_pos() { $position = “s”; } change_pos(); echo (“$position”); //Prints “m” Ta thÊy biÕn $position giž trÞ kh«ng ŸÊi sau khi gĂ€i h”m change_pos(). $position = “m”; function change_pos() { global $position; $position = “s”; } change_pos(); echo (“$position”); //Prints “s” 22
  • 23. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL Ta cĂŁ thÓ viÕt nh− trÂȘn hoÆc ta cĂŁ thÓ viÕt : $position = “m”; function change_pos() { GOLOBALS[$position] = “s”; } change_pos(); echo (“$position”); //Prints “s” VI. BiÕn m¶ng trong PHP 1. M¶ng mĂ©t chiÒu M¶ng l” mĂ©t biÕn bao gĂ„m nhiÒu phÇn tö cĂŁ cĂŻng tÂȘn nh−ng khžc nhau vÒ chØ sĂš (cžc chØ sĂš n”y tšng dÇn tĂ” 0 ¼Õn n). VĂ­i ng«n ngĂ· lËp tr×nh C, cžc phÇn tö cña m¶ng cĂŁ cĂŻng kiÓu dĂ· liÖu ,nh−ng vĂ­i PHP th× mÒm dÎo hÂŹn. Cžc phÇn tö cña m¶ng kh«ng nhÊt thiÕt ph¶i cĂŻng kiÓu. a. Khai bžo m¶ng mĂ©t chiÒu. Ta cĂŁ thÓ khai bžo m¶ng b»ng cžch gžn tÂȘn m¶ng vĂ­i dÊu Ÿãng mĂ« ngoÆc vu«ng kh«ng cĂŁ chØ sĂš. ChĂłng ta h·y xÐt vÝ dĂŽ sau : $countries[] = “cr”; $countries[] = “de”; $countries[] = “us”; VÝ dĂŽ trÂȘn tÂčo ra mĂ©t m¶ng gĂ„m ba phÇn tö cĂŁ chØ sĂš l” 0, 1 v” 2. ViÖc Ÿã cĂČng t−¬ng tĂč nh− ta gžn : $countries[0] = “cr”; $countries[1] = “de”; $countries[2] = “us”; Ngo”i ra cžc chØ sĂš cña m¶ng kh«ng nhÊt thiÕt ph¶i tšng dÇn m” cĂŁ thÓ ¼−üc khai bžo nh sau : $countries[50] = “cr”; 23
  • 24. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL $countries[20] = “de”; $countries[10] = “us”; echo (“$countries[20]”); // prints de Khi Ÿã ¼Ó thÂȘm mĂ©t phÇn tö mĂ­i v”o m¶ng chĂłng ta cĂŁ thÓ viÕt $countries[] = “uk”; // chØ sĂš sÏ l” 51 MĂ©t phÇn tö mĂ­i ¼−üc thÂȘm v”o vĂ­i chØ sĂš l” chØ sĂš lĂ­n nhÊt cña m¶ng cĂ©ng thÂȘm mĂ©t. Ngo”i ra cĂČng cĂŁ thÓ khai bžo m¶ng mĂ©t chiÒu b»ng c©u lÖnh array $countries = array (“cr”, “de”, “us”) ; echo (“$countries[2]”); //prints “us” §Ó chØ sĂš kh«ng bŸt ¼Çu tĂ” kh«ng ta cĂŁ thÓ khai bžo lÂči nh− sau $countries = array (1 => “cr”, “de”, “us”); echo (“$countries[2]”); //prints “de” Tožn tö => cĂŁ thÓ ¼−üc sö dĂŽng tr−íc bÊt kĂș mĂ©t phÇn tö n”o trong m¶ng $countries = array (“cr”, 7 => “de”, “us”); v” khi Ÿã phÇn tö cĂŁ giž trÞ “cr” cĂŁ chØ sĂš l” 0 cßn phÇn tö cĂŁ giž trÞ “de”, “us” lÇn l−üt l” 7 v” 8. Khžc vĂ­i ng«n ngĂ· lËp tr×nh C, chØ sĂš cña m¶ng mĂ©t chiÒu kh«ng chØ l” cžc sĂš nguyÂȘn m” cßn l” x©u kĂœ tĂč. Ta cĂŁ thÓ khai bžo nh− sau : $countries[“ca”] = “Canada”; $countries[“cr”] = “Costa Rica”; $countries[“de”] = “Germany”; $countries[“uk”] = “United Kingdom”; $countries[“us”] = “United States”; echo (“$countries[“ca”]); // print Canada NÕu dĂŻng array th× sÏ l” : $countries = (“ca” => “Canada”, 24
  • 25. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL “cr” => “Costa Rica”, “de” => “Germany”, “uk” => “United Kingdom”, “us” => “United States”); 25
  • 26. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL b. L”m viÖc vĂ­i cžc phÇn tö cña m¶ng CĂŁ thÓ sö dĂŽng vßng lÆp for xÐt tĂ”ng phÇn tö cña m¶ng. $countries = array (“cr”, “de”, “us”); $num_elements = count($countries); for ($i = 0 ; $i < $num_elements ; $i ++) { echo (“$countries[$i] <BR>n”); } VÝ dĂŽ trÂȘn sÏ Ÿóng khi chØ sĂš cña cžc phÇn tö tšng dÇn ¼Òu. NÕu chØ sĂš cžc phÇn tö kh«ng theo mĂ©t thĂž tĂč n”o c¶ ta cĂŁ thÓ sö dĂŽng h”m list() v” each(). reset ($countries); while (list ($key, $value ) = each ($countries)) { echo (“ChØ sĂš $key, giž trÞ $value”); } §Ó di chuyÓn con trĂĄ tĂ­i phÇn tö tiÕp theo hoÆc tr−íc Ÿã ta cĂČng cĂŁ thÓ dĂŻng h”m next() - h”m next() tr¶ vÒ l” 1 (true) nÕu phÇn tö tiÕp theo kh«ng ph¶i l” phÇn tö cuĂši cĂŻng, ng−üc lÂči l” 0 (false) v” prev() - h”m prev() cho giž trÞ tr¶ vÒ l” 1 (true) nÕu phÇn tö tiÕp theo kh«ng ph¶i l” phÇn tö ¼Çu tiÂȘn, ng−üc lÂči l” 0 (false). H”m key () sÏ cho biÕt chØ sĂš v” h”m current() sÏ cho biÕt giž trÞ cña phÇn tö Ÿã . $arr = array (3, 4, 5, 6, 7); do { $k = key ($arr); $val = current ($arr); echo (“PhÇn tö $k = $val”); }while 2. M¶ng hai chiÒu ChĂłng ta cĂŁ thÓ khai bžo m¶ng hai chiÒu nh− sau : 26
  • 27. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL $countries = array (“Europs” => array (“de”, “uk”), “North America” => array (“ca”, “cr”, “us”)); echo ($countries[“Europs”][1]); // print “uk” echo ($countries[“North America”][2]); // print “us” Ta cĂŁ cÊu trĂłc cña m¶ng trÂȘn nh− sau : $countries[“Europs”] $countries[“North America”] [0] [1] [0] [1] [2] “de” “uk” “ca” “cr” “us” CĂČng giĂšng nh− m¶ng mĂ©t chiÒu ta sÏ dĂŻng vßng lÆp nh− for, while, do ... while ¼Ó duyÖt qua cžc phÇn tö cña m¶ng. VÝ dĂŽ : $countries = array (“Europs” => array (“de”, “uk”), “North America” => array (“ca”, “cr”, “us”)); while (list ($key1) = each ($countries)) { echo (“$key1 : <BR>n”); while (list ($key2, $val) = each($countries[“$key1”])) { echo (“ - $val <BR>n”) } } Khi chÂčy ch−¬ng tr×nh sÏ in ra m”n h×nh l” : Europ : - de - uk North America : - ca - cr - us 27
  • 28. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 3. Cžc h”m sŸp xÕp m¶ng . PHP cung cÊp cho chĂłng ta cžc h”m ¼Ó sŸp xÕp m¶ng. VĂ­i mçi loÂči m¶ng sÏ cĂŁ mĂ©t h”m t−¬ng Ăžng. VĂ­i m¶ng cĂŁ chØ sĂš l” kiÓu nguyÂȘn chĂłng ta cĂŁ h”m sort() ¼Ó sŸp xÕp tšng dÇn cžc phÇn tö cña m¶ng, h”m rsort() sÏ sŸp xÕp cžc phÇn tö cña m¶ng gi¶m dÇn . $countries = array (“us”, “uk”, “ca”, “cr”, “de”); sort ($countries); while (list ($key, $val) = each ($countries)) { echo (“Element $key equals $val <BR>n”); } Khi chÂčy ch−¬ng tr×nh sÏ l” : Element 0 equals ca Element 1 equals cr Element 2 equals de Element 3 equals uk Element 4 equals us VĂ­i m¶ng chØ sĂš cĂŁ kiÓu string th× dĂŻng h”m asort (), arsort () ¼Ó sŸp xÕp m¶ng theo chiÒu tšng dÇn v” gi¶m dÇn. NÕu bÂčn dĂŻng cžc h”m sort() v” rsort() th× cžc chØ sĂš cĂŁ kiÓu string sÏ chuyÓn th”nh cžc chØ sĂš cĂŁ kiÓu nguyÂȘn. $countries = array(“us” => “United States”, “uk” => “United Kingdom”, “ca” => “Canada”, “cr” => “Costa Rica”, “de” => “Germany”); asort ($countries); while (list($key, $val) = each($countries)) { echo “Chi so $key bang $val <BR>n”; 28
  • 29. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL } KÕt qu¶ khi chÂčy ch−¬ng tr×nh : Chi so ca bang Canada Chi so cr bang Costa Rica Chi so de bang Germany Chi so uk bang United Kingdom Chi so us bang United States Nh−ng nÕu thay dßng asort ($countries); b»ng sort ($countries); kÕt qu¶ sÏ l” Chi so 0 bang Canada Chi so 1 bang Costa Rica Chi so 2 bang Germany Chi so 3 bang United Kingdom Chi so 4 bang United States §Ó sŸp xÕp m¶ng tšng dÇn hay gi¶m dÇn theo chØ sĂš chĂłng ta cĂŁ h”m ksort() – tšng dÇn v” krsort() – gi¶m dÇn . $countries = array(“e” => “United States”, “d” => “United Kingdom”, “c” => “Canada”, “b” => “Costa Rica”, “a” => “Germany”); ksort ($countries); while (list($key, $val) = each($countries)) { echo “Chi so $key bang $val <BR>n”; } KÕt qu¶ : Chi so a bang Germany 29
  • 30. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL Chi so b bang Costa Rica Chi so c bang Canada Chi so d bang United Kingdom Chi so e bang United States VII. LËp tr×nh h−íng ŸÚi t−üng (OOP) 1. §Þnh nghÜa lĂ­p . ChĂłng ta cĂŁ thÓ ¼Þnh nghÜa lĂ­p b»ng tožn tö class, v” trong mçi mĂ©t lĂ­p chĂłng ta sÏ x©y dĂŽng cžc ph−¬ng thĂžc v” thuĂ©c tÝnh cho lĂ­p Ÿã . Gi¶ sö muĂšn ¼Þnh nghÜa lĂ­p “Sesssion” chĂłng ta l”m nh− sau : <?php class Session { // §Þnh nghÜa cžc thuĂ©c tÝnh v” ph−¬ng thĂžc // X©y dĂčng cžc ph−¬ng thĂžc cho lĂ­p } // KÕt thĂłc mĂ©t lĂ­p ?> §Ó ¼Þnh nghÜa thuĂ©c tÝnh cho lĂ­p chĂłng ta ¼Æt tĂ” khož var tr−íc thuĂ©c tÝnh Ÿã. <? class Session { var $sqlhost = “localhost”; var $sqluser = “root”; var $sqlpass = “password”; var $sqldb = “session”; 30
  • 31. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL var $linkid; var $seshid; var $sessdata; var $userid; var $error_no; var $err; ... // §Þnh nghÜa cžc ph−¬ng thĂžc Ă« Ÿ©y } //KÕt thĂłc ¼Þnh nghÜa lĂ­p ?> TiÕp theo chĂłng ta sÏ ¼Þnh nghÜa cžc ph−¬ng thĂžc cho lĂ­p trÂȘn. Ph−¬ng thĂžc cÇn x©y dĂčng ¼Çu tiÂȘn l” Session() sau Ÿã ¼Õn cžc ph−¬ng thĂžc khžc. <? // §Þnh nghÜa lĂ­p Session class Session { // §Þnh nghÜa cžc thuĂ©c tÝnh .. . // §Þnh nghÜa cžc ph−¬ng thĂžc function Session($localSeshID, $localUserID=0) { $this->seshid = $localSeshID; $this->userid = $localUserID; // KÕt nĂši tĂ­i MySQL $this->linkid=mysql_connect($this->sqlhost, $this->sqluser, $this- >sqlpass); 31
  • 32. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL if (!$this->linkid) { $this->err=mysql_error(); $this->error_no=102; } } ... // §Þnh nghÜa cžc ph−¬ng thĂžc khžc } ?> 2. Sö dĂŽng lĂ­p Ÿ· ¼−üc ¼Þnh nghÜa. §Ó khai bžo mĂ©t ŸÚi t−üng cĂŁ kiÓu thuĂ©c lĂ­p Ÿ· x©y dĂčng ta dĂŻng tožn tö new nh− sau : <?php require (“classes/sessions.php”); //include class $mysesh = new Session($seshid); if ($mysesh->error_no) { //Th«ng bžo cĂŁ lçi } $user = $mysesh->sessdata[userid]; ?> <HTML> <HEAD> <TITLE>Welcome to my website, <? echo $user ?></TITLE> </HEAD> <BODY> <a href=”nextpage.php?seshid=<? print $user ?>”>Next Page </a> 32
  • 33. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL <FORM ACTION=”nextpage.php” METHOD=”POST”> <input type=”hidden” name=”seshid” value=”<? print $seshid ?>”> </FORM> </BODY> </HTML> VIII. T×m hiÓu thÂȘm vÒ HTML PhÇn mĂ©t chĂłng ta Ÿ· t×m hiÓu sÂŹ l−üc vÒ ng«n ngĂ· HTML. Trong mĂŽc n”y chĂłng ta sÏ tr×nh b”y thÂȘm vÒ nĂŁ vĂ­i trĂ€ng t©m l” FORM cña HTML. LĂœ do l” v× khi muĂšn giao tiÕp giĂ·a HTML v” PHP script th× kh«ng thÓ kh«ng biÕt ¼Õn FORM. FORM l” c«ng cĂŽ phĂŠ biÕn nhÊt ¼Ó chuyÓn dĂ· liÖu tĂ” HTML ¼Õn PHP script (client lÂȘn server). Th«ng th−ĂȘng, khi viÕt mĂ©t script, ng−ĂȘi ta thiÕt kÕ mĂ©t FORM sao cho nĂŁ cung cÊp ¼Çy Ÿñ nhĂ·ng th«ng tin m” script cÇn ¼Ó xö lĂœ. 1. CÊu trĂłc cña mĂ©t FORM MĂ©t FORM ¼−üc mĂ« ¼Çu b»ng thÎ <FORM ... > v” kÕt thĂłc b»ng thÎ </FORM>. Trong FORM cĂŁ : - ThuĂ©c tÝnh : FORM th−ĂȘng cĂŁ ba thuĂ©c tÝnh, ba thuĂ©c tÝnh n”y n»m trong thÎ FORM mĂ« ¼Çu cña mĂ©t FORM : action, method, enctype . - Cžc thÎ ¼−üc dĂŻng trong FORM : input, select, textarea, hn, p, hr, dir, dl, menu, ol, ul, address, blockquote, [isindex]. pre . - FORM cĂŁ ba th”nh phÇn chÝnh : textarea, select, input . - FORM cĂŁ thÓ ¼−üc dĂŻng trong cžc thÎ : blockquote,body,dd, li. 2. Cžc thuĂ©c tÝnh Khi tÂčo mĂ©t FORM ,c«ng viÖc ¼Çu tiÂȘn l” xžc ¼Þnh thuĂ©c tÝnh cña nĂŁ. - ThuĂ©c tÝnh action : Action=”URL” chØ ¼Õn script m” FORM sö dĂŽng. Ngo”i ra nĂŁ cĂČng cĂŁ thÓ l” mailto url, khi Ÿã nĂ©i dung cña FORM ¼−üc mail ¼Õn ¼Þa chØ trong url . 33
  • 34. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL - ThuĂ©c tÝnh method : Method cĂŁ thÓ ¼−üc gžn b»ng “GET” hoÆc “POST” ,nĂŁ chØ ra ph−¬ng thĂžc Post hay Get sÏ ¼−üc sö dĂŽng trong FORM, giž trÞ ngÇm ¼Þnh l” Get. - ThuĂ©c tÝnh enctype : Enctype=”Mime_type” :chØ ra loÂči dĂ· liÖu sÏ göi Âźi. Giž trÞ ngÇm ¼Þnh l” application/x-www-form-urlencode. Trong mĂ©t trang chĂłng ta cĂŁ thÓ sö dĂŽng nhiÒu FORM nhng kh«ng ¼−üc lĂ„ng chĂłng v”o nhau. 2. Cžc th”nh phÇn cÂŹ b¶n cña FORM. MĂ©t FORM ,th«ng th−ĂȘng cĂŁ ba th”nh phÇn chÝnh : +Textarea +Select +Input a - Textarea §−üc bŸt ¼Çu b»ng thÎ <Texterea> v” kÕt thĂłc b»ng thÎ </Texterea>. BÂȘn trong chĂža cžc kĂœ tĂč, thÎ n”y ¼−üc dĂŻng lĂ„ng v”o trong FORM. Cžc thuĂ©c tÝnh cña Texterea . - Name : §Þnh nghÜa tÂȘn cña th”nh phÇn, thuĂ©c tÝnh n”y lu«n lu«n ph¶i cĂŁ. - Rows : Cho biÕt sĂš h”ng cña hĂ©p všn b¶n. - Cols : Cho biÕt sĂš cĂ©t cña všn b¶n. Wrap : ChØ ra cžch xö lĂœ word_wraping (cšn chiÒu d”i cña dßng všn b¶n theo kÝch th−íc cña hĂ©p všn b¶n) trong hĂ©p thoÂči. NÕu wrap=”off”, chĂžc nšng word_wraping bÞ cÊm. NÕu wrap=”vitual”, chĂžc nšng n”y ¼−üc bËt lÂȘn, khi gĂą všn b¶n v”o, ta thÊy con trĂĄ tĂč Ÿéng xuĂšng h”ng mçi khi nĂŁ chÂčy ¼Õn biÂȘn cña hĂ©p všn b¶n, kĂœ tĂč newline (OA hex) tĂč Ÿéng ¼−üc thÂȘm v”o nh−ng kh«ng ¼−üc göi Âźi cĂŻng FORM. NÕu wrap=”physical”, chĂžc nšng n”y cĂČng ¼−üc bËt v” hoÂčt Ÿéng nh− trÂȘn nh−ng kĂœ tĂč newline ¼−üc göi Âźi cĂŻng vĂ­i FORM. 34
  • 35. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL Všn b¶n n»m giĂ·a hai thÎ <Texterea> v” </Texterea> sÏ ¼−üc thÓ hiÖn nh− ÂźoÂčn všn b¶n ngÇm ¼Þnh trong vĂŻng dĂ· liÖu. VÝ dĂŽ: <Texterea name=”van_ban” rows=”4” cols=”40”> .. . </ Texterea > b. Select §−üc bŸt ¼Çu b»ng thÎ <Select> v” kÕt thĂłc b»ng thÎ </ Select >, cÆp thÎ n”y cĂŁ thÓ lĂ„ng trong FORM hay bÊt kĂș th”nh phÇn n”o cña FORM ngoÂči trĂ” Texterea v” Select . Select cĂŁ cžc thuĂ©c tÝnh sau : - Name : TÂȘn cña th”nh phÇn. - Size : Cho biÕt sĂš th”nh phÇn sÏ hiÓn thÞ, giž trÞ ngÇm ¼Þnh l” 1, do Ÿã danh sžch lĂča chĂ€n th−ĂȘng ¼−üc thÓ hiÖn dĂ­i dÂčng pop-up menu. ThuĂ©c tÝnh n”y cĂŁ thÓ kh«ng cĂŁ. - Multiple : NÕu thuĂ©c tÝnh n”y ¼−üc thiÕt lËp, nhiÒu lĂča chĂ€n sÏ ¼−üc chĂ€n cĂŻng mĂ©t lĂłc, ng−üc lÂči chØ ¼−üc chĂ€n mĂ©t item. Khi sö dĂŽng Select, chĂłng ta cĂŁ thÓ dĂŻng thÂȘm Option <Option>. .. .. .. </Option> BÂȘn trong chĂža cžc kĂœ tĂč, cĂŁ thÓ ¼−üc sö dĂŽng lĂ„ng v”o Select . Cžc thuĂ©c tÝnh Option : - Disable : §žnh mĂ©t lĂča chĂ€n bÞ cÊm. Khi hiÓn thÞ, chĂ€n lĂča n”y sÏ bÞ che mĂȘ. - Selected : §žnh dÊu chĂ€n lĂča n”y Ÿ· ¼−üc chĂ€n, nÕu thuĂ©c tÝnh Multiple ¼−üc bËt trong Select, bÂčn cĂŁ thÓ Ÿžnh dÊu Selected nhiÒu chĂ€n lĂča cĂŻng lĂłc. NĂŁ dĂŻng ¼Ó Ÿžnh dÊu cžc lĂča chĂ€n ngÇm ¼Þnh. - Value : ChØ ra giž trÞ ¼−üc gžn cho lĂča chĂ€n, nÕu kh«ng cĂŁ th× nĂ©i dung cña th− mĂŽc option sÏ ¼−üc göi Âźi thay cho value. c. Input 35
  • 36. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL MĂ« ¼Çu b»ng thÎ < Input >, thÎ n”y cĂŁ thÓ dĂŻng trong bÊt cĂž th”nh phÇn n”o khžc cña FORM ngoÂči trĂ” Texterea v” Select. Cžc thuĂ©c tÝnh : - Align : CĂŁ thÓ l” mĂ©t trong ba giž trÞ top, middle, bottom dĂŻng ¼Ó cšn lÒ ¶nh vĂ­i cžc všn b¶n xung quanh, thuĂ©c tÝnh n”y chØ cĂŁ Ăœ nghÜa vĂ­i Type=“image” . - Name : gŸn tÂȘn biÕn cho dĂ· liÖu cña th”nh phÇn n”y. Giž trÞ cña thuĂ©c tÝnh do user lĂča chĂ€n . - Type : ¼Þnh ra mĂ©t trong nhĂ·ng giž trÞ sau checkbox, hidden, image, password, radio, reset, submit, text, file, bottom . - Checked : chØ ra mĂ©t nĂłt radio, hay mĂ©t checkbox cÂŹ ¼−üc chĂ€n hay kh«ng. - Maxlength : chØ ra chiÒu d”i tĂši Âźa m” hĂ©p thoÂči všn b¶n cĂŁ thÓ chĂža, thuĂ©c tÝnh n”y chØ cĂŁ Ăœ nghÜa vĂ­i input cĂŁ type=”text” hay type=”password” . - Size : chØ ra kÝch th−íc thĂčc sĂč cña hĂ©p thoÂči všn b¶n. IX. TĂŁm l−üc Nh− vËy, chĂłng ta Ÿ· kh¶o sžt hÇu hÕt cžc chĂžc nšng cÂŹ b¶n cña PHP, tĂ” cžc kiÓu dĂ· liÖu, khai bžo biÕn, h”ng, m¶ng cho tĂ­i cžch thĂčc hiÖn ch−¬ng tr×nh dÂčng Mžy khžch/Mžy chñ (Client/Server), v” nhĂłng cžc ÂźoÂčn m· PHP v”o cžc trang HTML .v.v. Nh− trÂȘn chĂłng ta Ÿ· tr×nh b”y, cÂŹ sĂ« dĂ· liÖu cho trang Web l” th”nh phÇn kh«ng thÓ thiÕu, nĂŁ Ÿãng vai trß quyÕt ¼Þnh cho ch−¬ng tr×nh. VÝ lĂœ do Ÿã, phÇn tiÕp theo chĂłng ta sÏ kh¶o sžt ng«n ngĂ· SQL v” cžc h”m API cña PHP ¼Ó thĂčc hiÖn cžc lÖnh truy vÊn trÂȘn hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu MySQL. X. Cžc h”m API trong PHP 1. GiĂ­i thiÖu vÒ MySQL . PHP hç trĂź mĂ©t sĂš l−üng lĂ­n cžc h”m l”m viÖc vĂ­i cÂŹ sĂ« dĂ· liÖu nh Oracle, Sybase, PostgreSQL, MySQL. .. Th«ng qua chuÈn ODBC (Open Database Connectivity), b»ng cžch sö dĂŽng cžc h”m API (Application 36
  • 37. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL Programming Interface) m” PHP cĂŁ thÓ l”m viÖc ¼−üc vĂ­i nhiÒu hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu nh− vËy. NÕu hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu kh«ng hç trĂź ODBC ,v” hÂŹn nĂ·a ODBC cĂŁ ¼Æc ÂźiÓm chØ hç trĂź Ă« dÂčng chuÈn th× PHP cĂŁ thÓ l”m viÖc vĂ­i ODBC Ă« tÇng trÂȘn. NÕu kh«ng muĂšn sö dĂŽng ODBC ta cĂŁ thÓ sö dĂŽng cžc h”m API . Trong phÇn n”y chĂłng ta chØ sö dĂŽng cžc h”m API ¼Ó l”m viÖc vĂ­i hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu MySQL . 2. Cžc h”m cÂŹ b¶n l”m viÖc vĂ­i cÂŹ sĂ« dĂ· liÖu MySQL. a) Cžc h”m kÕt nĂši ¼Õn MySQL Server PHP cung cÊp hai h”m ¼Ó kÕt nĂši vĂ­i cÂŹ sĂ« dĂ· liÖu MySQL : mysql_connect v” mysql_pconnect . + mysql_connect () : h”m n”y sÏ tÂčo ra mĂ©t liÂȘn kÕt tĂ­i mžy chñ MySQL . CĂł phžp : int mysql_connect (string [hostname [:port] [:/path_to_socket]], string [username], string [password]); Trong Ÿã : - hostname : TÂȘn mžy chñ cÂŹ sĂ« dĂ· liÖu, nÂŹi trang web sÏ chĂža cÂŹ sĂ« dĂ· liÖu. Giž trÞ ngÇm ¼Þnh l” “localhost’” - :port : §Þa chØ cĂŠng, nÂŹi bĂ© mžy cÂŹ sĂ« dĂ· liÖu lŸng nghe yÂȘu cÇu. Giž trÞ ngÇm ¼Þnh l” “:3306” . - :/path_to_socket : CĂČng giĂšng nh− :port nh−ng chØ cho hÖ ÂźiÒu h”nh UNIX. Giž trÞ ngÇm ¼Þnh l” “:/tmp/mysql.sock” . - username : TÂȘn cña ng−ĂȘi sö dĂŽng ¼−üc phÐp kÕt nĂši v”o bĂ© mžy cÂŹ sĂ« dĂ· liÖu. - password : MËt khÈu cña ng−ĂȘi sö dĂŽng ¼Ó kÕt nĂši v”o bĂ© mžy cÂŹ sĂ« dĂ· liÖu. H”m n”y tr¶ vÒ m· sĂš nhËn dÂčng nÕu kÕt nĂši th”nh c«ng, giž trÞ 0 (false) nÕu viÖc kÕt nĂši cĂŁ lçi. M· sĂš nhËn dÂčng n”y sÏ ¼−üc sö dĂŽng cho tÊt c¶ cžc yÂȘu cÇu tĂ­i bĂ© mžy cÂŹ sĂ« dĂ· liÖu sau n”y. 37
  • 38. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL SĂč kÕt nĂši n”y sÏ Ÿãng lÂči khi gĂ€i h”m mysql_close() hoÆc kÕt thĂłc ÂźoÂčn PHP script. + mysql_pconnect() : H”m n”y tÂčo ra mĂ©t liÂȘn kÕt bÒn vĂ·ng vĂ­i mžy chñ MySQL. CĂł phžp : int mysql_pconnect (string [hostname [:port] [:/path_to_socket]], string [username], string [password]); Tham sĂš v” giž trÞ tr¶ vÒ cña h”m n”y cĂČng giĂšng h”m mysql_connect(). SĂč khžc biÕt giĂ·a hai h”m n”y l” liÂȘn kÕt tĂ­i mžy chñ MySQL kh«ng bÞ Ÿãng lÂči kÓ c¶ khi kÕt thĂłc kÞch b¶n (script) PHP hay gĂ€i h”m mysql_close(). MĂŽc ¼Ých cña h”m n”y l” lu«n lu«n duy tr× liÂȘn kÕt tĂ­i mžy chñ MySQL do lu«n cĂŁ sĂč yÂȘu cÇu tĂ­i mžy chñ, tržnh cho mžy chñ ph¶i t×m kiÕm m· sĂš nhËn dÂčng mĂ­i tĂ” Ÿã gi¶m thĂȘi gian truy cËp . ChĂł Ăœ : h”m n”y chØ thĂčc hiÖn ¼−üc khi PHP ¼−üc ¼Þnh cÊu h×nh nh− l” mĂ©t module cña Web server . + mysql_close() : H”m n”y huĂ» bĂĄ sĂč kÕt nĂši tĂ­i mžy chñ MySQL . CĂł phžp : int mysql_close(int [link_identifier]); Tham sĂš link_identifier l” m· sĂš nhËn dÂčng tÂčo ra bĂ«i h”m mysql_connect(). H”m tr¶ vÒ l” True nÕu th”nh c«ng, ng−üc lÂči l” False . b) Cžc h”m thao tžc trÂȘn CSDL + mysql_create_db() : H”m tÂčo cÂŹ sĂ« dĂ· liÖu CĂł phžp : int mysql_create_db(string name, int [link_identifier]) ; Trong Ÿã : - string name : TÂȘn cña cÂŹ sĂ« dĂ· liÖu cÇn tÂčo. - int link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m mysql_connect() . ChĂłng ta ho”n to”n cĂŁ thÓ göi c©u lÖnh SQL ¼Ó tÂčo cÂŹ sĂ« dĂ· liÖu th«ng qua h”m mysql_query() . 38
  • 39. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL + mysql_drop_db() : H”m xož cÂŹ sĂ« dĂ· liÖu CĂł phžp : int mysql_drop_db(string name, int [link_identifier]); Trong Ÿã : - string name : TÂȘn cña cÂŹ sĂ« dĂ· liÖu cÇn xož . - int link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m mysql_connect() . ChĂłng ta ho”n to”n cĂŁ thÓ göi c©u lÖnh SQL ¼Ó xož cÂŹ sĂ« dĂ· liÖu th«ng qua h”m mysql_query(). + mysql_select_db() : H”m cho cÂŹ sĂ« dĂ· liÖu hoÂčt Ÿéng . CĂł phžp : int mysql_select_db(string database_name, int [link_identifier]); Trong Ÿã: - database_name : TÂȘn cña cÂŹ sĂ« dĂ· liÖu m” sau n”y cžc h”m API khžc cña PHP sÏ thĂčc hiÖn trÂȘn Ÿã. - int link_identifier : M· nhËn dÂčng ¼−üc cÊp bĂ«i h”m mysql_connect(). C©u lÖnh n”y sÏ gŸn tÂȘn cÂŹ sĂ« dĂ· liÖu vĂ­i m· nhËn dÂčng, sau n”y khi l”m viÖc vĂ­i link_identifier sÏ bao gĂ„m c¶ cÂŹ sĂ« dĂ· liÖu ¼−üc chĂ€n . c) Cžc h”m thao tžc trÂȘn dĂ· liÖu + mysql_query() : H”m göi c©u lÖnh SQL tĂ­i mžy chñ MySQL . CĂł phžp : int mysql_query(string query, [int link_identifier]) ; Trong Ÿã : - string query : C©u lÖnh SQL cÇn göi tĂ­i mžy chñ MySQL . - int link_identifier : M· sĂš nhËn dÂčng, nĂŁ ph¶i ¼−üc thĂčc hiÖn trong h”m mysql_select_db() tr−íc Ÿã . + mysql_db_query() : H”m göi c©u lÖnh SQL tĂ­i mžy chñ MySQL . CĂł phžp : 39
  • 40. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL int mysql_db_query(string database, string query, int [link_identifier]); Trong Ÿã : - string database : TÂȘn cÂŹ sĂ« dĂ· liÖu c©u lÖnh SQL sÏ thĂčc hiÖn trÂȘn Ÿã. - string query : C©u lÖnh SQL cÇn thĂčc hiÖn . - link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m mysql_connect() H”m n”y chØ rĂą c©u lÖnh ¼−üc thĂčc hiÖn trÂȘn cÂŹ sĂ« dĂ· liÖu n”o nÂȘn tr−íc Ÿã kh«ng cÇn thĂčc hiÖn h”m mysql_select_db(); +mysql_insert_id() : H”m lÊy giž trÞ ¼−üc sinh ra tĂ” c©u truy vÊn INSERT trĂ­c CĂł phžp : int mysql_insert_id([link_identifier]) ; trong Ÿã: int link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m mysql_connect() . H”m n”y tr¶ vÒ giž trÞ id ¼−üc sinh ra trong cĂ©t AUTO_INCREMENT bĂ«i c©u truy vÊn tr−íc Ÿã. §iÒu n”y chØ cĂŁ tžc dĂŽng trÂȘn link_identifier ¼−üc chØ ra trong h”m, nÕu gĂ€i h”m trÂȘn m” kh«ng chØ ¼Þnh tham sĂš link_identifier th× liÂȘn kÕt ¼−üc mĂ« cuĂši cĂŻng sÏ ¼−üc chØ ¼Þnh. H”m mysql_insert_id() tr¶ vÒ giž trÞ 0 nÕu c©u truy vÊn tr−íc Ÿã kh«ng sinh ra mĂ©t giž trÞ AUTO_INCREMENT. NÕu ta muĂšn giĂ· lÂči giž trÞ cho lÇn sau, th× ph¶i gĂ€i h”m n”y ngay sau c©u truy vÊn sinh ra giž trÞ . + mysql_fetch_row() : H”m tr¶ vÒ mĂ©t m¶ng l” giž trÞ cña mĂ©t b¶ng ghi hiÖn tÂči vĂ­i chØ sĂš l” sĂš thĂž tĂč cña cžc tr−ĂȘng (chØ sĂš bŸt ¼Çu tĂ” 0). Sau Ÿã h”m sÏ trĂĄ tĂ­i b¶ng ghi tiÕp theo cho tĂ­i khi gÆp b¶ng ghi cuĂši cĂŻng h”m tr¶ vÒ giž trÞ false. §Ó truy xuÊt tĂ­i cžc giž trÞ cña cĂ©t ta viÕt : tÂȘn_m¶ng[sĂš thĂž tĂč] CĂł phžp : array mysql_fetch_row( int result_identifier); 40
  • 41. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query() hoÆc mysql_db_query() . VÝ dĂŽ : <?php $mysql = “select id, name from ds_thanhvien”; // cau lenh SQL $link = mysql_connect($host, $user, $password); //lay ma mysql_select_db($database_name, $link); $result = mysql_query($mysql ,$link); while ($row = mysql_fetch_row($result)) { echo $row[0] ; echo $row[1]; } ?> + mysql_fetch_array() : H”m tr¶ vÒ mĂ©t m¶ng l” giž trÞ cña mĂ©t b¶ng ghi hiÖn tÂči, sau Ÿã h”m sÏ trĂĄ tĂ­i b¶ng ghi tiÕp theo cho tĂ­i khi gÆp b¶ng ghi cuĂši cĂŻng h”m tr¶ vÒ giž trÞ false. CĂł phžp : array mysql_fetch_array( int result_identifier [, int result_type] ); Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query() hoÆc mysql_db_query() . §Ó truy xuÊt ¼Õn cžc th”nh phÇn cña cĂ©t : tÂȘn_biÕn_m¶ng[“tÂȘn_trĂȘng”]; result_type l” mĂ©t h»ng sĂš cĂŁ thÓ nhËn cžc giž trÞ sau: -MYSQL_NUM : chØ tr¶ lÂči mĂ©t m¶ng chĂža cžc chØ sĂš l” sĂš (giĂšng nh− h”m mysql_fetch_row() ) -MYSQL_ASSOC: chØ tr¶ lÂči mĂ©t m¶ng liÂȘn kÕt 41
  • 42. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL -MYSQL_BOTH : tr¶ lÂči m¶ng chĂža ÂźĂčng cžc chØ sĂš gĂ„m c¶ cžc con sĂš v” chØ sĂš liÂȘn kÕt . H”m n”y l” sĂč mĂ« rĂ©ng cña h”m mysql_fetch_row(). NĂŁ cho phÐp truy cËp tr−ĂȘng dĂ· liÖu cña m¶ng kÕt qu¶ kh«ng chØ th«ng qua cžc chØ sĂš l” cžc sĂš m” chĂłng cĂŁ thÓ l” tÂȘn cña cžc tr−ĂȘng dĂ· liÖu. §iÒu n”y l”m cho viÖc lËp tr×nh Ÿn gi¶n v” chÝnh xžc hÂŹn. VÝ dĂŽ: <?php $mysql = “select id, name from ds_thanhvien”; $link = mysql_connect($host, $user, $password); $result = mysql_db_query(“php”, $mysql); while ($row = mysql_fetch_array($result)) { echo “user_id: “. $row[“id”] .“<BR>n”; echo “user_id: “. $row[0] .“<BR>n”; echo “user_name: “. $row[“name”] .“<BR>n”; echo “user_name: “. $row[1] .“<BR>n”; } mysql_free_result ($result); ?> + mysql_fetch_object() : H”m tr¶ vÒ mĂ©t ŸÚi t−üng l” giž trÞ cña mĂ©t b¶ng ghi hiÖn thĂȘi. Sau Ÿã h”m sÏ trĂĄ tĂ­i b¶ng ghi tiÕp theo cho tĂ­i khi gÆp b¶ng ghi cuĂši cĂŻng h”m tr¶ vÒ giž trÞ false. §Ó truy xuÊt tĂ­i cžc giž trÞ cña cĂ©t ta viÕt tÂȘn_object->tÂȘn_cĂ©t . CĂł phžp : object mysql_fetch_object(int result_identifier); Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query() hoÆc mysql_db_query() . VÝ dĂŽ : 42
  • 43. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL <?php $mysql = “select id, name from ds_thanhvien”; $link = mysql_connect($host, $user, $password); $result = mysql_db_query(“php”, $mysql); while ($row = mysql_fetch_object($result)) { echo $row->id ; echo $row->name; } ?> +mysql_fetch_assoc() :lÊy vÒ mĂ©t dßng kÕt qu¶ nh− l” mĂ©t m¶ng liÂȘn kÕt . cĂł phžp: array mysql_fetch_assoc(int result_identifier) Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query() hoÆc mysql_db_query() . H”m tr¶ vÒ mĂ©t m¶ng t−¬ng Ăžng vĂ­i mĂ©t b¶n ghi ¼−üc lÊy vÒ v” tr¶ lÂči FALSE nÕu kh«ng cĂŁ b¶n ghi n”o. H”m n”y t−¬ng ¼−¬ng vĂ­i h”m array mysql_fetch_array() vĂ­i tham sĂš result_type l” : MYSQL_ASSOC vÝ dĂŽ : <?php $mysql = “select id, name from ds_thanhvien”; $link = mysql_connect($host, $user, $password); $result = mysql_db_query(“php”, $mysql); while ($row = mysql_fetch_assoc($result)) { echo $row[“id”]; echo $row[“name”]; } ?> 43
  • 44. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL +mysql_data_seek() Di chuyÓn con trĂĄ bÂȘn trong “tËp kÕt qu¶” (cĂŁ ¼−üc sau khi c©u truy vÊn SELECT ¼−üc thĂčc hiÖn) CĂł phžp: bool mysql_data_seek(int result_identifier, int row_number); Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(), mysql_db_query(), mysql_list_tables(), mysql_list_dbs() . row_number l” chØ sĂš cña b¶n ghi m” cÇn ¼Æt con trĂĄ v”o . H”m tr¶ vÒ true nÕu th”nh c«ng, false nÕu lçi . H”m n”y sÏ di chuyÓn con trĂĄ bÂȘn trong “tËp kÕt qu¶” (¼−üc chØ rĂą bĂ«i tham ŸÚi result_identifier) ¼Õn dßng cĂŁ m· b»ng tham ŸÚi row_number. Cžc dßng trong tËp kÕt qu¶ ¼−üc bŸt ¼Çu tĂ” 0 VÝ dĂŽ: <?php $link = mysql_pconnect ($host, $user, $password) or die ("Could not connect"); $query = "SELECT last_name, first_name FROM friends"; $result = mysql_db_query (“php”,$query) or die ("Query failed"); # fetch rows in reverse order for ($i = mysql_num_rows ($result) - 1; $i >=0; $i--) { if (! Mysql_data_seek ($result, $i)) { printf ("Cannot seek to row %dn", $i); continue; } if(!($row = mysql_fetch_object ($result))) continue; printf ("%s %s<BR>n", $row->last_name, $row->first_name); } mysql_free_result ($result); ?> 44
  • 45. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL + mysql_num_rows() :tr¶ lÂči sĂš dßng trong result_identifier (nÂŹi chĂža kÕt qu¶ cña c©u lÖnh SQL Ÿ· ¼−üc thĂčc hiÖn) cĂł phžp: mysql_num_rows(int result_identifier) ; Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(), mysql_db_query(), mysql_list_tables(), mysql_list_dbs() . +mysql_affected_rows() cĂł phžp : int mysql_affected_rows(int [link_identifier]) ; Trong Ÿã :int link_identifier l” m· sĂš nhËn dÂčng, nĂŁ ph¶i ¼−üc thĂčc hiÖn trong h”m mysql_select_db() tr−íc Ÿã . H”m tr¶ vÒ sĂš dßng Ÿ· bÞ tžc Ÿéng bĂ«i mĂ©t c©u truy vÊn SQL :INSERT, UPDATE, DELETE tr−íc Ÿã theo tham sĂš link_identifier. NÕu link_identifier kh«ng ¼−üc chØ ¼Þnh th× m· kÕt nĂši tr−íc Ÿã sÏ ¼−üc chØ ¼Þnh. ChĂł Ăœ : - NÕu c©u lÖnh SQL tr−íc Ÿã l” DELETE m” kh«ng cĂŁ mÖnh ¼Ò WHERE th× to”n bĂ© cžc b¶n ghi trong b¶ng Ÿ· bÞ xož nh−ng h”m mysql_affected_rows() sÏ tr¶ vÒ gižn trÞ 0. -H”m n”y kh«ng cĂŁ tžc dĂŽng ŸÚi vĂ­i c©u lÖnh truy vÊn SELECT. §Ó lÊy ¼−üc sĂš dßng tr¶ vÒ (sĂš dßng Ÿ· bÞ tžc Ÿéng) bĂ«i c©u lÖnh SELECT ta dĂŻng h”m mysql_num_rows(). +mysql_result() : lÊy dĂ· liÖu tĂ” result_identifier cĂł phžp : mixed mysql_result(int result_identifier, int row, mixed [field]); Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(), mysql_db_query(), mysql_list_tables(), mysql_list_dbs() . row l” b¶n ghi m” ta sÏ lÊy dĂ· liÖu field l” tr−ĂȘng trong dßng row m” ta sÏ lÊy dĂ· liÖu . Cžc tham sĂš result_identifier v” row ph¶i cĂŁ, cßn tham field l” tĂŻy chĂ€n. H”m sÏ tr¶ lÂči cžc nĂ©i dung cña dßng row v” cĂ©t field tĂ” tËp kÕt qu¶ ¼−üc chØ ¼Þnh bĂ«i biÕn result_identifier. NÕu ŸÚi sĂš field kh«ng ¼−üc chØ ¼Þnh rĂą th× tr−ĂȘng tiÕp theo cña b¶n ghi sÏ ¼−üc tr¶ vÒ . 45
  • 46. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL VÝ dĂŽ: <?php $mysql = “select id, name from ds_thanhvien”; $link = mysql_connect($host, $user, $password); $result = mysql_db_query(“php”, $mysql); echo “ mysql_result($result, 0, “id”) <BR>n”; echo “ mysql_result($result, 0, “name”) <BR>n”; ?> +mysql_free_result() : H”m gi¶i phĂŁng vĂŻng bĂ© nhĂ­ ¼−üc liÂȘn kÕt vĂ­i result_identifier . cĂł phžp: mysql_free_result(int result_identifier) ; Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(), mysql_db_query(), mysql_list_tables(), mysql_list_dbs() . H”m n”y chØ ¼−üc dĂŻng nÕu nh− bÂčn Ÿžnh giž thÊy r»ng kÞch b¶n cña bÂčn sö dĂŽng quž nhiÒu bĂ© nhĂ­ khi Âźang chÂčy. GĂ€i h”m n”y trÂȘn mĂ©t tr×nh xö lĂœ kÕt qu¶ sÏ gi¶i phĂŁng to”n bĂ© dĂ· liÖu liÂȘn kÕt trong bĂ© nhĂ­ . Ngo”i ra cßn cžc h”m khžc: string mysql_tablename (int result_identifier, int i) H”m tr¶ lÂči tÂȘn cña b¶ng/csdl tÂči chØ sĂš i trong result_identifier. string mysql_field_name (int result_identifier, int field_index) H”m tr¶ lÂči tÂȘn cña tr−ĂȘng tÂči vÞ trÝ field_index trong m· result_identifier int mysql_list_dbs ([int link_identifier]) H”m tr¶ lÂči mĂ©t result_identifier l” danh sžch biÕn CSDL trÂȘn MySQL Server nÕu th”nh c«ng, lçi tr¶ vÒ false . int mysql_list_tables (string database [, int link_identifier]) H”m tr¶ vÒ danh sžch tÊt c¶ c©c b¶ng trong mĂ©t CSDL MySQL, th”nh c«ng tr¶ vÒ mĂ©t result identifier, giž trÞ false nÕu cĂŁ lçi . 46
  • 47. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL int mysql_list_fields (string database_name, string table_name [, int link_identifier]) H”m tr¶ vÒ th«ng tin liÂȘn quan ¼Õn mĂ©t b¶ng dĂ· liÖu. int mysql_num_fields (int result_identifier) Tr¶ vÒ sĂš tr−ĂȘng trong tËp kÕt qu¶ . int mysql_num_rows (int result_identifier) Tr¶ vÒ sĂš b¶n ghi trong tËp kÕt qu¶, h”m n”y chØ cĂŁ giž ŸÚi vĂ­i cžc c©u lÖnh SELECT ,¼Ó lÊy lÂči sĂš b¶n ghi ¼−üc tr¶ lÂči tĂ” cžc lÖnh :INSERT, UPDATE hoÆc DELETE, dĂŻng mysql_affected_rows(). string mysql_field_type (int result_identifier, int field_index) H”m tr¶ vÒ kiÓu dĂ· liÖu cña tr−ĂȘng tÂči vÞ trÝ field_index trong m· result_identifier . int mysql_field_len (int result_identifier, int field_offset) H”m tr¶ vÒ Ÿé d”i cña tr−ĂȘng ¼−üc chØ ¼Þnh th«ng qua tham sĂš field_offset . array mysql_fetch_lengths (int result_identifier) tr¶ vÒ mĂ©t m¶ng t−¬ng Ăžng vĂ­i cžc Ÿé d”i cña mçi tr−ĂȘng trong b¶n ghi ¼−üc lÊy vÒ bĂ«i h”m mysql_fetch_row() hoÆc false nÕu cĂŁ lçi. int mysql_errno ([int link_identifier]) H”m tr¶ vÒ m· lçi tĂ” h”m thao tžc CSDL MySQL tr−íc ,tr¶ vÒ giž trÞ 0 nÕu kh«ng cĂŁ lçi . string mysql_error ([int link_identifier]) H”m tr¶ vÒ x©u th«ng bžo lçi tĂ” h”m thao tžc CSDL MySQL tr−íc, tr¶ vÒ x©u rçng nÕu kh«ng cĂŁ lçi . object mysql_fetch_field (int result_identifier [, int field_offset]) LÊy th«ng tin vÒ trĂȘng tĂ” tËp kÕt qu¶ rĂ„i tr¶ lÂči nh mĂ©t ŸÚi t−üng. 47
  • 48. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL XI. Session v” Cookie 1. Session l” g× ? HTTP l” giao thĂžc kh«ng ¼−üc x©y dĂčng theo cžch ¼Ó cĂŁ thÓ lu giĂ· ¼−üc trÂčng thži giĂ·a hai lÇn giao dÞch. Khi mĂ©t ng−ĂȘi dĂŻng yÂȘu cÇu truy nhËp mĂ©t trang Web, rĂ„i sau Ÿã ng−ĂȘi dĂŻng n”y lÂči tiÕp tĂŽc yÂȘu cÇu truy nhËp ŸÚi vĂ­i trang Web khžc th× HTTP kh«ng thÓ biÕt ¼−üc r»ng Ÿã l” hai yÂȘu cÇu tĂ” cĂŻng mĂ©t ng−ĂȘi dĂŻng. Ăœ tâˆ’Ă«ng cña viÖc ÂźiÒu khiÓn phiÂȘn l”m viÖc l” cĂŁ thÓ l−u vÕt cña mĂ©t ng−ĂȘi dĂŻng trong suĂšt mĂ©t phiÂȘn l”m viÖc. NÕu chĂłng ta l”m ¼−üc ÂźiÒu n”y th× sÏ dÔ d”ng cung cÊp mĂ©t truy nhËp cho ng−ĂȘi dĂŻng, tĂ” Ÿã ta cĂŁ thÓ l−u vÕt trÂčng thži cña ng−ĂȘi dĂŻng v” cĂŁ thÓ thĂčc hiÖn viÖc mua bžn trÂȘn mÂčng. Session trong PHP ¼−üc ÂźiÒu khiÓn bĂ«i mĂ©t giž trÞ ID duy nhÊt gĂ€i l” “sessionID”, giž trÞ n”y sÏ ¼−üc tĂč Ÿéng sinh ra v” m· hĂŁa. SessionID ¼−üc sinh ra bĂ«i PHP v” ¼−üc l−u trĂ· Ă« phÝa client trong suĂšt mĂ©t phiÂȘn giao dÞch. NĂŁ cĂŁ thÓ ¼−üc l−u trĂ· trÂȘn cžc Cookie Ă« mžy ng−ĂȘi dĂŻng hay truyÒn lÂȘn cžc URL. SessionID cĂŁ tžc dĂŽng nh− mĂ©t khož ¼Ó bÂčn cĂŁ thÓ Ÿšng kĂœ nhĂ·ng biÕn ¼Æc biÖt gĂ€i l” biÕn session. NĂ©i dung cña nhĂ·ng biÕn n”y ¼−üc chĂža trÂȘn Server. SessionID l” nhĂ·ng th«ng tin chØ thÊy ¼−üc Ă« phÝa client. NÕu tÂči thĂȘi ÂźiÓm n”o Ÿã cña mĂ©t kÕt nĂši ¼Õn trang Web cña bÂčn, sessionID cĂŁ thÓ thÊy ¼−üc trÂȘn cookie hay URL, bÂčn cĂŁ thÓ truy nhËp nhĂ·ng biÕn session chĂž trÂȘn Server Ă« phiÂȘn l”m viÖc Ÿã. 2) Cookie l” g× ? Cookie l” nhĂ·ng mÈu tin nhĂĄ m” trang script cĂŁ thÓ chĂža trÂȘn cžc mžy khžch (client). BÂčn cĂŁ thÓ thiÕt lËp mĂ©t cookie trÂȘn mĂ©t mžy ng−ĂȘi dĂŻng b»ng cžch göi mĂ©t “HTTP header” cĂŁ chĂža dĂ· liÖu theo dÂčng sau: Set-Cookie:Name=VALUE;[expires=DATE;][path=PATH;] [domain=DOMAIN_NAME;][secure] c©u lÖnh n”y sÏ tÂčo ra mĂ©t cookie cĂŁ tÂȘn gĂ€i l” NAME vĂ­i giž trÞ l” VALUE. Tr−ĂȘng expires sÏ thiÕt lËp ng”y m” cookie sÏ hÕt hiÖu lĂčc, path v” domain cĂŁ thÓ ¼−üc sö dĂŽng ¼Ó chØ ¼Þnh cžc URL (nÂŹi m” cookie sÏ ¼−üc göi Âźi). TĂ” 48
  • 49. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL khož secure cĂŁ nghÜa l” cookie sÏ kh«ng göi Âźi trÂȘn quž mĂ©t kÕt nĂši HTTP chuÈn. Khi mĂ©t browser kÕt nĂši tĂ­i mĂ©t URL, trĂ­c tiÂȘn nĂŁ kiÓm tra cžc cookie Ÿ· ¼−üc l−u trĂ· trÂȘn mžy. NÕu cĂŁ bÊt k× mĂ©t cookie n”o cĂŁ liÂȘn quan ¼Õn ¼Þa chØ URL vĂ”a ¼−üc kÕt nĂši, chĂłng sÏ ¼−üc truyÒn trĂ« lÂči cho server. 3) ThiÕt lËp cžc cookie tĂ” PHP Ta cĂŁ thÓ thiÕt lËp cžc cookie trong PHP b»ng cžch sö dĂŽng h”m: int setcookie (string name [,string value [,int expire [,string path [,string domain [, int secure]]]]]); NhĂ·ng tham ŸÚi cña h”m t−¬ng Ăžng vĂ­i nhĂ·ng tham ŸÚi cña Set-Cookie header Ă« trÂȘn. NÕu ta thiÕt lËp cookie nh− sau: setcookie ("TestCookie", "Test Value"); th× khi ng−ĂȘi dĂŻng ¼Õn thšm trang kÕ tiÕp trong site cña ta (hoÆc reload trang hiÖn tÂči) ta sÏ ph¶i truy nhËp v”o biÕn vĂ­i tÂȘn l” "TestCookie" cĂŁ chĂža giž trÞ l” "Test Value", ta chØ cĂŁ thÓ truy nhËp tĂ­i nĂŁ th«ng qua biÕn m¶ng $HTTP_COOKIE_VARS [] cña PHP . Ta cĂŁ thÓ xož mĂ©t cookie b»ng cžch gĂ€i lÂči h”m setcookie() vĂ­i tham ŸÚi nh− sau: tÂȘn cña cookie l” tÂȘn cña cookie cÇn xož v” kh«ng cĂŁ tr−ĂȘng giž trÞ. 4) Sö dĂŽng kÕt hĂźp cookie vĂ­i session §Úi vĂ­i cookie cĂŁ mĂ©t sĂš vÊn ¼Ò sau Ÿ©y: MĂ©t v”i webrowser kh«ng thÓ truy cËp ¼−üc tĂ­i cžc cookie (kh«ng hç trĂź cookie) v” mĂ©t sĂš ng−ĂȘi dĂŻng kh«ng cĂŁ cžc cookie trÂȘn browser cña hĂ€. §©y l” lĂœ do ¼Ó PHP sö dĂŽng c¶ hai cžch thĂžc :cookie v” URL method. Khi sö dĂŽng PHP session, ta sÏ kh«ng ph¶i thiÕt lËp cžc cookie, nhĂ·ng h”m session sÏ l−u giĂ· nhĂ·ng th«ng tin n”y cho chĂłng ta. §Ó xem nĂ©i dung cña cžc cookie Ÿ· ¼−üc thiÕt lËp bĂ«i session ta sö dĂŽng h”m: session_get_cookie_params(). H”m n”y sÏ tr¶ vÒ mĂ©t m¶ng liÂȘn kÕt m” cžc phÇn tö cña m¶ng chĂža cžc th«ng tin nh−: lifetime, path, domain,.. . 49
  • 50. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL §Ó thiÕt lËp cžc tham sĂš cho session cookie ta dĂŻng h”m: void session_set_cookie_params (int lifetime [, string path [, string domain]]) 5) L−u giĂ· sessionID PHP sÏ sö dĂŽng cžc cookie mÆc ¼Þnh cĂŻng vĂ­i session. NÕu cĂŁ thÓ ¼−üc, mĂ©t cookie sÏ ¼−üc thiÕt lËp chĂža SessionID. MĂ©t cžch ¼Ó sö dĂŽng cžc SessionID trÂȘn URL Ÿã l” dÞch PHP cĂŻng vĂ­i lĂča chĂ€n –enable-tran-sid. Cžch nĂ·a l” ta cĂŁ thÓ Âźa sessionID v”o trong thÎ link. SessionID ¼−üc chĂža trong h»ng SID. §Ó l”m ¼−üc ÂźiÒu n”y, ta thÂȘm v”o cuĂši thÎ link h»ng SID ¼Ó dĂŻng nĂŁ nh− l” ph−¬ng thĂžc GET. VÝ dĂŽ: <A HREF = “link.php?<?=SID?>”> H»ng SID l”m viÖc ¼−üc nh− trÂȘn chØ khi ta cÊu h×nh PHP cĂŻng vĂ­i --enable-track-vars. 6) ThĂčc thi nhĂ·ng phiÂȘn l”m viÖc Ÿn gi¶n. NhĂ·ng b−íc cÂŹ b¶n cña viÖc sö dĂŽng session: + BŸt ¼Çu mĂ©t Session + §šng kĂœ nhĂ·ng biÕn Session + Sö dĂŽng biÕn Session + HuĂ» bĂĄ biÕn Session v” kÕt thĂłc Session 6.1 BŸt ¼Çu mĂ©t Session Cžch Ÿn gi¶n nhÊt ¼Ó bŸt ¼Çu mĂ©t Session l” dĂŻng h”m: Bool Session_start(); H”m n”y sÏ kiÓm tra xem Ÿ· cĂŁ mĂ©t Session ID n”o Ÿ· ¼−üc tÂčo ra hay ch−a. NÕu ch−a th× nĂŁ sÏ tÂčo ra mĂ©t Session ID, cßn nÕu Ÿ· tĂ„n tÂči mĂ©t Session ID th× thĂčc chÊt nĂŁ chØ lÊy ra nhĂ·ng biÕn Session ¼Ó ta cĂŁ thÓ dĂŻng nĂŁ. H”m tr¶ vÒ giž trÞ TRUE nÕu th”nh c«ng ,ng−üc lÂči tr¶ vÒ giž trÞ FALSE. 50
  • 51. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL ChĂłng ta cĂČng cĂŁ thÓ bŸt ¼Çu mĂ©t Session b»ng cžch cÊu h×nh PHP ¼Ó nĂŁ tĂč Ÿéng bŸt ¼Çu khi cĂŁ ai Ÿã thšm trang Web cña ta. §iÒu n”y cĂŁ thÓ l”m ¼−üc nÕu ta chĂ€n session. auto_start trong file c:Windowsphp.ini MĂ©t Session cĂČng sÏ ¼−üc bŸt ¼Çu khi ta Ÿšng kĂœ mĂ©t biÕn Session. 6.2 §šng kĂœ nhĂ·ng biÕn Session §Ó cho mĂ©t biÕn cĂŁ thÓ l−u dÊu th«ng tin tĂ” mĂ©t trang script n”y sang trang script khžc, ta cÇn ph¶i Ÿšng kĂœ nĂŁ b»ng cžch gĂ€i h”m: bool session_register(mixed VarName [,mixed...]); ViÖc Ÿšng kĂœ n”y sÏ l−u trĂ· tÂȘn biÕn v” ghi giž trÞ cña biÕn cho ¼Õn khi phiÂȘn giao dÞch kÕt thĂłc hoÆc khi ta huĂ» bĂĄ (deregister) viÖc Ÿšng kĂœ biÕn Ÿã. VÝ dĂŽ: §Ó Ÿšng kĂœ biÕn $Var_name ta viÕt nh− sau: $Var_name= 5; session_register(“Var_name”);// kh«ng nÂȘn sö dĂŽng kĂœ tĂč $ trong Ÿšng kĂœ mĂ©t biÕn 6.3 Sö dĂŽng biÕn Session §Ó Âźa mĂ©t biÕn Session v”o trong phÂčm vi m” nĂŁ cĂŁ thÓ ¼−üc sö dĂŽng, ta cÇn ph¶i khĂ«i tÂčo mĂ©t Session b»ng mĂ©t trong nhĂ·ng cžch Ÿ· nÂȘu trÂȘn. Sau Ÿã, ta cĂŁ thÓ truy cËp ¼−üc nhĂ·ng biÕn n”y. NÕu Ÿ· Ÿšng kĂœ biÕn n”y l” to”n cĂŽc b»ng cžch sö dĂŽng h”m register_global(), th× ta cĂŁ thÓ truy nhËp biÕn b×nh th−ĂȘng th«ng qua tÂȘn biÕn, vÝ dĂŽ : $Var_name ; NÕu kh«ng khai bžo biÕn l” to”n cĂŽc th× ta ph¶i truy nhËp nhĂ·ng biÕn Session th«ng qua m¶ng liÂȘn kÕt $HTTP_SESSION_VARS(“Var_name”); §Ó kiÓm tra xem mĂ©t biÕn Ÿ· ¼−üc Ÿšng kĂœ l” biÕn Session hay ch−a ta dĂŻng h”m: bool session_is_registered (string name); H”m n”y tr¶ vÒ giž trÞ TRUE nÕu biÕn Ÿ· ¼−üc Ÿšng kĂœ, ng−üc lÂči tr¶ vÒ giž trÞ FALSE. Ta cĂČng cĂŁ thÓ kiÓm tra mĂ©t biÕn cĂŁ l” biÕn Session b»ng cžch kiÓm tra m¶ng liÂȘn kÕt $HTTP_SESSION_VARS() vÒ sĂč tĂ„n tÂči cña biÕn. 51
  • 52. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 6.4 HuĂ» bĂĄ biÕn Session v” kÕt thĂłc Session Khi muĂšn kÕt thĂłc mĂ©t biÕn Session, ta cĂŁ thÓ huĂ» bĂĄ Ÿšng kĂœ cña biÕn Ÿã b»ng h”m : bool session_unregister (string name) ; Trong Ÿã: name l” tÂȘn biÕn ta muĂšn huĂ» Ÿšng kĂœ (tÂȘn n”y kh«ng cÇn cĂŁ kĂœ tĂč $) H”m tr¶ vÒ giž trÞ TRUE nÕu th”nh c«ng ,ng−üc lÂči tr¶ vÒ giž trÞ FALSE. H”m n”y chØ cĂŁ thÓ huĂ» Ÿšng kĂœ cña mĂ©t biÕn Session tÂči mĂ©t thĂȘi ÂźiÓm. §Ó huĂ» tÊt c¶ cžc biÕn Session hiÖn tÂči, ta dĂŻng h”m: void session _unset ( ) ; §Ó kÕt thĂłc mĂ©t Session ta dĂŻng h”m:s bool session_destroy () ; H”m n”y sÏ xož Âźi SessionID v” hñy tÊt c¶ nhĂ·ng dĂ· liÖu liÂȘn quan ¼Õn Session n”y. H”m tr¶ vÒ giž trÞ TRUE nÕu th”nh c«ng, ng−üc lÂči tr¶ vÒ giž trÞ FALSE. Ta nÂȘn hñy tÊt c¶ cžc biÕn Session tr−íc khi kÕt thĂłc mĂ©t Session. 52
  • 53. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL Ch−¬ng III : Ph−¬ng phžp Fast Template trong PHP I. Cžc kÜ thuËt mÉu phĂŠ biÕn Cžc mÉu cĂŁ thÓ ¼−üc dĂŻng nÕu nh− bÂčn Âźang thĂčc hiÖn mĂ©t site th−ĂȘng xuyÂȘn sö dĂŽng lÂči cžc th”nh phÇn .Trong phÂčm vi cña PHP ,cžc mÉu Ă« Ÿ©y Ăœ nĂŁi ¼Õn HTML. Kh«ng dĂŻng cžc mÉu ,mĂ©t web site phĂžc tÂčp sÏ cĂŁ cÊu trĂłc rÊt nÆng. §Ó gi¶i quyÕt vÊn ¼Ò trÂȘn ,nhiÒu kÜ thuËt mÉu Ÿ· tĂ„n tÂči, nhĂłng cĂŁ thÓ hĂ·u Ých trong mĂ©t sĂš tr−ĂȘng hĂźp. ChĂłng ta giĂ­i thiÖu qua mĂ©t sĂš kÜ thuËt ¼−üc sö dĂŽng th−ĂȘng xuyÂȘn . HTML Code/ structure Advantages Name HTML Disadvantages Useful for Defined mixed in PHP Leadsto unreadable Embedded Fastand scrips, noreuse of Quick and Yes Yes PHP easy existing code,hardto Smallscripts maintain Fast and Separating easy, Leadsto unreadable Web sites common Yes No scripts, often hard with LOC < parts Reuseof to maintain 1000 certain pasts Abstracts HTML completely Web sites FastTemplate No No from Complex with LOC > coding, easy 1000 to adapt to new needs 53
  • 54. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL ViÖc sö dĂŽng cžc mÉu trong cžc tr×nh Ăžng dĂŽng 1. Embedded PHP ChĂłng ta cĂŁ thÓ nhĂłng cžc c©u lÖnh PHP v”o trong HTML. MĂ©t vÝ dĂŽ ÂźiÓn h×nh cña cžch thĂžc trÂȘn : <HTML> <HEAD> <TITLE>powers</TITLE> </HEAD> <BODY BGCOLOR=”black” TEXT=”white”> <H1>powers</H1> <TABLE> <TR> <TH>i</TH> <TH>i^i</TH> </TR> <?php for ($i= 0 ; $i< 10 ; $i++) { echo “<TR><TD>$i</TD><TD>”.pow($i,$i).”</TD></TR>n”; } ?> </TABLE> </BODY> </ HTML > Ph−¬ng phžp n”y ¼−üc dĂŻng khž phĂŠ biÕn vĂ­i nhĂ·ng ng−ĂȘi bŸt ¼Çu hĂ€c lËp tr×nh PHP. TĂ­i mĂ©t lĂłc n”o Ÿã ,nhĂ·ng ng−ĂȘi mĂ­i lËp tr×nh b»ng ph−¬ng phžp nhĂłng tiÕn tĂ­i sĂč th”nh thÂčo Ă« cžc mĂžc cao hÂŹn, nh−ng thËt Ÿžng tiÕc, cžch lËp tr×nh n”y lÂči ngšn c¶n ÂźiÒu Ÿã . 2. Separating common parts 54
  • 55. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL MÆc dĂŻ kÜ thuËt n”y cĂŁ sö dĂŽng lÂči cžc m· code/HTML v” viÖc thay ŸÊi cĂČng dÔ d”ng hÂŹn ,nh−ng nĂŁ vÉn thĂ”a hâˆ’Ă«ng hÇu hÕt cžc nh−üc ÂźiÓm cña ph−¬ng phžp PHP nhĂłng . Cžch l”m th«ng th−ĂȘng l” bŸt ¼Çu vĂ­i cžc HTML header v” footer, chĂłng ¼−üc viÕt th”nh cžc h”m. Cžc h”m n”y cĂŁ thÓ ¼−üc gĂ€i khi cÇn ¼Õn chĂłng v” do Ÿã linh hoÂčt hÂŹn khi sö dĂŽng. SĂč thay ŸÊi cžc h”m sÏ ¼−üc ph¶n žnh trong tÊt c¶ cžc tr−ĂȘng hĂźp. Ta tžch vÝ dĂŽ PHP nhĂłng Ă« trÂȘn ra hai file . TÖp prepend.inc chĂža hai h”m :hiÓn thÞ mĂ©t HTML header v” mĂ©t HTML footer . <?php //prepend.inc function CommonHeader($title) { ?> <HTML> <HEAD> <TITLE><?php echo $title ?></TITLE> </HEAD> <BODY BGCOLOR=”black” TEXT=”white”> <H1><?php echo $title ?></H1> <?php } function CommonFooter() { ?> </TABLE> </BODY> </HTML> <?php } ?> TÖp main.php sö dĂŽng tÖp prepend.inc 55
  • 56. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL <?php include “prepend.inc”; ?> <?php CommonHeader( “power” ); ?> <TABLE> <TR> <TH>i</TH> <TH>i^i</TH> </TR> <?php for ($i= 0 ; $i< 10 ; $i++) { echo “<TR><TD>$i</TD><TD>”.pow($i,$i).” </TD></TR>n”; } ?> </TABLE> <?php CommonFooter(); ?> 3. FastTemplate Trong phÇn n”y chĂłng ta cĂŻng t×m hiÓu vÒ ph−¬ng phžp thiÕt kÕ Web trong PHP l” FastTemplate. §©y l” ph−¬ng phžp hay, nĂŁ ¼−üc gŸn kÌm vĂ­i cžc gĂŁi Ăžng dĂŽng cña PHP, nĂŁ ¼−üc x©y dĂčng trong tÖp tin cĂŁ tÂȘn class. FastTemplate.php . MĂŽc ¼Ých cña ph−¬ng phžp n”y l” giĂłp cho ch−¬ng tr×nh viÕt b»ng PHP cĂŁ nhiÒu giao diÖn khžc nhau trÂȘn cĂŻng mĂ©t cÂŹ sĂ« m·, v” l”m gi¶m khĂši l−üng c«ng viÖc do ch−¬ng tr×nh ¼−üc tžch ra l”m hai phÇn : phÇn viÕt cžc ÂźoÂčn m· (code) v” phÇn thiÕt kÕ giao diÖn cho ch−¬ng tr×nh. PhÇn viÕt cžc ÂźoÂčn m· sÏ tÝnh tožn dĂ· liÖu v” thÓ hiÖn trÂȘn cžc trang HTML th«ng qua cžc biÕn FastTemplate. PhÇn giao diÖn sÏ thiÕt kÕ giao diÖn cho ch−¬ng tr×nh b»ng ng«n ngĂ· HTML. Trong phÇn n”y chĂłng ta cĂŁ thÓ lĂ„ng v”o trang HTML cžc ng«n ngĂ· nh− Java Applet, JavaScript, ... cho trang web thÂȘm sinh Ÿéng. ViÖc thÂȘm v”o trang HTML nhĂ·ng ÂźoÂčn m· n”y kh«ng l”m ¶nh hâˆ’Ă«ng tĂ­i phÇn ÂźoÂčn m· PHP. Khi Ÿã, Ă« vÞ trÝ n”o trÂȘn trang web cÇn thÓ hiÖn cžc kÕt qu¶ tÝnh tožn tĂ” ÂźoÂčn m· th× sÏ sö dĂŽng cžc biÕn FastTemplate ¼Ó thÓ hiÖn. 56
  • 57. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL II. Ph−¬ng phžp FastTemplate 1. BiÕn FastTemplate BiÕn FastTemplate l” g× ? Cžc biÕn FastTemplate cĂŁ cÊu trĂłc nh− sau : {TEN_BIEN_FASTTEMPLATE} BiÕn ¼−üc ¼Æt trong dÊu Ÿãng mĂ« ngoÆc nhĂ€n, tÂȘn biÕn Ă« giĂ·a, tÂȘn cĂŁ thÓ l” chĂ· hoa hoÆc chĂ· th−ĂȘng. Tuy nhiÂȘn trong phÇn ÂźoÂčn m· PHP bÂčn cĂČng ph¶i viÕt giĂšng nh− vËy. 2. VÞ trÝ ¼Æt biÕn FastTemplate Cžc biÕn FastTemplatse cĂŁ thÓ ¼Æt bÊt kĂș Ÿ©u trong trang HTML. NĂŁ cĂŁ thÓ l” biÕn thÓ hiÖn th«ng tin trÂȘn cžc trang HTML khi ¼−üc browser hiÓn thÞ hoÆc cžc biÕn sÏ thÂȘm v”o cžc ÂźoÂčn m· HTML . VÝ dĂŽ : ta ¼Æt tÂȘn tÖp l” : vidu_template.tpl <HTML> <HEAD> <TITLE>{TITLE}</TITLE> </HEAD> <BODY> {CONTENT} </BODY> </HTML> Trong vÝ dĂŽ trÂȘn cĂŁ hai biÕn FastTemplate l” {TITLE} v” {CONTENT}. BiÕn {CONTENT} sÏ thÓ hiÖn th«ng tin trÂȘn trang web khi ¼−üc hiÓn thÞ, biÕn {TITLE} ¼−üc thÂȘm v”o nh− mĂ©t th”nh phÇn cña m· HTML . 3. MĂ©t vÝ dĂŽ minh hĂ€a Theo vÝ dĂŽ trÂȘn chĂłng ta Ÿ· cĂŁ tÖp “vidu_template.tpl”, b©y giĂȘ chĂłng ta Âźi x©y dĂčng ÂźoÂčn script sau : 57
  • 58. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL <?php include “class.FastTemplate.php”; # khai bžo mĂ©t ŸÚi t−üng thuĂ©c lĂ­p FastTemplate $tpl = new FastTemplate(“.”); # §Þnh nghÜa mĂ©t b¶n ŸÄ cžc tÖp FastTemplate $tpl->set_filenames(array(“body” => “vidu_template.tpl ”)); # Gžn cžc giž trÞ cho biÕn FastTemplate $tpl->assign_vars(array( “TITLE” => “Vi du”, “CONTENT” => “NĂ©i dung cña trang web” )); # Cho hiÖn trang web n”y $tpl->pparse(“body”); ?> 4. BĂšn b−íc cho mĂ©t trang web . Trong mĂ©t script cÇn thĂčc hiÖn bĂšn bĂ­c theo thĂž tĂč sau : B−íc 1 : Khai bžo mĂ©t ŸÚi t−üng thuĂ©c lĂ­p FastTemplate B−íc 2 : Gžn cžc tÖp chĂža m· HTML (tÖp n”y cĂŁ phÇn mĂ« rĂ©ng kh«ng nhÊt thiÕt l” *.htm) cho cžc phÇn tö cña m¶ng ¼−üc ¼Þnh nghÜa bĂ«i ph−¬ng thĂžc set_filenames() ( b−íc n”y ¼−üc gĂ€i l” “¼Þnh nghÜa mĂ©t b¶n ŸÄ cžc tÖp FastTemplate” ) . B−íc 3 : Gžn giž trÞ cho cžc biÕn FastTemplate trong cžc tÖp . B−íc 4 : Cho hiÖn trang web b»ng ph−¬ng thĂžc pparse(“tÂȘn_trang_web”) ChĂł Ăœ : + B−íc 2: Trong “¼Þnh nghÜa mĂ©t b¶n ŸÄ cžc tÖp FastTemplate” cĂŁ thÓ nhiÒu tÖp ¼−üc gžn . + B−íc 4: Mçi lÇn gĂ€i ph−¬ng thĂžc pparse(); chØ ¼−üc mĂ©t tÖp FastTemplate. 58
  • 59. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL + Cžc b−íc 1,2,3,4 cĂŁ thÓ lÆp lÂči nhiÒu lÇn . + ThĂž tĂč gĂ€i ph−¬ng thĂžc pparse(); l” rÊt quan trĂ€ng v× nĂŁ ¶nh hâˆ’Ă«ng ¼Õn cžch thÓ hiÖn cña trang web. 5. KhĂši FastTemplate Th«ng tin trÂȘn trang web cĂŁ thÓ ¼−üc thÓ hiÖn d−íi dÂčng b¶ng, vĂ­i sĂš h”ng kh«ng xžc ¼Þnh do Ÿã FastTemplate cĂŁ hç trĂź “khĂši FastTemplate”. KhĂši FastTemplate sÏ lÆp Âźi lÆp lÂči mĂ©t ÂźoÂčn HTML n”o Ÿã khi ¼−üc Ÿžnh dÊu khĂši. XÐt vÝ dĂŽ sau : H·y thĂčc hiÖn phÐp tÝnh 2a vĂ­i a = 1, ..., n. KÕt qu¶ ¼−üc thÓ hiÖn bĂ«i mĂ©t b¶ng gĂ„m hai cĂ©t, cĂ©t giž trÞ cña a v” cĂ©t kÕt qu¶ cña phÐp tÝnh 2a. ChĂłng ta tÂčo tÖp “tinh_2_mu.htm” <html> <head> <title>Tinh 2 mu a</title> </head> <body> <table border="1" width="100%"> <tr> <td width="50%"> <p align="center">Gia tri a</td> <td width="50%"> <p align="center">Tinh 2ÂȘ</td> </tr> <!-- BEGIN block --> <tr> <td width="50%"> <p align="center">{block.GIATRI}</td> <td width="50%"> <p align="center">{block.KETQUA}</td> 59
  • 60. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL </tr> <!-- END block --> </table> </body> </html> Ta thÊy tÖp n”y tÂčo mĂ©t b¶ng hai h”ng hai cĂ©t, h”ng trÂȘn l” tiÂȘu ¼Ò cña cžc cĂ©t, h”ng d−íi cĂ©t thĂž nhÊt l” giž trÞ cña a v” cĂ©t thĂž hai l” kÕt qu¶ cña phÐp tÝnh 2a. H”ng d−íi ¼−üc bŸt ¼Çu bĂ«i khož <!-- BEGIN block --> v” kÕt thĂłc bĂ«i khož <!-- END block-->. Hai khož n”y cho biÕt phÇn bÂȘn trong sÏ bÞ lÆp (block Ă« Ÿ©y l” tÂȘn khož), cžc biÕn FastTemplate bÂȘn trong cĂŁ dÂčng {tenkhoa.TEN_BEN}. §oÂčn PHP Script sÏ nh− sau : <?php include "class.FastTemplate.php"; $tpl = new FastTemplate("."); $tpl->set_filenames(array( 'tinh_2_mu_a' => 'tinh_2_mu.htm' )); $n = 10; for ($i = 1 ; $i <= $n ; $i++) $tpl->assign_block_vars("block",array( 'GIATRI' => $i, 'KETQUA' => pow(2, $i) )); $tpl->pparse("tinh_2_mu_a"); ?> KÕt qu¶ khi chÂčy ch−¬ng tr×nh nh− h×nh vÏ. 60
  • 61. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL PhÇn II : HÖ C„ SĂ« DĂ· LIÖU MYSQL Ch−¬ng I. GiĂ­i thiÖu Ng«n ngĂ· MySQL I. GiĂ­i thiÖu chung MySQL rÊt phĂžc tÂčp, nh−ng giao diÖn SQL trĂčc gižc v” dÓ hĂ€c. Trong ch−¬ng n”y chĂłng ta m« t¶ khži qužt vÒ cžc lÖnh, cžc kiÓu dĂ· liÖu v” cžc h”m m” chĂłng ta cÇn biÕn ¼Ó sö dĂŽng Mysql mĂ©t cžch cĂŁ hiÖu qu¶ v” cĂŁ hiÖu suÊt cao. Ch−¬ng n”y cung cÊp tÊt c¶ cžc h”m tham kh¶o trong Mysql. §Ó sö dĂŽng ch−¬ng n”y cĂŁ hiÖu qu¶ bÂčn cĂŁ thÓ t×m ¼Õn h”ng loÂčt cžc b¶ng Ÿ· ¼−üc liÖt kÂȘ. Cžc −u ÂźiÓm cña MySQL: ‱ MySQL l” mĂ©t hÖ qu¶n trÞ nhĂĄ, b¶o mËt, v” rÊt dÔ sö dĂŽng, th−ĂȘng ¼−üc sö dĂŽng cho cžc Ăžng dĂŽng nhĂĄ v” trung b×nh. NĂŁ ¼−üc sö dĂŽng cho cžc Ăžng dĂŽng client / server vĂ­i mžy chñ mÂčnh nh− UNIX, Windows NT v” Windows 95/98, v” ¼Æc biÖt trÂȘn mžy chñ UNIX . ‱ MySQL hç trĂź cžc ÂźiÓm v”o l” ANSI SQL92 v” ODBC mĂžc 0-2 SQL chuÈn. ‱ MySQL hç trĂź nhiÒu ng«n ngĂ· cho viÖc th«ng bžo lçi nh− : Czec, Dutc, English, Estonian, French, German, Hungarian, Italian, Norwegian Nynorsk, Polish, Portuguese, Spanish and Swedish. Ng«n ngĂ· ¼−üc hç trĂź mÆc ¼Þnh cho dĂ· liÖu l” ISO-8859-1 (Latin1), muĂšn thay ŸÊi ph¶i söa trong m· nguĂ„n . ‱ Ng«n ngĂ· lËp tr×nh sö dĂŽng viÕt cžc h”m API ¼Ó th©m nhËp cÂŹ sĂ« dĂ· liÖu MySQL cĂŁ thÓ l” C, Perl, PHP.. . ‱ Cžc b¶ng (table) trong cÂŹ sĂ« dĂ· liÖu MySQL cĂŁ kÝch th−íc rÊt lĂ­n v” ¼−üc l−u Ă« th− mĂŽc Datas. KÝch th−íc lĂ­n nhÊt cña mĂ©t b¶ng tĂši thiÓu l” 4GB v” nĂŁ cßn phĂŽ thuĂ©c v” kÝch th−íc lĂ­n nhÊt cña mĂ©t file do hÖ ÂźiÒu h”nh quy ¼Þnh . 61