Tungvn40@yahoo.com
Tungvn40@yahoo.com
Php Tutorial
1. Php là gì?
PHP là mt ngôn ng lp trình kiu script , chy trên Server và tr v mã HTML cho trình duyt.
VD:
<html>
<head>
<title>Example</title>
</head>
<body>
<?php echo "Hi, I'm a PHP script!"; ?>
</body>
</html>
Mã PHP đc đt trong kiu tag đc bit cho phép ta có th vào hoc ra khi ch đ PHP
2. Cài đt nh th nào?
Cài PHP trên nn Window vi IIS version 3 hoc 4:
- Copy php.ini - dist vào th mc Window. i tên thành php.ini
- Sa file php.ini nh sau:
- t li đng dn mc : 'extension_dir' chuyn ti v trí cài đt php hoc ni đ các file
php_*.ini. VD : c:\php
- t đng dn chính xác đn file: browscap.ini trong th mc Window.
- Chy MMC , chn Web site hoc th mc ca ng dng
- m mc Property ca th mc , chn vào Home Directory, Virtual Directory hay Directory.
- Vào mc: Configuration->App Mappings ->Add->Executable : c:\php\php.exe %s %s. Chú ý
phi có %s %s .
- Trong ô Extension, đánh đuôi file bn mun gn vi mã php. Thng là .php hoc .phtml
- t ch đ sercurity thích hp. Nu dùng h thng NTFS, cn đt cho phép thc hin vi th
mc có php.exe
II.Ngôn ng PHP:
1. Có 4 cách đ dùng PHP;
1. <? echo ("this is the simplest, an SGML processing instruction\n"); ?>
2. <?php echo("if you want to serve XML documents, do like this\n"); ?>
3. <script language="php">
echo ("some editors (like FrontPage) don't
like processing instructions");
</script>
4. <% echo ("You may optionally use ASP-style tags"); %>
<%= $variable; # This is a shortcut for "<%echo " %>
Cách 1 ch có th s dng nu nhng tag ngn đc cho phép s dng. Có th sa
short_open_tag trong cu hình ca php hoc biên dch file php vi la chn cho phép dùng các
tag ngn.
Tng t nh vy, cách th 4 ch có tác dng nu asp_tag đc đt trong file cáu hình ca PHP
PHP cho phép h tr các kiu chú thích ca c C, C++ và Unix shell.
VD:
<?php
CM Soft 70 NCT F2 Q10
PDF processed with CutePDF evaluation edition www.CutePDF.com
CM Soft 70 NCT F2 Q10
PDF processed with CutePDF evaluation edition www.CutePDF.comPDF processed with CutePDF evaluation edition www.CutePDF.com
Tungvn40@yahoo.com
Tungvn40@yahoo.com
echo "This is a test"; // This is a one-line c++ style comment
/* This is a multi line comment
yet another line of comment */
echo "Another Test"; # This is shell-style style comment
?>
2. Các kiu d liu:
2.1S nguyên : c khai báo và s dng giá tr giing vi C:
VD: $a = 1234; # decimal number
$a = -123; # a negative number
$a = 0123; # octal number (equivalent to 83 decimal)
$a = 0x12; # hexadecimal number (equivalent to 18 decimal)
2.2 S thc:
VD :$a = 1.234; $a = 1.2e3;
Chú ý: Khi s dng các s thc đ tính toán , có th s làm mt giá tr ca nó. Vì vy, nên s
dng các hàm toán hc trong th vin chun đ tính toán.
2.3 Xâu :
Có 2 cách đ xác đnh 1 xâu: t gia 2 du ngoc kép (") hoc gia 2 du ngoc đn (').
Chú ý: Các bin giá tr s không đc khai trin trong xâu gia 2 du ngoc đn.
2.4 : Mng :
Mng thc cht là gm 2 bng : bng ch s và bng liên kt.
a. Mng 1 chiu : Có th dùng hàm : list() hoc array() hoc lit kê các giá tr ca tng phn i
trong mng đ to mng . Có th thêm các giá tr vào mng đ to thành 1 mng. > Dùng ging
trong C
Có th dùng các hàm asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort(), and uksort() đ sp
xp mng. Tu thuc vào vic bn đnh sp xp theo kiu gì.
b. Mng nhiu chiu: Tng t C. bn có th dùng nh VD sau:
$a[1] = $f; # one dimensional examples
$a["foo"] = $f;
$a[1][0] = $f; # two dimensional
$a["foo"][2] = $f; # (you can mix numeric and associative indices)
$a[3]["bar"] = $f; # (you can mix numeric and associative indices)
PHP3 không th tham chiu tr tip t mt mng nhiu chièu khi bên trong 1 xâu:
VD :
$a[3]['bar'] = 'Bob';
echo "This won't work: $a[3][bar]";
Kt qu tr ra s là: This won't work: Array[bar].
Nhng vi VD sau s chy đúng:
$a[3]['bar'] = 'Bob';
echo "This will work: " . $a[3][bar];
Vi PHP4, vn đ s đc gi quyt bng cách cho mng vào gia 2 du ngoc móc { }
VD : $a[3]['bar'] = 'Bob';
echo "This will work: {$a[3][bar]}";
PHP không yêu cu phi khai báo trc kiu d liu cho các bin, Kiu d liu ca bin s ph
thuc vào kiu d liu mà bn gán cho nó,
VD :
$foo = "0"; // $foo là kí t ASCII 48
$foo++; // $foo is xâu "1" (ASCII 49)
$foo += 1; // $foo là s nguyên (2)
$foo = $foo + 1.3; // $foo là s thc (3.3)
$foo = 5 + "10 Little Piggies"; // $foo là s nguyên (15)
3. Bin - giá tr:
PHP quy đnh mt bin đc biu din bt đu bng du $, sau đó là mt ch cái hoc du gch
di.
CM Soft 70 NCT F2 Q10
CM Soft 70 NCT F2 Q10
Tungvn40@yahoo.com
Tungvn40@yahoo.com
3.1 Mt s bin đã đc to sn :
argv : Mng tham s truyn cho script. Khi đon script chy bng dòng lnh, tham s này s
đc dùng ging nh C đ truy nhp các tham s trên dòng lnh.
argc : s các tham s đoc truyn. Dùgn vi argv;
PHP_SELF : tên ca đon mã script đang thc hin. Nu PHP đang đc chy t dòng lnh thì
tham s này không có giá trj.
HTTP_COOKIE_VARS: mt mng các giá tr đc truyn ti script hin ti bng HTTP cookie.
Ch có tác dng nu "track_vars" trong cu hình đc đt hoc ch dn <?php_track_vars?>
HTTP_GET_VARS: Mng các giá tr truyn ti script thông qua phng thc HTTP GET. Ch có
tác dng nu "track_vars" trong cu hình đc đt hoc ch dn <?php_track_vars?>
HTTP_POST_VARS:
3.2 Phm vi giá tr:
PHP coi 1 bin có mt gii hn. xác đnh mt bin toàn cc (global) có tác dng trong mt
hàm , ta cn khai báo li. Nu không giá tr ca bin s đc coi nh là cc b trong hàm.
VD :
$a = 1;
$b = 2;
Function Sum () {
global $a, $b;
$b = $a + $b;
}
Sum ();
echo $b;
Khi có khai báo global trên, $a và $b đc cho bit đó là nhng bin toàn cc. Nu không có
khai báo global, $a và $b ch đc coi là các bin bên trong hàm Sum(). iu này khác vi C
Mt cách khác đ dùng bin toàn cc trong 1 hàm là ta dung mng $GLOBAL ca PHP
VD trên s có th vit nh sau:
$a = 1;
$b = 2;
Function Sum () {
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
Sum ();
echo $b;
Mt chú ý khác là khai báo static. Vi khai báo này bên trong mt hàm vi 1 bin cc b, giá tr
ca bin cc b đó s không b mt đi khi ra khi hàm.
VD :
Function Test () {
static $a = 0;
echo $a;
$a++;
}
Vi khai báo nh trên , $a s không mt đi giá tr sau khi thc hin li gi hàm Test() mà $a s
CM Soft 70 NCT F2 Q10
CM Soft 70 NCT F2 Q10
Tungvn40@yahoo.com
Tungvn40@yahoo.com
đc tng lên 1 sau mi ln gi hàm Test().
3.3 Tên bin:
Mt bin có th gn vi 1 cái tên .
VD:
$a = "hello";
$$a = "world";
==> $hello = "world"
và
echo "$a ${$a}";
<==> echo "$a $hello";
Kt qu ra s là : hello world
Chú ý : bn có th gp phi trng hp không rõ ràng khi s dng cách này vi mng . VD :
$$a[1] s hiu là bn mun dùng $a[1] nh 1 bin hay dùng $$a nh 1 bin vi [1] là ch s?
tránh trng hp này , cn có su phân bit rõ bng du { }. VD :${$a[1]} hoc ${$a}[1].
3.4 Các giá tr bên ngoài phm vi PHP
HTML Form : khi 1 form gn vi 1 file php qua phng thc POST
VD:
<form action="foo.php3" method="post">
Name: <input type="text" name="name"><br>
<input type="submit">
</form>
PHP s to 1 bin $name bao gm mi giá tr trong trung Name ca Form.
PHP có th hiu đc mt mng mt chiu gm các giá tr trong 1 form. Vì vy, bn có th nhóm
nhng giá tr liên quan li vi nhau hoc s dng đc tính này đ nhn các giá tr t 1 đu vào
tu chn.(multi select input)
Khi tính cht track_vars đc đt trong cu hình hoc có ch dn <?php_track_vars?> . các giá
tr đc submit đc ly ra qua phng thc GET và POST có th ly t 2 mng toàn cc
$HTTP_POST_VARS và $HTTP_GET_VARS
IMAGE SUBMIT:
Khi dùng 1 image đ thc hin submit, có th dùng tag nh sau:
<input type=image ="sub">
Khi ngi dùng click chut trên nh, form tng ng s đc gi ti server kèm theo 2 giá tr
thêm vào : sub_x và sub_y. Nhng bin này s lu gi to đ mà ngi dùng đã click chut trên
nh. Ngi lp trình có kinh nghim s thy rng trên thc t, trình duyt gi các giá tr có chu k
thi gian nhng PHP đã to cm giãc gn nh vic gi các giá tr đó là liên tc.
HTTP Cookies :
PHP h tr HTTP cookies theo đnh dng ca Netscape. Cookies file lu gi thông tin ca các
trình duyt t xa và qua đó có th theo dõi hay nhn bit ngi s dng. Có th dùng Cookies
bng hàm SetCookie(). Hàm này cn đc gi trc khi thông tin đc gi ti trình duyt. Bt
k cookie nào gi ti bn t máy khách (client) s t đng chuyn thành d liu ca phng
thc GET và POST.
Nu bn mun có nhiu giá tr trong 1 cookie, ch cn thêm vào du [ ] vi tên ca cookie.
VD :
SetCookie ("MyCookie[]", "Testing", time()+3600);
Chú ý rng cookie s thay th cho cookie cùng tên, tr trg hp khác đng dn hoc min.
BIN MÔI TRNG:
CM Soft 70 NCT F2 Q10
CM Soft 70 NCT F2 Q10
Tungvn40@yahoo.com
Tungvn40@yahoo.com
PHP t đng to bin cho các bin môi trng nh 1 bin bình thng ca PHP
VD :
echo $HOME; /* Shows the HOME environment variable, if set. */
Vì thông tin ti qua các phng thc GET, POST , Cookie cng t đông to các bin PHP, thnh
thong bn nên đc 1 bin t môi trng đ chc chn rng bn có đúng version. Hàm getenv()
và putenv() giúp bn đc và ghi vi các bin môi trng.
DU CHM TRONG TÊN BIN:
Bình thng, PHP không thay đi tên bin khi bin đó đc truyn vào đon script. Tuy nhiên,
nên chú ý rng dáu chm (.) không phi là mt ký hiu hp l trong tên bin đi vi PHP. Vì vy,
PHP s t đng thay th các du chm bng du gch di.(_)
4. CONSTANTS
PHP đnh ngha sn mt vài hng s:
_FILE_ : tên ca script file đang đc thc hin.
_LINE_ : s dòng ca mã script đang đc thc hin trong script file hin ti.
_PHP_VERSION_ : version ca PHP
_PHP_Ó : tên h điu hành mà PHP đang chy
TRUE
FALSE
E_ERROR : báo hiu có li
E_PARSE : báo li sai khi biên dch
E_NOTICE : Mt vài s kin có th là li hoc không.
E_ALL :
Có th đnh ngha mt hng s bng hàm define()
VD :
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
?>
5. BIU THC
Biu thc là mt phn quan trng trong PHP. Phn ln mi th ban vit đu đc coi nh 1 biu
thc. iu này có ngha là mi th đu có 1 giá tr.
Mt dng c bn nht ca biu thc bao gmcác bin và hng s.
PHP h tr 3 kiu giá tr c bn nht: s nguyên, s thc, và xâu. Ngoài ra còn có mng và đi
tng. Mi kiu giá tr này có th gán cho các bin hay làm giá tr tr ra ca các hàm.
Bn có th thao tác vi các bin trong PHP ging nh vi trong C.
VD
$b = $a = 5; /* assign the value five into the variable $a and $b */
$c = $a++; /* post-increment, assign original value of $a
(5) to $c */
$e = $d = ++$b; /* pre-increment, assign the incremented value of
$b (6) to $d and $e */
/* at this point, both $d and $e are equal to 6 */
$f = double($d++); /* assign twice the value of $d before
the increment, 2*6 = 12 to $f */
$g = double(++$e); /* assign twice the value of $e after
the increment, 2*7 = 14 to $g */
$h = $g += 10; /* first, $g is incremented by 10 and ends with the
value of 24. the value of the assignment (24) is
then assigned into $h, and $h ends with the value
CM Soft 70 NCT F2 Q10
CM Soft 70 NCT F2 Q10
Tungvn40@yahoo.com
Tungvn40@yahoo.com
of 24 as well. */
6.CÁC CU TRÚC LNH:
6.1 If else else if:
if (điu kin) { do something; }
elseif ( điu kin ) { do something;}
else { do something;}
6.2 Vòng lp :
while ( DK) { }
do { } white ( DK );
for (bieuthuc1; bieuthuc2; bieu thuc3) { }
PHP 4 only :
foreach(array_expression as $value) statement
foreach(array_expression as $key => $value) statement
6.3 break và continue:
break : thoát ra khi vòng lp hin thi
continue : b qua vòng lp hin ti, tip tc vòng tip theo.
6.4 switch
switch (tên bin) {
case trng hp 1: break;
case trng hp 2: break;
case trng hp 3: break;
default :
}
7 HÀM:
Dùng ging vi C++. Ngoi tr bn không cn phi khai báo kiu cho tham s ca hàm:
7.1 Tham tr :
VD:
function takes_array($input) {
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
7.2 Tham bin:
function add_some_extra(&$string) {
$string .= 'and something extra.';
}
7.3 Tham s có giá tr mc đnh:
function makecoffee ($type = "cappucino") {
return "Making a cup of $type.\n";
}
Chú ý : khi s dng hàm có đi s có giá tr mc đnh, các bin này s phi nm v phía phi
nhát trong danh sách đi s.
VD : Sai
function makeyogurt ($type = "acidophilus", $flavour) {
return "Making a bowl of $type $flavour.\n";
}
úng ;
function makeyogurt ($flavour, $type = "acidophilus") {
return "Making a bowl of $type $flavour.\n";
}
7.4 Giá tr tr li ca hàm:
CM Soft 70 NCT F2 Q10
CM Soft 70 NCT F2 Q10
Tungvn40@yahoo.com
Tungvn40@yahoo.com
Có th là bt k giá tr nào, Tuy vây, không th tr li nhiu giá tr riêng l nhng có th tr li mt
mng các giá tr.
VD
function small_numbers() {
return array (0, 1, 2);
}
tr li mt tham tr, bn cn có du & c khai báo ca hàm cng nh giá tr tr li.
VD :
function &returns_reference() {
return &$someref;
}
$newref = &returns_reference();
7.5 Hàm bin:
PHP cho phép s dng hàm giá tr Ngha là khi mt bin đc goi có kèm theo du ngoc đn ,
PHP s tìm hàm có cùng tên vi giá tr bin đó và thc hin
VD
<?php
function foo() {
echo "In foo()<br>\n";
}
function bar( $arg = '' ) {
echo "In bar(); argument was '$arg'.<br>\n";
}
$func = 'foo';
$func();
$func = 'bar';
$func( 'test' );
?>
8. CÁC TOÁN T:
PHP có các toán t cho các phép s hc : + - * / %
Các toán t logic : and or xor ! && ||
Toán t thao tác vi bit : & | ^ ~ << >>
Toán t so sánh : ==, != ,< ,> ,<=, >=, ==== (bng va cùng kiu - PHP4 only), !== (khác hoc
khác kiu - PHP4 only)
Toán t điu khin li : @ - khi đng trc 1 biu thc thì các li ca biu thc s b b qua và
lu trong $php_errormsg
VD:
<?php
/* Intentional SQL error (extra quote): */
$res = @mysql_query ("select name, code from 'namelist") or
die ("Query failed: error was '$php_errormsg'");
?>
Toán t thc thi : ` `- PHP s thc hin ni dung nm gia 2 du ` nh 1 lnh shell. Tr ra giá tr
là kt qu thc hin lnh
VD :
$output = `ls -al`; //lit kê các file bng lnh Linux
echo "<pre>$output</pre>";
9 LP VÀ I TNG:
CM Soft 70 NCT F2 Q10
CM Soft 70 NCT F2 Q10
Tungvn40@yahoo.com
Tungvn40@yahoo.com
Class: là tp hp các bin và hàm làm vic vi các bin này. Mt lp có đnh dng nh sau:
<?php
class Cart {
var $items; // Items in our shopping cart
// Add $num articles of $artnr to the cart
function add_item ($artnr, $num) {
$this->items[$artnr] += $num;
}
// Take $num articles of $artnr out of the cart
function remove_item ($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
?>
Lp Cart đây là mt kiu d liu, vì vy bn có th to mt bin có kiu này vi toán t new
VD:
$cart = new Cart;
$cart->add_item("10", 1);
Lp có th đc m rng bng nhng lp khác. Lp mi thu đc có tt c nhng bin và hàm
ca cá lp thành phn. Thc hin vic tha k này bng t khoá "extends". Chú ý : k tha
nhiu lp 1 lúc không đc chp nhn.
VD :
class Named_Cart extends Cart {
var $owner;
function set_owner ($name) {
$this->owner = $name;
}
}
Các hàm khi to ca lp đc gi t đng khi bn gi toán t new.
Tuy nhiên, các hàmkhi to ca lp cha s không đc gi khi hàm khi to ca lp con đc
gi. Hàm khi to có th có đi s hoc không,
10. THAM CHIU:
Tham chiu trong PHP có ngha là ly cùng 1 giá tr bng nhiu tên bin khác nhau. Khác vi con
tr trong C, tham chiu là mt bng các bí danh. Chú ý : trong PHP, tên bin và nôi dung ca
bin là khác nhau. Vì vy, cùng 1 ni dugn có th có nhiu tên khác nhau.
Tham chiu PHP cho phép bn to 2 bin có cùng nôi dung.
VD :
$a = & $b; > $a, $b tr ti cùng 1 giá tr.
Tham chiu truen giá tr bng tham chiu. Thc hin vic này bng cách to mt hàm cc b
và truyn giá tr đc tham chiu
VD:
function foo (&$var) {
$var++;
CM Soft 70 NCT F2 Q10
CM Soft 70 NCT F2 Q10
Tungvn40@yahoo.com
Tungvn40@yahoo.com
}
$a=5;
foo ($a);
> Kt qu : $a = 6;
Giá tr tr li ca mt hàm bng tham chiu rt tin khi bn mun s dng hàm đ tìm 1 giá tr
trong 1 phm vi nào đó.
VD :
function &find_var ($param) {
code
return $found_var;
}
$foo =& find_var ($bar);
Khi bn mun loi b mi liên kt gia tên bin và giá tr ca bin, s dng hàm unset()
VD :
$a = 1;
$b =& $a;
unset ($a);
11. THAO TÁC VI NH:
PHP không b gii hn vi mã HTML đc tr li cho trình duyt. Vì vy, có th dùng PHP đ to
và thao tác vi các file nh có đnh dng khác nhau, bao gm :gif, png, jpg, wbmp, and xpm. PHP
có th đa các file nh trc tip đn các trình duyt. Bn s cn biên dch PHP vi th vin GD
bao gm các hàm thao tác vi nh. GD và PHP có th s cn có thêm 1 s th vin khác, tu
thuc vào đnh dng ca file nh cn dùng.
VD : To nh GIF vi PHP
<?php
Header("Content-type: image/gif");
$string=implode($argv," ");
$im = imagecreatefromgif("images/button1.gif");
$orange = ImageColorAllocate($im, 220, 210, 60);
$px = (imagesx($im)-7.5*strlen($string))/2;
ImageString($im,3,$px,9,$string,$orange);
ImageGif($im);
ImageDestroy($im);
?>
gi s VD trên trong file button.php . KHi đó, đ s dng ta dùng tag : <img
12. PHP và MySQL:
connect ti 1 CSDL trên MySQL server rt đn gin. Bn ch cn dùng hàm
mysql_connect(host, user, password) đ m 1 kt ni ti MYSQL server vi kt qu là giá tr tr
v ca hàm (Gi s là bin $db).
Sau đó, dùng hàm mysql_select_db(database_name, link_id) đ chn CSDL bn mun kt ni.
thc hin mt câu lnh truy vn, dùng hàm mysql_query(query, link_ID). Giá tr tr li ca
hàm là kt qu ca câu truy vn. Nu b qua link_ID thì kt ni cui cùng ti MySQL server s
đc thc hin.
Bn có th xem ví d sau s hiu rõ hn.
<html>
<body>
<?php
$db = mysql_connect("localhost", "root");
CM Soft 70 NCT F2 Q10
CM Soft 70 NCT F2 Q10
Tungvn40@yahoo.com
Tungvn40@yahoo.com
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM employees",$db);
printf("First Name: %s<br>\n", mysql_result($result,0,"first"));
printf("Last Name: %s<br>\n", mysql_result($result,0,"last"));
printf("Address: %s<br>\n", mysql_result($result,0,"address"));
printf("Position: %s<br>\n", mysql_result($result,0,"position"));
?>
</body>
</html>
Ngoài cách dùng hàm mysql_result() đ ly kt qu thc hin , bn có th dùng các hàm khác :
mysql_fetch_row(), mysql_fetch_array(), and mysql_fetch_object().
* mysql_fetch_row($result) : tr v mt mng các d liu ly t 1 dòng trong CSDL. Nu đã
cui CSDL, giá tr tr v là false. Bn phi dùng ch s ca các trng trong CSDL nu mun ly
d liu,
VD :
<html>
<body>
<?php
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM employees",$db);
echo "<table border=1>\n";
echo "<tr><td>Name</td><td>Position</tr>\n";
while ($myrow = mysql_fetch_row($result)) {
printf("<tr><td>%s %s</td><td>%s</td></tr>\n", $myrow[1], $myrow[2], $myrow[3]);
}
echo "</table>\n";
?>
</body>
</html>
* mysql_fetch_array (int result [, int result_type]) : tr v mt mng cha d liu ly t 1 dòng
trong CSDL. Tng t nh mysql_fetch_row() nhng bn có th ly trc tip tên trng đ ly
d liu.
VD : Cùng mt CSDL nh trên, bn có th thy s khác bit
<html>
<body>
<?php
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM employees",$db);
if ($myrow = mysql_fetch_array($result)) {
do {
printf("<a href=\"%s?id=%s\">%s %s</a><br>\n", $PHP_SELF, $myrow["id"], $myrow["first"],
$myrow["last"]);
} while ($myrow = mysql_fetch_array($result));
CM Soft 70 NCT F2 Q10
CM Soft 70 NCT F2 Q10
Không có nhận xét nào:
Đăng nhận xét