Beruflich Dokumente
Kultur Dokumente
WWW.HUUKHANG.COM
PHP viet tat cua ch Personal Home Page ra i nam 1994 do phat minh cua
Rasmus Lerdorf, va no tiep tuc c phat trien bi nhieu ca nhan va tap the khac, do o
PHP c xem nh mot san pham cua ma nguon m.
PHP la kch ban trnh chu (server script) chay tren pha server (server side) nh
cach server script khac (asp, jsp, cold fusion).
PHP la kch ban cho phep chung ta xay dng ng dung web tren mang internet hay
intranet tng tac vi moi c s d lieu nh mySQL, PostgreSQL, Oracle, SQL Server va
Access.
Lu y rang, t phien ban 4.0 tr ve sau mi ho tr session, ngoai ra PHP cung nh
Perl la kch bang x ly chuoi rat manh chnh v vay ban co the s dung PHP trong nhng
co yeu cau ve x ly chuoi.
2. CAI AT PHP
Cai at PHP tren nen Windows th s dung php-4.0.6-Win32.zip, sau khi cai at
ng dung nay tren a cng se xuat hien th muc PHP, trong th muc nay se co tap tin
php4ts.dll va php.exe cung vi th muc sessiondata.
Ngoai ra, trong th muc WINDOW hoac WINNT se xuat hien tap tin php.ini, tap
tin nay cho phep ban cau hnh cho ng dung PHP. Chang han, khi s dung session, PHP
can mot ni e lu tr chung, trong tap tin nay mac nh la session.save_path =
C:\PHP\sessiondata, neu ban cai at PHP vi th muc PHP tren a D th ban can thay
oi ng dan trong khai bao nay.
Tng t nh vay, khi co loi trong trangPHP th loi thng xuat hien khi trieu goi
chung, e che dau cac loi nay th ban can khai bao display_errors = Off thay v chung
trang thai display_errors = On.
Ngoai ra, trang PHP cung co the trnh bay mot so warning khi chung phat hien cu
phap khong hp ly, chnh v vay e che dau cac warning nay th ban cung can khai bao
trang thai Off thay v On nh assert.warning = Off.
Sau khi cai at he ieu hanh Windows NT hay 2000 tr ve sau, bang cach khai bao
mi mot web site hay virtual site trong mot site ang co theo cac bc nh sau:
1. Tao mot th muc co ten myPHP e lu tr cac tap tin PHP
2. Khi ong IIS (t ong khi ong neu Windows NT/2000)
3.
4.
5.
6.
WWW.HUUKHANG.COM
WWW.HUUKHANG.COM
8. Chon Next, ban chon th muc cua ng dung, oi vi trng hp nay chung ta
chon vao th muc myPHP, chang han trong trng hp nay chung ta chon ht
muc myPHP nh hnh 1-3.
WWW.HUUKHANG.COM
WWW.HUUKHANG.COM
WWW.HUUKHANG.COM
C:\Program Files\Apache
5. Chon Start | Programs | Apache HTTP Server | Control Apache Server | Start
6. Viet trang test.php voi noi dung
7. Chep
tap
tin
test.php
Group\Apache\htdocs\
<?echo "hello";?>
vao
thu
muc
C:\Program
Files\Apache
WWW.HUUKHANG.COM
Request
Parse
Request
Response
Response
PHP
Engine
Chang han ban khai bao trang hello.php vi noi dung nh v du 1-1 sau:
V du 1-1: Trang hello.php
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
Greeting: <?="Hello PHP"?>
</BODY>
</HTML>
Ket qua tra ve nh hnh 1-10 khi trieu goi trang nay tren trnh duyet.
WWW.HUUKHANG.COM
Ket qua tra ve nh hnh 1-11 khi trieu goi trang nay tren trnh duyet.
WWW.HUUKHANG.COM
Lu y rang, neu ban muon s dung script hay scriptlet nh ASP th ban khai bao
trong tap tin php.ini nh sau:
asp_tags = On
; Allow ASP-style <% %> tags. mac nh la Off
$sotrang=$pagenumber;
$record=$rownumber;
$totalRows = 0;
$paging="";
%>
Trong trng hp co nhieu dong can ghi chu ban s dung cap dau /* va */, v du
khai bao ghi chu nh sau:
Giao vien: Pham Hu Khang
WWW.HUUKHANG.COM
/*
Khai bao bien e oc d lieu
trong o totalRows la bien tra
ve tong so mau tin
*/
$result = mysql_query($stSQL, $link);
$totalRows=mysql_num_rows($result);
Ngoai ra, ban cung co the s dung dau # e khai bao ghi chu cho tng dong, v du
khai bao sau la ghi chu:
<?php
# Khai bao bien e paging
$sotrang=$pagenumber;
$record=$rownumber;
$totalRows = 0;
$paging="";
?>
Tuy nhien, e s dung cu phap cua PHP khi in ra gia tr t bien, bieu thc, ham,
gia tr cu the th s dung khai bao echo nh sau:
<?php
?>
Ket qua tra ve nh hnh 1-12 khi trieu goi trang nay tren trnh duyet.
WWW.HUUKHANG.COM
5. KET LUAN
Trong bai nay, chung ta tap trung tm hieu cach cai at PHP va Apache Web
Server, sau o cau hnh ng dung PHP trong IIS hay s dung cau hnh mac nh cua
chung.
Ngoai ra, ban lam quen cach khai bao ma PHP trong trang .php cung vi script hay
scriptlet.
WWW.HUUKHANG.COM
Cau lenh.
Kieu d lieu va bien
Khai bao va s dung hang.
D lieu mang
Chuyen oi kieu d lieu
Cu phap PHP chnh la cu phap trong ngon ng C, cac ban lam quen vi ngon ng C
th co li the trong lap trnh PHP.
e lap trnh bang ngon ng PHP can chu y nhng iem sau:
Cuoi cau lenh co dau ;
Bien trong PHP co tien to la $
Moi phng thc eu bat au { va ong bang dau }
Khi khai bao bien th khong co kieu d lieu
Nen co gia tr khi au cho bien khai bao
Phai co chi chu (comment) cho moi feature mi
S dung dau // hoac # e giai thch cho moi cau ghi chu
S dung /* va */ cho moi oan ghi chu
Khai bao bien co phan biet ch hoa hay thng
WWW.HUUKHANG.COM
<BODY>
<h4>Variable</h4>
<?php
$sotrang=10;
$record=5;
$check = true;
$strSQL="select * from tblCustomers";
$myarr = array("first", "last", "company");
$myarrs[2];
$myarrs[0]="Number 0";
$myarrs[1]="Number 1";
$myarrs[2]="Number 2";
echo $myarr[1];echo "<br>";
echo $myarrs[2];
?>
</BODY>
</HTML>
3. KIEU D LIEU
Bang cac kieu d lieu thong thng
Boolean
Integer
Float
~1.8e308 gom 14 so le
String
Object
Kieu oi tng
Array
WWW.HUUKHANG.COM
Lu y rang, PHP t ong nhan biet gia tr chuoi ang sau so se khong c chuyen
sang kieu d lieu so nh trng hp tren.
Ngoai ra, ban co the s dung ham settype e chuyen oi d lieu nay sag d lieu khac,
v du chung ta khai bao nh v du 2-3 (settype.php).
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Change DataType of Variable</h4>
<?php
$var="12-ABC";
$check=true;
echo $var;
echo "<br>";
echo $check;
echo "<br>";
settype($var,"integer");
echo $var;
echo "<br>";
settype($check,"string");
echo $check;
?>
</BODY>
</HTML>
WWW.HUUKHANG.COM
</HTML>
WWW.HUUKHANG.COM
echo $myarr[2];
echo "<br>";
$myarrs=array("first", "last", "company");
echo $myarrs[2];
?>
</BODY>
</HTML>
Neu nh ban khai bao mang hai chieu, th cu phap khai bao nh sau:
$myarrs[][]=array(2,3);
WWW.HUUKHANG.COM
{
echo "I am a regular function named B in class A.<br />\n";
echo "I am not a constructor in A.<br />\n";
}
}
// Goi phng thc clsA() nh constructor.
$b = new clsA();
echo "<br>";
// Goi phng thc B().
$b->B();
?>
</BODY>
</HTML>
Ngoai ra, e s dung bien toan cuc trong ham, ban s dung t khoa global, khi o bien
toan cuc se co hieu lc ben trong ham. V du khai bao bien $a ben ngoai ham, sau o
ben trong ham Test ban s dung t khoa global cho bien $a, khi o bien $a se c s
dung va gia tr o co hieu lc sau khi ra khoi ham ch khong gong nh trng hp
trong v du scope.php nh v du 2-10 (global.php).
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
WWW.HUUKHANG.COM
</HEAD>
<BODY>
<h4>Scope of Variable</h4>
<?php
$a = 100;
/* global scope */
function Test()
{
global $a;
$i=10;
$a+=10;
echo "<br>a:=$a";
echo "<br>i:=$i";
/* reference to local scope variable */
}
Test();
echo "<br>a:=$a";
$i=1000;
echo "<br>i:=$i";
?>
</BODY>
</HTML>
4.2.
Khi s dung hang, ma hang cha ton tai th ban s dung ham defined nh v du 212 sau (defained.php):
<HTML>
WWW.HUUKHANG.COM
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Constant</h4>
<?php
define("pi",3.14);
//define("hrs",8);
function Test()
{
if(defined("pi"))
echo "<br>pi:=".pi;
else
echo "<br>pi not defined";
if(defined("hrs"))
echo "<br>hrs:=".hrs;
else
echo "<br>hrs not defined";
}
Test();
?>
</BODY>
</HTML>
5. KET LUAN
Trong bai nay, chung ta tm hieu cach khai bao hang, bien va s dung hang bien. Ngoai
ra, ban cung tm hieu cach chuyen oi kieu d lieu, kiem tra kieu d lieu, tam vec cua
bien.
WWW.HUUKHANG.COM
Bai 3
PHEP TOAN VA PHAT BIEU CO IEU KIEN
TRONG PHP
Chng nay chung ta se lam quen va tm hieu toan t, phat bieu
co ieu kien va vong lap cua PHP.
Nhng
9
9
9
9
Khi ban lap trnh tren PHP la s dung cu phap cua ngon ng C, C++.
Tng t nh nhng ngon ng lap trnh khac, toan t giup cho ban thc hien
nhng phep toan nh so hoc hay tren chuoi.
Bang sau ay giup cho ban hnh dung c nhng toan t s dung trong
PHP, PHP nh ngha toa t toan hoc, quan he, so hoc, bit va not so phep toan
gan.
Loai toan t
Dien giai
V du
Arithmetic
+
*
/
%
Addition
Subtraction
Multiplication
Division
Modulus
a
+
a
a
*
a
/
a % b
b
b
b
b
Relational
>
<
>=
<=
!=
==
Greater than
Less than
Greater than or equal
Less than or equal
Not equal
Equal
a
a
a
a
a
a ==
b
b
b
b
b
Not
AND
OR
!a
a
&&
a || b
Logical
huukhang@yahoo.com
Toan t
!
&&
||
>
<
>=
<=
!=
b
3-1
Assignment
=
++
-+=
-=
*=
/=
%=
|=
&=
^=
.=
WWW.HUUKHANG.COM
a
a++
a-a
a
a
a
a
a
a
a
a
+=
-=
*=
/=
%=
|=
&=
^=
.=
b
b
b
b
b
b
b
b
b
Allocation
new
new A()
Selection
? :
If...Then selection
a ? b : c
Khi thc hien mot viec tang len gia tr th ban s dung cu phap nh sau:
$ i=0;$j=0;
j=i++;// i tang sau khi gan i vao j, chnh v vay sau khi gan i vao j, j van
khong thay oi
oi.
j=++i;// i tang trc khi gan i vao j, chnh v vay sau khi gan i vao j, j thay
huukhang@yahoo.com
3-2
WWW.HUUKHANG.COM
$i=10;
$j=5;
$j+=$i++;
echo "j=$j";
echo "<br>";
echo "i=$i";
echo "<br>";
$j+=++$i;
echo "j=$j";echo "<br>";
?>
</BODY>
</HTML>
2.2. Toan t Not: ~ And !
Toan t ~ ao nghch tat ca cac bit cua tham so, con toan t ! ao nghch
gia tr cua gia tr trc o. Chang han trong trng hp nay chung ta s dung
cho bieu thc hay bien co gia tr boolean.
V du 3.2: Phep toan ~ and !
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>~, ! Operator</h4>
<?php
$i=10;
$j=5;
$j+=~$i;
echo "j=$j";
echo "<br>";
$j+=~$i++;
echo "i=$i";
echo "<br>";
$j+=++$i;
echo "j=$j";
echo "<br>";
?>
</BODY>
</HTML>
2.3. Toan t nhan va chia: * and /
huukhang@yahoo.com
3-3
WWW.HUUKHANG.COM
</HEAD>
<BODY>
<h4>Multi And Divide Operator</h4>
<?php
$i=10;
$j=5;
echo $i/$j;
echo "<br>";
echo $i*$j;
?>
</BODY>
</HTML>
2.4. Toan t modulus: %
Khi chia mot so cho mot so, ban can ket qua la so d cua phep chia o th
dung toan t modulus
V du 3.4: Phep toan %
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Mod Operator</h4>
<?php
$i=10;
$j=7;
echo $i%$j;
echo "<br>";
?>
</BODY>
</HTML>
2.5. Toan t quan he: >=,>,<,<=,==,!=
Khi can so sanh ket qua gia hai toan han vi nhau, thong thng ban ngh
en phep toan so sanh nh la bang, ln hn, nho hn, v du sau dien giai cho
ban cac toan t tren:
V du 3.5: Phep toan >,>=,<,<=,==,!=
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Comparation Operators</h4>
<?php
huukhang@yahoo.com
3-4
WWW.HUUKHANG.COM
$i=10;
$j=9;
echo $i<$j;
echo "<br>";
echo $i!=$j;
?>
</BODY>
</HTML>
2.6. Toan t && va ||
&& la toa t and trong so hoc, || la toan t or trong so hoc. Hai toan t
nay rat thng dung trong khi lap trnh tren PHP, v du di ay dien giai cho
ban ay u hai toan t nay. Chu y rang khi s dung toan t eu co kem phat
bieu co ieu kien.
V du 3.6: Phep toan && va ||
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Logic Operators</h4>
<?php
$b=true;
$j=3;
if (($j>=3) && ($b!=true))
{
echo "result is true";
}
if(($j<3) || ($b==true))
echo "result is false";
?>
</BODY>
</HTML>
2.7. Toan t ?:
Toan t nay thay the cho phat bieu co ieu kien if...else, khi ban can lay
ket qua theo ieu kien nao o, neu co the khong can phat bieu if-else, th hay
thay the bang toan t ?:, cu phap cua chung nh sau:
str1=str2.equals(khang)?Welcome to PHP:Good bye PHP;
V du 3.7: Phep toan ?:
<HTML>
huukhang@yahoo.com
3-5
WWW.HUUKHANG.COM
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Selection Operators</h4>
<?php
$str1="Pham Huu Khang";
$str2 ="Khang";
$str1=(str1==str2)?"Welcome to PHP":"Good bye PHP";
echo "result is ".$str1;
?>
</BODY>
</HTML>
3. PHEP GAN
Khi gan mot gia tr hay bien vao mot bien trong PHP, ban phai dung en
phep gan, nhng trong PHP cung giong nh trong C th co nhng phep gan c
n gian hoa hay noi ung hn la chuan hoa e rut gon lai trong khi viet.
3.1. Phep gan thong thng nhat nh sau:
$j=i;
$str1 = Hello!;
$b=true;
3.2. Phep gan them mot gia tr la 1
$k=0;
$k++;
3.3. Phep gan chuoi
$strX="Hello";
$strX.= world;
$strX.=ABCc.$x;
3.4. Phep gan them mot vi chnh no gia tr
$k=0;$j=1;
$k+=$j;
tng t nh vay chung ta co $k*=2, ngha la $k=$k*2
4. PHAT BIEU CO IEU KIEN
huukhang@yahoo.com
3-6
WWW.HUUKHANG.COM
S dung phat bieu if e chon loc ket qua khi ieu kien ung, v du nh sau:
V du 3.8: Phat bieu IF
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>IF Statement</h4>
<?php
$b=true;
$j=3;
if(($j>=3) &&($b!=true))
echo "result is true";
if(($j<3) ||($b==true))
echo "result is false";
?>
</BODY>
</HTML>
4.2. Phat bieu IF (ieu kien) { cau lenh; }ELSE { cau lenh; }
S dung phat bieu if e chon loc ket qua khi ieu kien ung, va xuat ra ket
qua khi ieu kien sai, v du nh sau:
V du 3.9: Phat bieu IF - ELSE
<HTML>
<HEAD>
huukhang@yahoo.com
3-7
WWW.HUUKHANG.COM
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>IF ELSE Statement</h4>
<?php
$b=true;
$j=3;
if ($j>3)
echo "result is true";
else
{
$j++;
echo "result is $j";
}
?>
</BODY>
</HTML>
4.3. Phat bieu ELSEIF
Phat bieu elseif la phan cua phat bieu if else nhieu nhanh, khi co nhieu
ieu kien chon la th ban s dung elseif, cu phap cua chung nh sau:
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>ELSEIF Statement</h4>
<?php
$b=true;
$j=3;
if ($j>3)
echo "result is true";
elseif ($j=0)
{
$j++;
echo "result is $j";
}
else
{
$j--;
echo "result is ". $j--;
}
?>
</BODY>
</HTML>
4.4. Phat bieu Switch (ieu kien)
Phat bieu switch la phan cua phat bieu elseif nhieu nhanh, khi co nhieu
ieu kien chon la th ban s dung switch, cu phap cua chung nh sau:
huukhang@yahoo.com
3-8
WWW.HUUKHANG.COM
Switch(ieu kien)
{
case Value1
cau lenh1;
break;
case Value2
cau lenh2;
break;
default:
cau lenh default;
}
Break: dung e thoat ra khoi switch khi thoa mot case nao o trong switch,
default: khi khong co bat ky gia tr nao thoan trong cac case th gia tr cuoi cung
la defaule statement
V du 3.10: Phat bieu Switch
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>SWITCH Statement</h4>
<?php
$j=3;
$j=date("w");
$str="";
switch($j)
{
case 0:
$str="Today is Sunday";
break;
case 1:
$str="Today is Monday";
break;
case 2:
$str="Today is Tueday";
break;
case 3:
$str="Today is Wednesday";
break;
case 4:
$str="Today is Thursday";
huukhang@yahoo.com
3-9
WWW.HUUKHANG.COM
break;
case 5:
$str="Today is Friday";
break;
case 6:
$str="Today is Saturday";
break;
default:
$str="Today is Sunday";
break;
}
echo $str;
?>
</BODY>
</HTML>
4.5. Phat bieu While(ieu kien)
true.
Phat bieu while thc thi nhng cau lenh trong while khi ieu kien co gia tr
sau:
Phat bieu for dung cho vong lap co gii han cho trc, cu phap co dang nh
huukhang@yahoo.com
3-10
WWW.HUUKHANG.COM
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>FOR Statement</h4>
<?php
for($j=1;$j<=10;$j++)
{
echo $j."<br>";
}
?>
</BODY>
</HTML>
4.7. Phat bieu do while
Phat bieu do while cho phep duyet va kiem tra ieu kien sau phat bieu th
nhat, ieu nay co ngha la t nhat mot phat bieu c thc hien.
V du 3.13: Phat bieu Do While
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Do While Statement</h4>
<?php
$j=10;
do
{
echo $j."<br>";
$j--;
}while($j>0)
?>
</BODY>
</HTML>
Phat bieu exit cho phep thoat ra khoi phat bieu ieu kien khi thoa ieu
kien nao o.
V du 3.14: Phat bieu exit
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Exit Statement</h4>
<?php
$j=10;
do
huukhang@yahoo.com
3-11
WWW.HUUKHANG.COM
{
if($j==3) exit;
echo $j."<br>";
$j--;
}while($j>0)
?>
</BODY>
</HTML>
5. TOM TAT
Trong bai hoc nay chung toi gii thieu en cho cac ban cac phep gan, cac toan
t, ong thi giup cho cac ban hieu them vao cac phat bieu co ieu kien nh
while, for, switch, .
huukhang@yahoo.com
3-12
WWW.HUUKHANG.COM
Bai hoc nay chung ta se lam quen vi bien form va hai phng
thc $HTTP_POST_VARS va $HTTP_GET_VARS cua PHP:
9 Bien form.
9 Phng thc $HTTP_GET_VARS
9 Phng thc $HTTP_POST_VARS
1. BIEN FORM
Bien form trong PHP c biet en nh mot loai bien, thay v khai bao th bien o
chnh la ten cua the nhap lieu trong trang submit hay tham so tren querystring.
Khi ngi s dung nhap gia tr vao phan Name va chon gii tnh Male hay Female
nh hnh 4-1, neu nhan nut submit th trang ex1-1.php se trieu goi, trong trang nay
ban co the lay gia tr nhap t trang ex1.php bang cach s dung bien form nh v du
4-1-1.
V du 4-2: Dung bien form
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Form variable</h4>
<table>
<tr><td>Name</td>
<td>
:<?=$fullname?>
WWW.HUUKHANG.COM
</td></tr>
<tr><td>Gender</td>
<td>
:<?=$gender?>
</td></tr>
</table>
</BODY>
</HTML>
Trong o, $fullname va $gender la ten cua hai the input trong trang ex1.php, trong
trng hp nay chung ta s dung phng thc POST cho form.
Hnh 4-1-1: Ket qua lay t trang submit bang bien form
WWW.HUUKHANG.COM
Khi trieu goi trang ex2.php tren trnh duyet, ngi s dung chon gia tr trong hai
tuy chon Province va Industry nh hnh 4-2.
WWW.HUUKHANG.COM
Neu nhan Submit th hai gia tr chon se c truyen len tren QueryString vi hai
tham so la ten cua the select. V du trong trng hp nay ket qua tra ve nh hnh 42-1.
oi vi trng hp ban khong s dung the form nh hai trng hp tren, chung ta
cung co the lay gia tr t chuoi QueryString bang bien form. Chang han, ban khai
bao trang chop phep ngi s dung chon ky t e liet ke danh sach khach hang theo
ky t o nh hnh 4-3.
WWW.HUUKHANG.COM
Khi ngi s dung chon mot ky t th s dung bien form la ten cua tham so (al), ban
co the lay c gia tr cua ky t ang chon:
<tr><td>Select:<?=$al?></td></tr>
Tuy nhien, lan au tien trieu goi trang nay ma khong co tham so tren QueryString,
khai bao bien form se phun ra loi nh hnh 4-3-1.
e tranh trng hp nay, ban s dung ham isset e kiem tra bien ton tai hay
khong, neu ton tai th ban s dung bien form nay. V du oi vi trng hp nay
chung ta khai bao nh v du 4-3.
V du 4-3: S dung bien form
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Form variable</h4>
<table>
<tr><td>List by Alphabet</td></tr>
<tr><td>
WWW.HUUKHANG.COM
<a href="ex3.php?al=A">A</a> |
<a href="ex3.php?al=B">B</a> |
<a href="ex3.php?al=C">C</a> |
<a href="ex3.php?al=D">D</a> |
<a href="ex3.php?al=E">E</a> |
<a href="ex3.php?al=">All</a>
</td></tr>
<?php
if(isset($al))
{
?>
<tr><td>Select:<?=$al?></td></tr>
<?php
}
?>
</table>
</BODY>
</HTML>
WWW.HUUKHANG.COM
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Form variable</h4>
<table>
<form action=ex4.php method=get>
<tr><td>Province:<select name=province>
<option value=HAN>Ha Noi</option>
<option value=HCM>Ho Chi Minh</option>
<option value=HUE>Hue</option>
</select>
<input type=submit value=Submit></td></tr>
</form>
<tr><td>
<?php
if(isset($HTTP_GET_VARS["province"]))
{
$result=$HTTP_GET_VARS["province"];
echo "Result: ".$result;
}
?>
</td></tr>
</table>
</BODY>
</HTML>
Lu y rang, neu ban khong s dung ham isset e kiem tra province ton tai hay khong
th trang php se phun loi trong trng hp lan au tien goi en trang ex4.php ma
khong submit. Tuy nhien, neu ban submit trang nay th ket qua tra ve nh hnh 4-4.
WWW.HUUKHANG.COM
<BODY>
<h4>Form variable</h4>
<table>
<tr><td>List by Alphabet</td></tr>
<tr><td>
<a href="ex3.php?al=A">A</a> |
<a href="ex3.php?al=B">B</a> |
<a href="ex3.php?al=C">C</a> |
<a href="ex3.php?al=D">D</a> |
<a href="ex3.php?al=E">E</a> |
<a href="ex3.php?al=">All</a>
</td></tr>
<?php
if(isset($HTTP_GET_VARS["al"]))
{
?>
<tr><td>Select:<?=$HTTP_GET_VARS["al"]?></td></tr>
<?php
}
?>
</table>
</BODY>
</HTML>
WWW.HUUKHANG.COM
<BODY>
<h4>Form variable</h4>
<form action=ex7.php method=post>
<table>
<tr><td>User Name</td>
<td>
:<input type=text name=username>
</td></tr>
<tr><td>Password</td>
<td>
:<input type=password name=password>
</td></tr>
<tr><td> </td>
<td><input type=submit value=Login></td></tr>
</table>
</form>
</BODY>
</HTML>
Khi ngi s dung nhap username va password nh hnh 4-6 va nhan nut Login.
WWW.HUUKHANG.COM
<table>
<tr><td>Username</td>
<td>:<?=$HTTP_POST_VARS["username"]?></td></tr>
<tr><td>Password</td><td>
:<?=$HTTP_POST_VARS["password"]?></td></tr>
</table>
<?php
}
?>
</BODY>
</HTML>
4. KET LUAN
Trong bai nay, chung ta tm hieu cach s dung bien form va hai phng thc
$HTTP_POST_VARS, $HTTP_GET_VARS. Ngoai ra, ban cung tm hieu cach kiem tra
bien ton tai hay khong bang ham isset().
Chu y rang, khi s dung bien form ban tranh trng hp khai bao bien cuc bo hay toan
cuc trong tang PHP cung ten vi the nhap lieu cua form trc o submit en hay tham
so tren querystring.
WWW.HUUKHANG.COM
1. OI TNG SESSION
Trong PHP4.0 oi tng Session c xem nh mot oi tng cho phep ban truyen gia
tr t trang PHP nay sang PHP khac. e s dung Session, ban khai bao th muc c
lu tr d lieu do oi tng nay ghi ra.
Session c sinh ra va c bien mat khi ngi s dung huy chung, thi gian song cua
chung a het hoac ngi s dung ong trnh duyet.
Chang han, trong trng hp nay chung ta s dung th muc C:\PHP\sessiondata c
khai bao trong tap tin php.ini.
session.save_path = C:\PHP\sessiondata
Ngoai ra, khi muon s dung Sessoin th ban phai khi tao chung. e khi tao Session
ban co the khi tao trong trang PHP moi khi truy cap hay gan gia tr cho Session.
session_start();
Tuy nhien, ban co the cau hnh trong trang php.ini (1 la start).
session.auto_start = 0
Chang han, ban khai bao bao e lay gia tr session_id trong trang sessionid.php nh
v du 5-1.
V du 5-1: Nhan dang session
<?php
session_start();
?>
<HTML>
WWW.HUUKHANG.COM
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Session_ID</h4>
<?php
$sessionid=session_id();
echo $sessionid;
?>
</BODY>
</HTML>
Moi ngi s dung truy cap en Web Site se co mot nhan dang khac nh nh hnh 51.
Khi muon khi tao session, ban co the gan gia tr cho session nay nh gan gia tr
cho bien trong PHP, sau o s dung ham tren e ang ky.
$sessioname=value;
session_register("sessioname");
Trong trng hp co nhieu session, ban co the s dung ham session_register e ang
ky cung mot luc nhieu session nh sau:
$sessioname1=value1;
$sessioname2=value2;
WWW.HUUKHANG.COM
$sessioname3=value3;
session_register("sessioname1","sessioname2","sessioname3");
Chang han, trong trng hp nay chung ta khai bao trang sessionregister.php va
ang ky 3 sessoin co ten userid, email va fullname nh v du 5-2 sau:
V du 5-2: ang ky session
<?php
session_start();
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Registered Session</h4>
<?php
$userid="123";
$email="test@yahoo.com";
$fullname="Nguyen Van Ba";
session_register("userid");
session_register("email","fullname");
?>
</BODY>
</HTML>
WWW.HUUKHANG.COM
<?php
session_start();
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Get Session</h4>
<?php
echo "UserID: ". $userid."<br>";
echo "Email: ".$email."<br>";
echo "FullName: ".$fullname;
?>
</BODY>
</HTML>
Khi trieu goi trang getsession.php tren trnh duyet ban trnh bay gia tr cua session
userid, email va fullname nh hnh 5-3.
WWW.HUUKHANG.COM
<h4>Get Session</h4>
<?php
echo "UserID: ". $userid."<br>";
echo "Email: ".$email."<br>";
echo "FullName: ".$fullname;
echo "Address: ".$address;
?>
</BODY>
</HTML>
Khi trieu goi trang unregistersession.php tren trnh duyet th loi phat sinh nh hnh
5-4.
WWW.HUUKHANG.COM
<?php
if(session_is_registered("userid"))
echo "UserID: ". $userid."<br>";
if(session_is_registered("email"))
echo "Email: ".$email."<br>";
if(session_is_registered("fullname"))
echo "FullName: ".$fullname;
if(session_is_registered("address"))
echo "Address: ".$address;
?>
</BODY>
</HTML>
Khi trieu goi trang checksession.php th ket qua se trnh bay nh hnh 5-5.
WWW.HUUKHANG.COM
<h4>UnRegister Session</h4>
<?php
session_unregister("fullname");
if(session_is_registered("userid"))
echo "UserID: ". $userid."<br>";
if(session_is_registered("email"))
echo "Email: ".$email."<br>";
if(session_is_registered("fullname"))
echo "FullName: ".$fullname;
if(session_is_registered("address"))
echo "Address: ".$address;
?>
</BODY>
</HTML>
Khi trieu goi trang sessionunregister.php tren trnh duyet thket qua tra ve nh hnh 56.
WWW.HUUKHANG.COM
2. COOKIE
Cookie c xem nh session, tuy nhien chung lu tr thong tin tren trnh khach. e
s dung Cookie, ban s dung ham setcookie e gan gia tr nh v du 5-8.
V du 5-8: Gan gia tr cho cookie
<?php
setcookie("huukhang","Computer Learning Center");
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Cookie</h4>
</BODY>
</HTML>
Khi ngi s dung trieu goi trang setcookie.php ket qua tra ve nh hnh 5-8.
WWW.HUUKHANG.COM
Bang cach s dung $HTTP_COOKIE_VARS e lay gia tr cua cookie trc o trong
trang httpcookievar.php nh v du 5-10.
V du 5-10: S dung $HTTP_COOKIE_VARS
<?php
echo $HTTP_COOKIE_VARS["huukhang"];
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Get Cookie</h4>
</BODY>
</HTML>
WWW.HUUKHANG.COM
3. KET LUAN
Trong bai nay, chung ta tm hieu cach s dung bien session va cookie.
WWW.HUUKHANG.COM
Bai hoc nay chung ta se lam quen cach khai bao ham, chen tap
tin va tap tin dung chung:
9 Cach khai bao ham.
9 Xay dng tap tin nh dang noi dung
9 Tap tin dung chung
Trong trng hp ham khong co gia tr tra ve th ham c xem nh thu tuc. Ngoai ra,
ban co the khai bao tham so tuy chon bang cach gan gia tr mac nh cho tham so. V
du chung ta khai bao:
function functioname($parameter1, $parameter2=10 )
{
return value;
}
WWW.HUUKHANG.COM
$result=$number1-$number2;
break;
case "*":
$result=$number1*$number2;
break;
case "/":
if($number2!=0)
$result=$number1/$number2;
else
$result=0;
break;
case "%":
if($number2!=0)
$result=$number1%$number2;
else
$result=0;
break;
}
return $result;
}
echo "result of default operator: ".getResult(10,20);
echo "<br>";
echo "result of * operator: ".getResult(10,20,"*");
?>
</BODY>
</HTML>
Neu muon nh ngha function khong co gia tr tra ve, ban co the khai bao trong trang
void.php nh v du sau:
...
function calloperator()
{
echo "result of default operator: ".getResult(10,20);
echo "<br>";
echo "result of * operator: ".getResult(10,20,"*");
}
calloperator();
?>
</BODY>
</HTML>
Trong trng hp truyen tham so nh tham bien, ban s dung ky hieu & trc tham so,
chang han chung ta khai bao ham co tham bien co ten average nh trong trang
reference.php nh sau:
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Function</h4>
<?php
function getAmount($quantity, $price,&$average)
{
$result=0;
$result=$quantity*$price;
$average=$result*6/12;
return $result;
}
$bq=0;
echo "result is : ".getAmount(10,20,$bq);
echo "<br>";
WWW.HUUKHANG.COM
?>
</BODY>
</HTML>
Trong trng hp tren th ham getAmount co tham so $average la tham bien con ham
getAmounts co tham so $average la tham tr, va ket qua tra ve cua bien $bq khi goi
ham getAmount la 100 trong khi o gia tr cua bien nay trong ham getAmounts la 0.
Trong o, A tng ng vi lien ket (chuoi trong the <a>) co nh dang ng vi trng
hp lien ket, di chuyen con chuot, chon lien ket.
A{
COLOR: #003063;
TEXT-DECORATION: none
}
A:hover {
WWW.HUUKHANG.COM
COLOR: #003063;
TEXT-DECORATION: underline
}
A:link {
FONT-WEIGHT: bold;
COLOR: red;
TEXT-DECORATION: none
}
A:visited {
FONT-WEIGHT: bold;
COLOR: black;
TEXT-DECORATION: none
}
Chang han, chung ta khai bao trang PHP vi noi dung c ap dung vi kieu nh dang
khai bao trong the style nh vu du 6-1.
V du 6-1: Khai bao the style
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>Style trong PHP</title>
<style>
A{
COLOR: #003063;
TEXT-DECORATION: none
}
A:hover {
COLOR: #003063;
TEXT-DECORATION: underline
}
A:link {
FONT-WEIGHT: bold;
COLOR: red;
TEXT-DECORATION: none
}
A:visited {
FONT-WEIGHT: bold;
COLOR: black;
TEXT-DECORATION: none
}
.title {
FONT-WEIGHT: normal;
FONT-SIZE: 22px;
COLOR: #003063;
}
.text{
FONT: 11px Arial, Helvetica, sans-serif
}
</style>
</head>
<body>
<h4>Style Tag</h4>
<TABLE cellSpacing=0 cellPadding=0
width="100%" border=0>
<TR>
<TD vAlign=top class=title>
*** Quan Tr SQL Server 2000 ***
</TD>
</TR>
<TR>
<TD class=text>
<div align=justify>
Tm hieu cach cai at, cau hnh, quan tr,
backup & restore, import & export, thiet
WWW.HUUKHANG.COM
Khi trieu goi trang style.PHP tren trnh duyet, noi dung cua trang web c nh dang
theo the style nh hnh 6-1.
Moi noi dung trnh bay trong the td se co nh dang nh tren. Neu ban muon co nh
dang khac th khai bao thuoc tnh class cho the td o, v du s dung nh dang khac
cho the td:
<td class=text>ABC</td>
WWW.HUUKHANG.COM
Thay v chuoi ABC se co nh dang la FONT: 10px Arial, Helvetica, sans-serif th chung
se co nh dang cua FONT: 11px Arial, Helvetica, sans-serif.
Chu y rang, trong moi trang web ban phai khai bao the style va nh ngha thong nhat
cho cac the. Khi co s thay oi ban phai thay oi trong moi trang web. e s dung
chung cho moi trang web trong ng dung, ban can xay dng mot tap tin style, tap tin
c biet en vi ten goi custom style sheet (css).
Bat ky trang web nao trong ng dung, muon ap dung kieu nh dang trong tap tin css
th khai bao lien ket tap tin css bang the link.
V du, chung ta khai bao tap tin style.css bao gom cac nh dang nh v du 6-2.
V du 6-2: Khai bao tap tin css
A{
COLOR: #003063;
TEXT-DECORATION: none
}
A:hover {
COLOR: #003063;
TEXT-DECORATION: underline
}
A:link {
FONT-WEIGHT: bold;
COLOR: red;
TEXT-DECORATION: none
}
A:visited {
FONT-WEIGHT: bold;
COLOR: black;
TEXT-DECORATION: none
}
.title {
FONT-WEIGHT: bold;
FONT-SIZE: 14px;
COLOR: #003063;
}
.text{
FONT: 11px Arial, Helvetica, sans-serif
}
Sau o trong trang PHP, ban khai bao lien ket tap tin nay bang the link, neu muon ap
dung nh dang nay trong moi the HTML ban s dung thuoc tnh class nh khai bao
nh dang cua the style ngay trong trang o nh v du 6-3.
V du 6-3: Khai bao s dung tap tin css
<html>
<head>
<title>
Welcome to Link Style Sheet File
</title>
<LINK href="style.css" rel=stylesheet>
<META http-equiv=Content-Type
content="text/html; charset=utf-8">
</head>
<body>
<h4>Style File</h4>
<TABLE cellSpacing=0 cellPadding=0
width="100%" border=0>
WWW.HUUKHANG.COM
<TR>
<TD vAlign=top class=title>
*** Quan Tr SQL Server 2000 ***
</TD>
</TR>
<TR>
<TD class=text>
<div align=justify>
Tm hieu cach cai at, cau hnh, quan tr,
backup & restore, import & export, thiet
ke, lap trnh, t ong hoa tac vu quan tr,
ban sao d lieu, bao mat va chong tham nhap
d lieu bang.
<b>SQL Injection</b>.</div>
</TD>
</TR>
<TR><TD><hr size=1 color=red></TD</TR>
<TR><TD>Welcome to
<a href="www.huukhang.com" class=>
www.huukhang.com</a></TD
</TR>
</TABLE>
</body>
</html>
Trieu goi trang includestyle.php tren trnh duyet nh hnh 6-3, mau va kch thc font
cung vi kieu cha cua noi dung khong thay oi so vi style.php, bi v phan the style
c tach ra thanh tap tin style.css, sau o dung the link e lien ket tap tin css nay vao
trang PHP tr lai.
WWW.HUUKHANG.COM
Chu y rang, neu khai bao thuoc tnh class trong the <table> th nhng noi dung trong
the <table> se co nh dang theo nh dang khai bao trong thuoc tnh class. Tng t,
neu khai bao thuoc tnh class trong the <tr> th noi dung trong the <tr> se co nh
dang giong nh nh dang khai bao trong thong tin class.
WWW.HUUKHANG.COM
Tao mot table gom 3 hang 3 cot va khai bao border=1 e e canh le sau o ban co the
khai bao lai thuoc tnh nay bang 0.
Ben trong moi phan co the co mot hay nhieu the table khac.
Co the khong co phan left va right nhng bat buoc phan top va bottom phai co.
Ban co the s dung chieu rong cua table theo kch thc tng oi (%) hay so ch nh,
oi vi man hnh 600*800 th chieu rong thng s dung la 780, khi ngi s dung chon
o phan giai cua man hnh ln hn th kch thc cua table nay khong thay oi, trong
khi o noi dung se phu ay man hnh khi ban khai bao kch thc theo 100%.
------------------------------------------------------------------------------------------e co giao dien nh trang sample.php nh tren, ban co the khai bao nh v du 6-3.
V du 6-3: Noi dung trang sample.PHP
<html>
<head>
<title>
Welcome to Including File
</title>
<LINK href="style.css" rel=stylesheet>
<META http-equiv=Content-Type
content="text/html; charset=utf-8">
</head>
<body bottomMargin=0 leftMargin=0
topMargin=0 rightMargin=0>
WWW.HUUKHANG.COM
Trong trng hp ban muon co ng phan cach gia moi phan bang image, ban co the
khai bao lai trang sample.php co 5 hang va 5 cot nh template.php nh hnh 6-4.
WWW.HUUKHANG.COM
WWW.HUUKHANG.COM
Sau o tach trang template.php nay thanh 5 trang khac nhau c at ten tng ng la
top.htm, left.htm, right.htm va bottom.htm, trong o phan body tng ng vi trang
templates.php.
e khai bao chen tap tin trong trang PHP, ban s dung cu phap nh sau:
<?php
include(filename);
?>
Hay
<?php
require(filename);
?>
Trong o trang templates.PHP khai bao chen top.htm, left.htm, right.htm va bottom.htm
nh v du 6-5.
V du 6-5: Khai bao chen tap tin trong templates.php
<html>
<head>
<title>
Welcome to HUUKHANG.COM
</title>
<LINK href="style.css" rel=stylesheet>
<META http-equiv=Content-Type
content="text/html; charset=utf-8">
</head>
<body bottomMargin=0 leftMargin=0
topMargin=0 rightMargin=0>
<TABLE width="778" border=0 cellSpacing=0
cellPadding=0 align=center>
<TR HEIGHT="100">
<TD Align=center colspan=5>
<?php include("top.htm")?>
</TD>
</TR>
<!---Khai bao ng phan cach--->
<TR HEIGHT="1">
<TD colspan=5 bgcolor=gray></TD>
</TR>
WWW.HUUKHANG.COM
<TR HEIGHT="280">
<TD vAlign=top width="150">
<?php include(left.htm")?>
</TD>
<!---Khai bao ng phan cach--->
<TD bgcolor=gray width="1"></TD>
<TD vAlign=top width="476">BODY</TD>
<!---Khai bao ng phan cach--->
<TD bgcolor=gray width="1"></TD>
<TD vAlign=top width="150">
<?php include ("right.htm")?>
</TD>
</TR>
<!---Khai bao ng phan cach--->
<TR HEIGHT="1">
<TD colspan=5 bgcolor=gray></TD>
</TR>
<TR HEIGHT="50">
<TD colspan=5 align=center>
<?php include("bottom.htm")?>
</TD
</TR>
</TABLE>
</body>
</html>
Khi trieu goi trang templates.php, noi dung cua 4 tang left.htm, right.htm, top.htm,
bottom.htm chen vao trang templates.php nh hnh 6-5.
WWW.HUUKHANG.COM
WWW.HUUKHANG.COM
Neu co s dung trang right.htm th noi dung cua tap tin nay c nh ngha tng t
nh v du 6-5-3.
V du 6-5-3: Noi dung trang right.htm
<TABLE width="100%" border=0 cellSpacing=0
cellPadding=0 HEIGHT="100%" align=center>
<TR >
<TD width="150" Align=center>
FREE ADV
</TD>
</TR>
</TABLE>
Chu y rang, trong moi trang khai bao chen khong co cac the ong va m html, body bi
khi chen th noi dung cua tap tin c chen se c chen vao tap tin b chen va trong
tap tin b chen a co hai the nay.
Kch ban trnh chu PHP ho tr cac tap tin c chen vi cac ten m rong nh htm,
PHP, inc, lib, html. Do thc chat cua viec khai bao chen la chen oan ma trong tap tin
chen vao tap tin bo chen, trong trng hp nay trang chen htm hay PHP eu giong
nhau o la ly do tai sao cac trang chen tren eu co ten m rong la htm.
Tuy nhien, khi ban goi trang chen nay mot mnh v du tom.htm, neu ben trong co ma
PHP th ma o khong c thong dch. Neu nhng trang chen nay co nhu cau goi mot
mnh th ban co the chuyen chung thanh trang PHP thay v htm nh a trnh bay.
Sau khi co c trang templates.php, ban co the s dung trang nay la mau cho cac
trang khac bang cach save as thanh cac trang PHP khac khi lap trnh. Khi khai bao
chen tap tin, ban co the s dung ng dan tng oi hoac tuyet oi cua tap tin chen
so vi ap tin b chen.
WWW.HUUKHANG.COM
WWW.HUUKHANG.COM
Sau o khai bao trang result.php, chen tap tin paging.php va goi ham getPaging nhu
sau:
<html>
<head>
<title>
Welcome to HUUKHANG.COM
</title>
<LINK href="style.css" rel=stylesheet>
<META http-equiv=Content-Type
content="text/html; charset=utf-8">
</head>
<body bottomMargin=0 leftMargin=0 topMargin=0 rightMargin=0>
<?php
include("paging.php");
echo paging(47,2,10,5,"result.php?x=10");
?>
</body>
</html>
5. KET LUAN
Trong bai nay, chung ta tm hieu cach khai bao ham, trang php va khai bao chen tap
tin.
WWW.HUUKHANG.COM
Bai hoc nay chung ta se lam quen cach x ly chuoi, mang, kieu DataTime
trong PHP:
9 X ly chuoi
9 Lam viec vi mang d lieu
9 Kieu DateTime
1. X LY CHUOI
PHP la kch ban c xem la tot nhat cho x ly chuoi, bang cach s dung cac ham x ly chuoi, ban
co the thc hien cac y nh cua mnh khi tng tac c s d lieu, tap tin hay d lieu khac.
WWW.HUUKHANG.COM
WWW.HUUKHANG.COM
</body>
</html>
WWW.HUUKHANG.COM
echo $i["value"]."<br>";
}
?>
</body>
</html>
WWW.HUUKHANG.COM
?>
</body>
</html>
WWW.HUUKHANG.COM
</body>
</html>
Khi trieu goi trang replace.php tren trnh duyet, ban se co ket qua nh sau:
Truy cap vao phan t mang, ban co the s dung ch muc cua phan t nh sau:
$arr[0]=1;
$arrs[1]=12;
Lay gia tr cua phan t mang, ban cung thc hien tng t nh trng hp truy cap mang phan
t.
echo $arr[0];
$x=$arrs[5];
Chang han, chung ta khai bao mang ong va mang co so phan t cho trc, sau o truy cap va
lay gia tr cua chung nh v du trong trang arrayone.php sau:
WWW.HUUKHANG.COM
<html>
<head>
<title>Array</title>
</head>
<body>
<h4>Mang mot chieu</h4>
<?php
$i=0;
$myarr=array(1,2,3,4,5,6,7);
$arr=array();
$arrs=array(10);
$arr[0]=10;$arr[1]=11;$arr[2]=12;$arr[3]=13;
for($i=0;$i<sizeof($arr);$i++)
{
echo $arr[$i]." ";
}
echo "<br>";
echo "Gia tri lon nhat ".max($arr)."<br>";
echo "Gia tri nho nhat ".min($arr)."<br>" ;
echo "Gia tri trung binh ".array_sum($arr) / sizeof($arr)."<br>" ;
echo "<br>";
for($i=0;$i<=10;$i++)
{
$arrs[$i]=10+$i;
}
for($i=0;$i<=10;$i++)
{
echo $arrs[$i]." ";
}
echo "<br>";
echo "Gia tri lon nhat ".max($arrs)."<br>";
echo "Gia tri nho nhat ".min($arrs)."<br>" ;
echo "Gia tri trung binh ".array_sum($arrs) / sizeof($arrs)."<br>" ;
?>
</body>
</html>
Ket qua trnh bay nh hnh 7-7 khi trieu goi trang arrayone.php.
WWW.HUUKHANG.COM
WWW.HUUKHANG.COM
for($i=0;$i<=7;$i++)
{
for($j=0;$j<=7;$j++)
{
$arrs[$i][$j]=10+$i*$j;
}
}
for($i=0;$i<=7;$i++)
{
for($j=0;$j<=7;$j++)
{
echo $arrs[$i][$j]." ";
}
echo "<br>";
}
echo "<br>";
?>
</body>
</html>
Khi trieu goi trang nay tren trnh duyet, ket qua trnh bay nh hnh 7-8.
WWW.HUUKHANG.COM
3. KIEU DATETIME
e lam viec vi kieu d lieu Date va Time, ban s dung ham cua PHP co san. Chang han, muon
trnh bay chuoi ngay thang, ban dung ham date vi cac tham so nh v du sau:
<html>
<head>
<title>Date and Time</title>
</head>
<body>
<h4>Ngay hien tai</h4>
<?php
echo date("j-S-F-Y");
echo "<br>";
echo date("M/Y");
echo "<br>";
echo "Days of ".date("M")." is ".date("t");
echo "<br>";
?>
</body>
</html>
Lu y rang, than so trong ham date c trnh bay trong bang sau
----------------------------------------------------------------------Code Dien giai
----------------------------------------------------------------------a
Buoi sang/Chieu bang hai ky t thng am/pm.
A
Buoi sang/Chieu bang hai ky t hoa AM/PM.
B
nh dang thi gian Swatch Internet, ban co the tham khao
http://swatch.com/internettime/internettime.php3.
d
Day (01-31) trong thang vi hai so, neu ngay 1-9 se co kem so 0.
D
Day (Mon-Sun) trong tuan vi 3 ky t.
WWW.HUUKHANG.COM
F
g
G
h
H
i
j
l
L
m
M
n
s
S
4. KET LUAT
Trong bai nay, chung ta tap trung tm hieu x ly chuoi, mang va ham ngay thang. Trong bai tiep,
chung ta tiep tuc tm hieu c s d lieu mySQL.
WWW.HUUKHANG.COM
Bai hoc nay chung ta se lam quen cach thao tac tren c s d lieu MySQL:
9
9
9
9
9
2. CAI AT MYSQL
e cai at MySQL tren nen Windows ban theo cac bc sau:
Trc tien ban chep tap tin mysql-4.0.0a-alpha-win.zip vao a cng hoac chon chung t aq
CD va giai nen tap tin
Chay tap tin Setup.exe, chon a C hay D
Sau khi cai at thanh cong, ban kiem tra trong Windows Services xuat hien dch vu mySQL
hay khong?. e s dung c MySQL th trang thai cua dch vu nay phai che o Started.
Lu y rang, trong trng hp MySQL khong the chay c, do dch vu cua MySQL cha Started
nh , e co the chay c MySQL th ban can mot so thay oi trong tap tin my.ini trong th muc
WINNT
-------------------------------------------------------------------------------------#This File was made using the WinMySQLAdmin 1.3
#Tool
#9/11/2003 10:50:13 AM
#Uncomment or Add only the keys that you know how works.
#Read the MySQL Manual for instructions
[mysqld-nt]
basedir=C:/mysql
#bind-address=127.0.0.1
datadir=C:/mysql/data
#language=C:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=3306
#set-variable=key_buffer=16M
WWW.HUUKHANG.COM
[WinMySQLadmin]
Server=C:/mysql/bin/mysqld-nt.exe
user=root
password=
QueryInterval=10
WWW.HUUKHANG.COM
WWW.HUUKHANG.COM
Trong phat bieu tren, va tao ra User co ten myis, vi hostname la c s d lieu hien hanh,
password la 1234 va c cac at quyen Select, Insert, Update, Delete, Index, Alter, Create, Drop tren
c s d lieu hien hanh.
Trong trng hp ban tao ra mot Username khong cung cap cac at quyen tren c s d lieu,
ban co the thc hien nh phat bieu tao username: test, password: 1234 sau:
GRANT
usage
ON *.* TO 'test'@'%'
WWW.HUUKHANG.COM
IDENTIFIED BY '1234'
Neu ban s dung giao dien o hoa, ban co the tao username va gan quyen nh tren bang cach
s dung menu co ten Tools | User-Manager, ca so xuat hien nh hnh 8-5.
---------------------------------------------Loai
ap dung
Dien giai
---------------------------------------------select
tables,
Cho phep user truy van mau
columns
tin t Table.
insert
tables,
Cho phep user them mi mau
columns
tin vao Table.
update
tables,
Cho phep user thay oi gia
columns
tr cua mau tin ton tai
trong Table.
delete
tables
Cho phep user mau tin ton
tai trong Table.
index
tables
Cho phep user them mi hay
xoa ch muc cua Table.
alter
tables
Cho phep user thay oi cau
truc cua oi tng Table
WWW.HUUKHANG.COM
Xuat phat t cac quyen co anh hng en cau truc c s d lieu, cac oi tng cua c s d lieu
va d lieu, ban co the xem xet ky cang trc khi cap quyen cho user am viec tren c s d lieu.
Ngoai cac quyen tren, trong MySQL con co mot so quyen khong gan mac nh nh trong bang
8-2, ban co the xem xet cac at quyen quan tr e cap cho ngi dung.
Bang 8-2: Cac at quyen quan tr tren c s d lieu
---------------------------------------------Loai
Dien giai
---------------------------------------------reload
Cho phep ngi quan tr nap lai cac
Table, quyen, host, logs va Table.
shutdown
Cho phep ngi quan tr cham dt hoat
ong MySQL Server.
process
Cho phep ngi quan tr xem qua trnh
thc hien cua trnh chu va co the cham
dt mot so qua trnh ang thc thi.
file
Cho phep d lieu ghi vao Table t tap
tin.
----------------------------------------------
Lu y: Nhng username bnh thng khong nen cap quyen nh trong bang 8-2 cho ho, trong
trng hp ban muon cap tat ca cac quyen trong bang 8-1 va Bang 8-2 cho username khi tao ra ho,
ban Table s dung t khoa All thay v All Privileges trong phat bieu tao user nh sau:
GRANT
ALL
ON *.* TO 'ekhang'@'%'
IDENTIFIED BY '12345678'
Tng t nh vay, trong trng hp ban khong cung cap bat ky at quyen nao tren c s d
lieu hien hanh, ban co the khai bao phat bieu cap uyen nh sau:
GRANT
usage
ON *.* TO 'ekhang'@'%'
IDENTIFIED BY '12345678'
Trong trng hp xoa tat ca cac quyen cua user, ban co the s dung phat bieu nh sau:
Giao vien: Pham Hu Khang
WWW.HUUKHANG.COM
Revoke All
ON item
From username
Neu user o c cap quyen vi tuy chon Grant Option, e xoa cac quyen o cua user, ban co
the khai bao nh sau:
Revoke Grant Option
ON item
From username
e tham khao chi tiet qua trnh cap va xoa quyen cua mot user, ban co the tham khao mot so
phat bieu nh sau:
Gan quyen Administrator cho user co ten fred tren moi c s d lieu trong MySQL, password
cua anh ta la mnb123, ban co the khai bao nh sau:
Grant all
On *
To fred indetifyed by mnb123
With Grant Option;
Neu ban khong muon user co ten fred trong he thong, ban co the xoa anh ta bang cach khai
bao phat bieu sau:
Revoke all
On *
From fred;
Tao mot user co ten ekhang vi password la 12345678, c lam viec tren c s d lieu Test,
khong cap quyen cho user nay, ban co the khai bao nh sau:
Grant usage
On Test.*
To ekhang identified by 12345678;
Tng t nh vay, trong trng hp ban muon cap mot so quyen cho user co ten ekhang tren c
s d lieu Test, ban co the khai bao nh sau:
Grant select, insert, delete, update, index, drop
On Test.*
To ekhang;
Neu ban muon xoa bt mot so quyen cua user co ten ekhang tren c s d lieu Test, ban co the
khai bao nh sau:
Revoke update, delete, drop
On Test.*
From ekhang;
Nhng trong trng hp xoa tat ca cac quyen cua user co ten ekhang tren c s d lieu Test,
ban co the khai bao:
Revoke All
On Test.*
From ekhang;
WWW.HUUKHANG.COM
So nguyen nho.
mediumint -8388608
-> 838860
hay
0..16777215
So nguyen va.
So nguyen.
int
-231->231-1
hay
0..232-1
8
So nguyen ln.
-263->263-1
hay
0..264-1
---------------------------------------------bigint
So thap phan
dang Single.
So thap phan
dang Double.
1.7976931348623157308
2.2250738585072014E-308
WWW.HUUKHANG.COM
Float(M[,D])
So cham ong lu
di dang char.
----------------------------------------------
6.
oi vi kieu d lieu TimeStamp, ban co the nh dang nhieu cach nh trnh bay trong bang 8Bang 8-6: Trnh bay ai dien cua TimeStamp
---------------------------------------------Loai
Hien th
---------------------------------------------TimeStamp
YYYYMMDDHHMMSS
TimeStamp(14)
YYYYMMDDHHMMSS
TimeStamp(12)
YYMMDDHHMMSS
TimeStamp(10)
YYMMDDHHMM
TimeStamp(8)
YYYYMMDD
TimeStamp(6)
YYMMDD
TimeStamp(4)
YYMM
TimeStamp(2)
YY
----------------------------------------------
WWW.HUUKHANG.COM
Ngc lai vi kieu d lieu Char la Varchar, chieu dai ln hat ngi dung co the nhap vao bang
chieu dai ban a nh ngha cho Field nay, bo nh ch lu tr chieu dai ung vi chieu dai cua chuoi
ban a nhap.
Nh vay, co ngha la neu ban khai bao kieu varchar 10 ky t, nhng ban hc nhap 5 ky t,
MySQL ch lu tr chieu dai 5 ky t, ngoai ra, khi ban truy cap en Field co kieu d lieu nay, ban
khong can phai giai quyet khoang trang.
Loai th hai la Text hay Blob, Text cho phep lu chuoi rat ln, Blob cho phep lu oi tng nh
phan. Loai th 3 la Enum va Set. Ban co the tham khao ca ba loai tren trong bang 8-7.
Bang 8-7: Kieu d lieu String
---------------------------------------------Loai
Range
Dien giai
---------------------------------------------char
1-255
Chieu dai cua chuoi ln nhat
characters 255 ky t.
varchar
1-255
Chieu dai cua chuoi ln nhat
characters 255 ky t (characters).
tinyblob 28-1
tinytext 28-1
blob
216-1
text
216-1
Mediumblob
224-1
Mediumtext
224-1
Longblob
Longtext
232-1
232-1
WWW.HUUKHANG.COM
WWW.HUUKHANG.COM
Phat bieu SQL dang SELECT la mot trong nhng phat bieu yeu cau MySQL truy luc d lieu
tren c s d lieu ch nh. SELECT dung e oc thong tin t c s d lieu theo nhng trng quy
nh, hay nhng bieu thc cho trng o.
Menh e FROM ch ra ten mot bang hay nhng bang co quan he can truy van thong tin.
Thng chung ta s dung cong cu MySQL-Front | Query e thc thi phat bieu SQL.
Sau khi thc thi phat bieu SQL, ket qua tra ve so mau tin va tong so mau tin c lay ra t
bang.
Dau * cho phep loc mau tin vi tat ca cac trng trong bang, neu muon ch ro nhng trng nao
can loc ban can neu ten cu the nhng trng o.
e tien tham khao trong giao trnh nay chung toi s dung mot phan c s d lieu co san cua
MySQL, ong thi bo sung them c s d lieu danh cho ng dung ban hang qua mang.
C s d lieu ban hang qua mang co ten la Test, va bao gom nhieu bang. Bang phat bieu
SELECT chung ta co the biet so bang hay oi tng khac ang co trong c s d lieu Test
V du 8-2: Thc thi phat bieu SQL SELECT he thong
show tables
from Test
/* Hien th tat ca ten bang cua c s d lieu hien hanh */
Ghi chu:
Ban co the s dung phat bieu SQL tren e hien th nhng oi tng trong c s d lieu, bang cach thay
the cac tham so va ieu kien.
Cu phap n gian
Select *
From tablename
/* Loc tat ca so lieu cua tat ca cac cot (field) cua tablename*/
Select field1,field2
From tablename
/* Loc tat ca so lieu cua 2 field: field1, field2 cua tablename*/
Select *
From tablename
Limit 0,10
/* Loc top 10 mau tin au tien cua tat ca cac field cua tablename*/
Select field1, field2
From tablename
Limit 0,10
/* Loc top 10 mau tin au tien cua 2 fields field1, field2 cua
WWW.HUUKHANG.COM
tablename*/
Vi conditions trong ca hai phat bieu tren c nh ngha ieu kien truy van nh khai bao sau:
Select *
From tablename
where field1>10
select *
from tblCountries
where CountryCode in('VNA','CHN')
> :
< :
>= :
>= :
= :
ln hn
nho hn
ln hn hoac bang
nho hn hoac bang
bang
where
where
where
where
where
!= : Khac
<> : Khac
WWW.HUUKHANG.COM
where CustID!='12';
where CustID<>'12';
SELECT *
FROM tblOrders
Where Amount!>100000
And CustID='12';
Or
Not
SELECT *
FROM tblOrders
where OrderDate is not null;
Like : Phep toan so sanh gan giong, s dung dau % e the hien thay the bang ky t ai
dien
SELECT *
FROM tblCustomers
where CustName like '%A';
Not Like : Phep toan phu nh so sanh gan giong, s dung dau % e the hien thay the
bang ky t ai dien
SELECT *
FROM tblCustomers
where CustName not like '%A';
IN
WWW.HUUKHANG.COM
/* > : ln hn */
Select *
From tblOrders
Where Amount > 100000;
/* < : nho hn */
Select *
From tblOrders
Where Amount < 100000;
/* >= : ln hn hoac bang */
Select *
From tblOrders
Where Amount >= 100000;
/* >= : nho hn hoac bang */
Select *
From tblOrders
Where Amount <= 100000;
/* = : bang */
Select *
From tblOrders
Where CustID=12;
/* != :Khac */
Select *
From tblOrders
Where CustID !=12;
/* <> : Khac */
Select *
From tblOrders
Where CustID <>12;
/* !> : Khong ln hn */
Select *
From tblOrders
Where Amount !> 100000;
/* !< : Khong nho hn */
Select *
From tblOrders
Where Amount !< 100000;
: Phep toan va */
Select *
From tblOrders
WWW.HUUKHANG.COM
/* Not
Select *
From tblOrders
Where OrderDate is NOT NULL;
/* Between: gia tr nam trong mien */
Select *
From tblOrders
Where Amount
Between 10 and 500;
/* Like : Phep toan so sanh gan giong, s dung dau %
e the hien thay the bat ky ky t */
Select *
From tblOrders
Where Descriion like '%A'
Or CustID ='152';
/* Not Like : Phep toan phu nh so sanh gan giong,
s dung dau % e the hien thay the bat ky ky t */
Select *
From tblOrders
Where Descriion not like '%A'
Or CustID ='152';
/* IN : Phep toan so sanh trong mot tap hp */
Select *
From tblOrders
Where OrderID in ('134','244','433');
/* Not IN
Select *
From tblOrders
Where OrderID not in ('134','244','433');
WWW.HUUKHANG.COM
by
by
by
by
columnname DESC
columnname1 + columnname2 DESC
columnname ASC
columnname1 ASC, columnname2 DESC
2001-09-10
2001-09-11
2001-09-11
WWW.HUUKHANG.COM
13
16
12
466.500
186.782
459.162
Neu muon sap xep theo nhieu cot (trng), ch can s dung dau phay (,) e phan cach cac cot.
V du 8-7: SELECT vi menh e Order by vi 2 cot d lieu
Select OrderID , OrderDate, CustID, Amount
From tblOrders
Where Amount >1000
Order by OrderID,CustID DESC
Neu muon sap xep theo nhieu trng ket hp, ch can dung th t tng cot cach nhau bang dau
+.
V du 8-8: SELECT vi menh e Order by hp 2 cot
/*-- Giam dan theo so OrderID va CustID */
Select OrderID , OrderDate, CustID, Amount
From tblOrders
Where Amount >1000
Order by OrderID + CustID DESC
Neu trong phat bieu SQL dang SELECT co nhieu bang ket hp lai vi nhau, ban co the dung
them ten bang ng vi cot cua bang o. Phan nay se c dien giai cu the hn trong phan ke tiep
(JOIN -Phep hp).
WWW.HUUKHANG.COM
Trong bao cao chung ta lai can phai biet moi khach hang co bao nhieu lan tra tien, tong so tien
cua moi khach hang a tra la bao nhieu?
e lam ieu nay, chung ta s dung menh e GROUP BY trong phat bieu SQL dang SELECT
cung vi mot so ham trong MySQL, ban tham khao v du 8-10 c trnh bay chi tiet t v du 4-8
nhng nhom mau tin bang menh e Group By.
V du 8-10: SQL dang SELECT vi menh e Group By
Select CustID, count (CustID),
Sum(Amount)
From tblOrders
Group by CustID
Order by CustID
CustID
---------16
12
13
10
---7
9
8
4
WWW.HUUKHANG.COM
------------------2.956.562.368
3.843.022.604
145.913.378
72.382.804
Ham MIN: Ham tra ve gia tr nho nhat cua cot hay trng trong cau truy van, v du nh
phat bieu sau:
Select Min(Amount)
From tblOrders
Ham MAX: Ham tra ve gia tr ln nhat cua cot hay trng trong cau truy van, v du nh cac
phat bieu sau:
Select Max(Amount)
From tblOrders
Ham Count: Ham tra ve so lng mau tin trong cau truy van tren bang, v du nh cac phat
bieu sau:
Select count(*)
From tblOrders
Select count(CustID)
From tblOrders
Select count(*)
From tblOrderDetails
Ham Sum: Ham tra ve tong cac gia tr cua trng, cot trong cau truy van, v du nh cac phat
bieu sau:
Select sum(Amount)
From tblOrders
Chang han, ban co the tham khao dien giai toan bo cac ham dung trong menh e GROUP BY.
V du 8-11: SQL dang SELECT vi Group By va cac ham
Select CustID,
Count (CustID),Sum(Amount),
Max(Amount),
Min(Amount),
Avg(Amount)
From tblOrders
Group by CustID
WWW.HUUKHANG.COM
Order by CustID
7
9
8
4
2956562368
3843022604
145913378
72382804
1.95713899
39879489
1.36727628
48168567
26000
459162
230000
2903576
422366052
427002511
18239172.25
18095701
Ham Char: Ham nay chuyen oi kieu ma ASCII t so nguyen sang dang chuoi:
Select char(35)
Thu tuc LTRIM: Thu tuc loai bo khoang trang ben trai cua chuoi:
Select ltrim(' Khang')
WWW.HUUKHANG.COM
Thu tuc RTRIM: Thu tuc loai bo khoang trang ben phai cua chuoi:
Select ltrim('Khang ')
Ham Right: Ham tra ve chuoi ben phai tnh t cuoi cho en v tr th n:
Select Right('KHang',4)
Ham Instr: Ham tra ve v tr chuoi bat au cua chuoi con trong chuoi xet:
Select INSTR ('Khang','Pham Huu Khang')
Ham CurTime(): Ham tra ve gi, phut va giay hien hanh cua he thong:
Select curtime() as 'Time is
Ham Period_Diff: Ham tra ve so ngay trong khoang thi gian gia 2 ngay:
Select
Period_diff (OrderDate, getdate())
WWW.HUUKHANG.COM
Ngoai cac ham trnh bay nh tren, ban co the tm thay nhieu ham x ly ve thi gian trong
phan Funtions xuat hien ben phai man hnh cua trnh ieu khien nh hnh 8-6.
WWW.HUUKHANG.COM
Ham Round: Ham tra ve la so lam tron cua mot bieu thc:
Select round (748.58,-1)
e tham khao them mot so ham khac ban co the tham khao trong phan Functions nh hnh
8-9.
7
9
8
4
2956562368
3843022604
145913378
72382804
1.95713899
39879489
1.36727628
48168567
26000
459162
230000
2903576
422366052
427002511
18239172.25
18095701
WWW.HUUKHANG.COM
Select *
From tblOrders
Limit 0,10
Neu muon loc ra 10 hp ong co so tien nhieu nhat, ban ch can s dung sap xep theo cot
TotalAmount hay Amount trong bang tblOrders.
V du 8-13: Phat bieu SQL dang SELECT vi Limit N,M
Select OrderID,OrderDate,CustID,Amount
From tblOrders
Order by Amount Desc
Limit 0,10
Neu muon loc ra 10 san pham co so lng ban nhieu nhat, ban ch can s dung sap xep theo
cot so lng Qtty.
V du 8-14: Phat bieu SQL dang Select vi Limit N,M
Select ItemID,Qtty,Price,Amount
from tblOrderDetails
Where Amount>10
order by Qtty
Limit 0,10
1000
5000
6000
8000
8000
8000
9000
9000
9000
WWW.HUUKHANG.COM
12000
12000
12000
12000
12000
10000
12000
12000
12000
14400000
72000000
86400000
15200000
15200000
15200000
29600000
129600000
129600000
WWW.HUUKHANG.COM
Khi Insert d lieu vao bang, co 3 trng hp xay ra: insert d lieu vao bang t cac gia tr cu
the, insert vao bang lay gia tr t mot hay nhieu bang khac, va cuoi cung la ket hp ca hai trng
hp tren.
WWW.HUUKHANG.COM
WWW.HUUKHANG.COM
/* Co the viet lai them mau tin vi tat ca cac cot nh sau */
/* Chuyen tat ca nhng phieu thu trong thang 12 t bang tblOrders vao bang tblOrdersHist vi ieu kien
so cot tng ng trong bang tblOrders bang vi so cot trong bang tblOrdersHist, ban co the viet lai nh
sau */
INSERT INTO
TBLORDERDETAILSHIST(
ItemID,
OrderID,
No,
Qtty,
Price,
Discount,
Amount,TranferDate)
SELECT
ItemID,
WWW.HUUKHANG.COM
OrderID,
No,
Qtty,
Price,
Discount,
Amount,CurDate()
From tblOrderDetails
ORDER BY OrderID ASC
UPDATE co the anh hng en nhieu bang, nhng cap nhat gia tr ch co hieu lc tren bang
o, ban co the tham khao phan nay trong chng ke tiep JOIN TABLE.
Cap nhat gia tr cu the vao mot hay nhieu cot minh hoa trong v du 8-18 sau:
V du 8-18: UPDATE tren cac cot d lieu t gia tr cu the
/* cap nhat cot vi gia tr cu the */
Update tblCustomers
Set CustName='Cong ty TNHH Coca cola Vietnam'
Where CustID=12
/* cap nhat mot cot vi gia tr cot khac trong bang
tblOrderDetails*/
Update tblOrders
Set Amount= Amount*.01,
TotalAmount=Amount*0.1
Where Month(OrderDate)=12
/* cap nhat mot cot vi gia tr t bang khac*/
/* cap nhat cot Price vi gia tr t cot Cost cua bang tblItems, khai bao sau ch ung trong MySQL 4.1 tr
ve sau*/
Update tblOrderDetails
WWW.HUUKHANG.COM
Set Price=
(select distinct Cost]
from tblItems
where ItemID=tblOrderDetails.ItemID)
Where Price<1000
/* cap nhat mot cot vi gia tr cu the vi ieu kien t bang khac, , khai bao sau ch ung trong MySQL
4.1 tr ve sau */
Update tblOrderDetails
Set Price= Price*10,
Amount= Qtty*(Price+1)
Where ItemID in
(select distinct ItemID
from tblOrderDetails
where Price>1000)
Vi menh e WHERE giong nh bat ky menh e WHERE nao trong phat bieu SELECT hay
UPDATE va INSERT cua bat ky ng dung c s d lieu nao co s dung SQL.
Conditions co the la phep toan gia cac cot va gia tr, nhng cung co the gia tr la ket qua tra
ve t mot phat bieu SELECT khac.
Ghi chu: Khong co khai niem xoa gia tr trong mot cot, v xoa gia tr mot cot ong ngha vi
cap nhat cot o bang gia tr rong.
V du 8-19: Xoa mau tin vi phat bieu SQL dang DELETE
/* Xoa mau tin t bang vi ieu kien */
Delete from tblCustomers
Where CustName is null
Trong trng hp co rang buoc ve quan he cua d lieu, th xoa mau tin phai tuan thu theo quy
tac: Xoa mau tin con trc roi mi xoa mau tin cha.
Chang han, trong trng hp ta co 2 bang: hp ong ban hang (tblOrders) va hp ong ban
hang chi tiet (tblOrderDetails).
e xoa mot hp ong ban can xoa mau tin trong bang tblOrders trc roi mi en cac mau tin
trong bang tblOrderDetails.
V du 8-20: Xoa mau tin vi Delete
/* Xoa mau tin t bang con */
Delete from tblOrderDetails
where OrderID=123
/* Xoa mau tin t bang cha */
Delete from tblOrders
where OrderID=123
WWW.HUUKHANG.COM
Ban co the thc hien mot phat bieu SQL dang DELETE vi ieu kien trong menh e WHERE
lay gia tr tra ve t phat bieu SELECT t bang khac, khai bao nh vay ch co hieu lc trong c s d
lieu MySQL phien ban 8.1 tr ve sau hay trong c s d lieu SQL Server va Oracle.
V du 8-21: Xoa mau tin theo quy tac co rang buoc quan he
/* Xoa mau tin t bang vi ieu kien lay gia tr t bang khac */
Delete from tblOrderDetails
where ItemID in
(select ItemID
from tblItems
where ItemName like 'IT%')
WWW.HUUKHANG.COM
Customers
1-n
Orders
Items
1-n
1-n
Order
Details
S o 8-1: Mo hnh quan he
Gia s rang khi nhap so lieu vao c s d lieu, ng vi hp ong co ma 101, cua khach hang co
ten Nguyen Van A, ... co hai san pham chi tiet: 11 (Nc ngot) va 32 (xa phong Lux).
Trong trng hp nay ban ang co mot mau tin hp ong trong bang tblCustomers, mot mau
tin hp ong trong bang tblOrders va hai mau tin trong bang tblOrderDetails.
Neu muon biet thong tin hp ong cua khach hang A, ro rang ban can dung phat bieu SELECT
vi menh e ket hp t 3 bang tren. Ket qua tra ve 2 mau tin la s ket hp thong tin t hai bang
tblCustomers, tblOrders va tblOrderDetails.
Khi thc thi phat bieu SQL dang SELECT ng vi c s d lieu nh tren ban phai duyet qua
hai mau tin.
Tat nhien, khi viet ng dung th ieu nay chap nhan c, va co the coi la toi u. Gia s rang,
ng dung nay c phat trien tren WEB can lu tam en van e toi u toc o truy van th sao?
Ngi thiet ke c s d lieu trong trng hp nay phai thay oi lai cau truc e tang toc o truy
cap qua mang khi x ly tren c s d lieu cua ngi dung.
WWW.HUUKHANG.COM
Ban co the tm thay cac bang d lieu con lai trong d lieu Test trong a nh kem theo sach.
Neu ban can lay ra mot so cot trong cac bang co ket noi lai vi nhau bang menh e INNER
JOIN th cu phap nay viet lai nh sau:
SELECT [FIELD1,FIELD2, ...]
FROM <FIRST_TABLENAME>
INNER JOIN <SECOND_TABLENAME>
WWW.HUUKHANG.COM
ON <JOIN CONDITION>
WHERE <CRITERIANS>
ORDER BY <COLUMN LIST>
[ASC / DESC]
Neu ban can lay ra tat ca cac cot trong cac bang co ket noi lai vi nhau bang menh e INNER
JOIN, cu phap tren co the viet lai nh sau:
SELECT first_tablename.*,
second_tablename.*
[,next table name]
FROM <first_tablename>
INNER JOIN <second_tablename>
ON <join conditions>
[INNER JOIN <next_tablename>
ON <join conditions>]
WHERE <conditions>
ORDER BY <column list>
[ASC / DESC]
CustID
-----13
13
12
12
16
16
16
16
16
16
WWW.HUUKHANG.COM
CustName
.. OrderID ..TotalAmount
--------------------------------------Plaza Hotel
.. 11
..
576000000
Plaza Hotel
.. 15
..
288000000
Plaza Hotel
.. 12
. . 403200000
Plaza Hotel
.. 19
.. 86400000
CENTURY Hotel .. 13
.. 388800000
CENTURY Hotel .. 14
.. 518400000
CENTURY Hotel .. 16
.. 388800000
CENTURY Hotel .. 17
.. 14400000
CENTURY Hotel .. 18
.. 12960000
CENTURY Hotel .. 110 .. 216000000
Neu trong nhng bang can ket noi co ten trng (cot) giong nhau th khi thc thi phat bieu
SQL dang SELECT phai ch ro cot thuoc bang nao. Trong trng hp ca hai cung lay d lieu ra th
ban can chuyen anh xa ten khac cho cot thong qua menh e AS, v du nh:
SELECT first_tablename.CustID as CUSTID,
second_tablename.CustID as CUSTID
FROM <first_tablename>
INNER JOIN <second_tablename>
ON <join condition>
WHERE <criterians>
ORDER BY <column list>
[ASC / DESC]
Neu trong nhng bang can ket noi o co ten trng (cot) giong nhau va khong c ch ro nh
trng hp tren khi khai bao trong c s d lieu SQL Server, khi thc thi phat bieu SQL dang
SELECT ban se b loi, chang han nh:
SELECT first_tablename.*, second_tablename.*
FROM <first_tablename>
INNER JOIN <second_tablename>
ON <join condition>
WHERE <criterians>
ORDER BY <column list>
[ASC / DESC]
Tuy nhien, vi phat bieu tren ban co the thc thi trong c s d lieu MySQL. Ngoai ra, phat
bieu SQL dang SELECT s dung INNER JOIN ban co the anh xa (alias) ten cua bang thanh ten
ngan gon e de tham chieu ve sau.
Thc ra phat bieu ALIAS co y ngha giong nh AS vi ten cot trong bang thanh ten cot khac
trong phat bieu SELECT.
Select p.*,s.*
from tablename1
inner join tablename2
On tablename1.field1 = tablename2.field2
WWW.HUUKHANG.COM
Select c.CustName,
s.OrderID,s.OrderDate,
s.TotalAmount
from tblCustomer c
inner join tblOrders s
On c.CustID=s.CustID
where month (s.OrderDate) = 10
order by c.CustName DESC
13
2001-
Tat nhien, ban cung co the viet phat bieu tren ng vi tng cot muon lay ra bang cach khai bao
ten cot.
Chang han, ban chon ra tat ca cac san pham (vi cac cot) co hay khong co doanh so ban trong
thang hien tai. Mot so san pham khong ban trong thang se co cot Amount co cot Amount gia tr
NULL.
V du 8-26: SELECT dung LEFT JOIN
/* in ra danh sach san pham ban trong thang 10 */
select ItemID,ItemName,Amount
from tblItems
left join tblOrderDetails
on tblItems.ItemID=tblOrderDetails.ItemID
order by Amount
ASW-60VT
ASW-660T 120V TW 29340
ASW-685V 120V TW 29440
ASW60VP 220V 34571
ASW-45Z1T1
ASW-45Y1T 127V
ASW-45Y1T 220V
ASW-45Y1T 220V
ASW-45Z1T
WWW.HUUKHANG.COM
NULL
NULL
NULL
NULL
2960000
14400000
72000000
86400000
15200000
Trong v du sau, ban co the chon ra tat ca cac san pham co hay khong co doanh so ban trong
thang hien tai. Cac san pham khong ton tai doanh so ban se khong hien ra.
V du 8-27: SELECT dung RIGHT JOIN
/* in ra danh sach san pham ban trong thang ngay 17 */
/* trong phat bieu SELECT nay co s dung menh e
WHERE s dung phat bieu SELECT khac, ket qua cua SELECT trong menh e WHERE tra ve mot mang
OrderID */
Select ItemName,Qtty,
Price,Amount
From tblItems
Right join tblOrderDetails
On tblItems.ItemID=tblOrderDetails.ItemID
Where OrderID in (12,14,23,15)
Order by ItemID
WWW.HUUKHANG.COM
CustName
----------------New World Hotel
Kinh Do Hotel
CENTURY Hotel
PLAZA Hotel
e chon ra nhng khach hang vang lai trong tblTempCustomers, ket qua tra ve la danh sach
cac khach hang vang lai.
V du 8-29: Khach hang vang lai trong tblTempCustomers
Select CustID,CustName
from tblTempCustomers
CustName
--------------------------------Cong ty nuoc giai khat 12COLA
Cong ty nuoc giai khat PEPSI
Cong ty nuoc giai khat REDBULK
Cong ty nuoc giai khat TRIBICO
Neu dung phep toan UNION e ket noi hai bang tren, ket qua tra ve la danh sach ca hai loai
khach hang trong cung mot recordset.
V du 8-30: SELECT s dung phep hp UNION
Select CustID,CustName
From tblCustomers
UNION
Select CustID,CustName
From tblTempCustomers
CustName
WWW.HUUKHANG.COM
Ghi chu: Khi s dung phep toan Union trong phat bieu SQL dang Select, ban can lu y cac quy
nh sau:
Tat ca nhng truy van trong UNION phai cung so cot hay trng. Neu truy van th nhat co
hai cot th truy van th hai c s dung UNION cung phai co hai cot tng t.
Khi s dung UNION, nhng cot nao co ten cot hay b danh (alias) mi th ket qua tra ve se
co ta e (header) cua tng cot va ten la ten cot cua truy van th nhat.
Kieu d lieu trong cac cot cua truy van 2 tng thch vi kieu d lieu cac cot tng ng trong
truy van th nhat.
Trong UNION ban co the ket hp nhieu cau truy van lai vi nhau.
Ket qua hien ra theo th t cua truy van t di len tren.
Cu phap ay u cua phat bieu tao c s d lieu nh sau, neu ban s dung c s d lieu SQL
Server:
CREATE DATABASE <database_name>
[ ON [PRIMARY] (
[Name= <'Logical file name'>,]
FileName=<'File Name'>
[, SIZE=<Size in Megabyte or KiloByte> ]
[, MAXSIZE=<Size in Megabyte or KiloByte> ][, FILEGROWTH = <No of
Kylobyte|Percentage>]
)]
WWW.HUUKHANG.COM
[ LOG ON
(
[Name= <'Logical file name'>,]
FileName=<'File Name'>
[, SIZE=<Size in Megabyte or KiloByte> ]
[, MAXSIZE=<Size in Megabyte or KiloByte> ][, FILEGROWTH = <No of
Kylobyte|Percentage>]
)]
[COLLATE <Collation Name>]
[For Load | For Attach]
WWW.HUUKHANG.COM
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'Testlog',
FILENAME = 'c:\mssql7\data\Testlog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
e n gian hoa cac oi tng Table trong c s d lieu Test, chung toi ch trnh bay mot vai
phat bieu SQL dang Create Table, cac Table khac ban co the tm thay trong c s d lieu nh kem.
V du 8-32: Tao mot so bang trong Test
/* Tao bang danh sach khach hang thng xuyen */
CREATE TABLE tblcustomers (
CustID int(3) unsigned NOT NULL auto_increment,
Username varchar(20) NOT NULL DEFAULT '' ,
Password varchar(10) NOT NULL DEFAULT '' ,
CustName varchar(50) ,
Address varchar(100) ,
Tel varchar(20) ,
FaxNo varchar(10) ,
Email varchar(50) ,
Contact varchar(50) ,
CountryCode char(3) ,
ProvinceCode char(3) ,
PRIMARY KEY (CustID),
INDEX CustID (CustID)
);
/* Tao bang hp ong mua hang qua mang */
CREATE TABLE tblorders (
OrderID int(3) NOT NULL auto_increment,
OrderDate date ,
CustID int(11) ,
Description varchar(100) DEFAULT '0' ,
TranID tinyint(3) DEFAULT '0' ,
PaymentID tinyint(3) DEFAULT '0' ,
Amount float DEFAULT '0' ,
ShipCost float DEFAULT '0' ,
TotalAmount float DEFAULT '0' ,
PRIMARY KEY (OrderID),
INDEX OrderID (OrderID)
);
/* Tao bang hp ong chi tiet mua hang qua mang */
CREATE TABLE tblorderdetails (
ItemID int(3) unsigned DEFAULT '0' ,
OrderID int(3) unsigned DEFAULT '0' ,
No tinyint(3) unsigned DEFAULT '0' ,
Qtty int(3) unsigned DEFAULT '0' ,
Price int(3) unsigned DEFAULT '0' ,
Discount int(3) unsigned DEFAULT '0' ,
Amount bigint(3) unsigned DEFAULT '0'
);
WWW.HUUKHANG.COM
WWW.HUUKHANG.COM
Neu cot o la ngay thang chung ta co gia tr mac nh la ngay nao o (nh 0000-00-00 la
CurDate())
Neu cot o co gia tr la 0 hoac 1, ban co the khai bao gia tr mac nh la 0 hoac 1
Neu cot o la chuoi chung ta co gia tr mac nh nh la 'A'
Khi s dung auto_increment lam so tang t ong th kieu d lieu la so nguyen hoac so nguyen
Trong trng hp, ban khai bao so t ong trong SQL Server, ban can phai khai bao them cac
thong so nh seed. Seed la gia tr khi au khi SQL Server t ong tang gia tr, Increament la bc
tang, no cho biet moi lan tang can bao nhieu gia tr.
V du khi tao auto_increment cho cot ItemID [Int] auto_increment, ngha la bat au so 1 va moi
lan tang 1 so. Ket qua ban se co la 1,2,3,4, ...n.
Trong phat bieu SQL cua MySQL, e tao bang co ga tr tang t ong ban ch can khai bao ten
cot, kieu d lieu Int (Integer) va auto_increment nh sau:
IDNO Int auto_increment NOT NULL
Trong giao dien o hoa ban ch can check vao tuy chon AutoIncreament nh hnh 8-10.
WWW.HUUKHANG.COM
Khi mot bang ton tai trong c s d lieu, do nhu cau can thiet phai thay oi cau truc bang, ban
s dung phat bieu ALTER TABLE cung cac tham so cua chung nh cu phap sau:
ALTER TABLE table alteration [,alteration]
Chang han, ban co the s dung phat bieu ALTER TABLE e them mot cot ten Activate vi
kieu d lieu TinyInt co gia tr mac nh la 1.
V du 8-33: Them mot cot ten Activate vao bang tblOrders
ALTER TABLE tblorders
ADD Activate TINYINT DEFAULT "1"
Khi thay oi thiet lap gia tr mac nh cho cot ban nen quan tam en gia tr mac nh o co
phu hp cho nhng mau tin ang ton tai hay khong.
Muon thay oi gia tr mac nh cua cot cho nhng mau tin ang ton tai, ban s dung en menh
e phu nh trong v du sau:
Thay oi kieu d lieu t Date dang DateTime, ban co the khai bao nh v du 4-35 sau:
V du 8-35: Thay oi kieu d lieu
ALTER TABLE tblorders
CHANGE OrderDate
OrderDate DATE
DEFAULT "0000-00-00 00:00:00"
WWW.HUUKHANG.COM
Mac khac, ban cung co the tao hay thay oi bang trong man hnh MySQL-Front. Ch can chon
ngan Database | R-Click | Create New Table, ca so xuat hien nh hnh 8-11.
Ngoai ra, ban cung co the dung MySQl-Front e xoa bang hay cac oi tng Table trong c s
d lieu ch nh. Neu chon nhieu bang cung mot luc ban s dung phm Control hay Shift nh sau:
WWW.HUUKHANG.COM
WWW.HUUKHANG.COM
Trong chng nay, chung toi a gii thieu vi ban hau het cac phat bieu SQL thuoc loai nh
ngha c s d lieu, thao tac d lieu nh Select, Insert, Delete va Update.
Phat bieu SQL dang Select vi cac menh e nh JOIN cung phep toan gia hai hay nhieu bang
trong phat bieu SQL dang SELECT.
Ngoai ra, chung toi cung trnh bay hai loai phat bieu SQL dang nh ngha va thay o c s d
lieu tao nh CREATE va ALTER, DROP.
PHP VA DATABASE
9-1
Trong o khai bao sau la ket noi c s d lieu mySQL vi ten server/ip cung vi username va
password:
mysql_connect ("localhost", "root", "")
Va mysql_select_db("TestDB", $link); e chon ten c s d lieu sau khi m ket noi c s d lieu, neu
bien $link co gia tr la false th ket noi c s d lieu khong thanh cong.
Sau khi m ket noi c s d lieu ma khong s dung th ban co the ong ket noi c s d lieu vi cu
phap nh sau:
mysql_close($link);
Chang han, ban khai bao trang connection.php e ket noi c s d lieu va ong ket noi ngay
sau khi m thanh cong.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
<BODY>
Mo va dong ket noi CSDL MySQL
<?php
$link = mysql_connect ("localhost", "root", "")
or die ("Could not connect to MySQL Database");
mysql_select_db("InterShop", $link);
mysql_close($link);
WWW.HUUKHANG.COM
PHP VA DATABASE
?>
</BODY>
</HTML>
9-2
?>
So mau tin them vao<?= $affectrow?>
</BODY>
</HTML>
Trong o, ban s dung ham mysql_query vi hai tham so la $sql va $link. Ket qua tra ve la so
mau tin thc thi. Ngoai ra, ban co the s dung oan ket noi c s d lieu trong tap tin dbcon.php nh
v du sau:
<?php
$link = mysql_connect ("localhost", "root", "")
or die ("Could not connect to MySQL Database");
mysql_select_db("Test", $link);
?>
Trong trng hp cho phep ngi s dung them mau tin th ban thiet ke form yeu cau ngi s
dung nhap hai gia tr sau o submit en trang ke tiep e thc thi viec them gt sau o submit en
trang ke tiep e thc thi viec them gia tr va nhap vao c s d lieu nh hnh 9-1.
WWW.HUUKHANG.COM
PHP VA DATABASE
9-3
sau:
Ke en khai bao the form va hai the input lai text yeu cau ngi s dung nnap ID va Name nh
<form name="frmPHP" method="post"
action="doinsert.php"
onsubmit="return checkInput();">
<tr>
<td align="left" class="content-sm"><b>
Please enter ID and Name
</b></td>
</tr>
<tr>
<td align="left" >ID:</td>
</tr>
<tr>
<td align="left">
<input type="text" name="txtID"
size="25" maxlength="3" class="textbox">
</td>
WWW.HUUKHANG.COM
PHP VA DATABASE
</tr>
<tr>
<td align="left" >Name:</td>
</tr>
<tr>
<td align="left" >
<input type="text" name="txtName"
size="25" maxlength="50" class="textbox">
</td>
</tr>
<tr>
<td align="left" valign="top"> <br>
<input type="submit"
value="Submit" class="button">
<input type="reset" value="Reset" class="button">
</td>
</tr>
</form>
9-4
Lu y rang, ban khai bao so ky t ln nhat cho phep nhap bang vi kch thc a khai bao
trong c s d lieu ng vi thuoc tnh maxlength.
Khi ngi s dung nhap hai gia tr va nhan nut submit, trang ke tiep c trieu goi. Trang nay
lay gia tr nhap bang cach s dung bien form hay $HTTP_POST_VARS. oi vi trng hp nay
chung ta s dung bien form nh trang doinsert.php.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
<BODY>
<h3>Them mau tin</h3>
<?php
$affectrow=0;
require("dbcon.php");
$sql="insert into tblships(ShipID,ShipName) ";
$sql .=" values('".$txtID."','".$txtName."')";
$result = mysql_query($sql,$link);
if($result)
$affectrow=mysql_affected_rows();
mysql_close($link);
?>
So mau tin them vao<?= $affectrow?>
</BODY>
</HTML>
WWW.HUUKHANG.COM
PHP VA DATABASE
$affectrow=mysql_affected_rows();
mysql_close($link);
?>
So mau tin cap nhat <?= $affectrow?>
</BODY>
</HTML>
9-5
Lu y rang, e biet so mau tin a thc thi bi phat bieu SQL ban s dung ham
mysql_affected_rows.
if($result)
$affectrow=mysql_affected_rows();
Tng t nh tren, ban co the thiet ke form cho phep ngi s dung cap nhat d lieu bang cach
thiet ke form yeu cau ngi s dung nhap ma va ten cap nhan.
Trc tien thiet ke from cho phep nhap d lieu e cap nhat nh v du trang capnhat.php, sau
khi hoc phan truy van xong, thaqy v nhap ma ban cho phep ngi s dung chon trong danh sach a
co nh hnh 9-2.
WWW.HUUKHANG.COM
PHP VA DATABASE
So mau tin cap nhat <?= $affectrow?>
</BODY>
</HTML>
9-6
?>
So mau tin da xoa <?= $affectrow?>
</BODY>
</HTML>
oi vi trng hp xoa th n gian hn, ban ch can biet c ma can xoa, chnh v vay trong
trng hp nay chung ta ch can thiet ke trang cho phep nhap ma nh hnh 9-3.
WWW.HUUKHANG.COM
PHP VA DATABASE
<BODY>
<h3>Xoa mau tin</h3>
<?php
$affectrow=0;
require("dbcon.php");
$sql="delete from tblships ";
$sql .=" where ShipID='".$txtID."'";
$result = mysql_query($sql,$link);
if($result)
$affectrow=mysql_affected_rows();
mysql_close($link);
?>
So mau tin xoa <?= $affectrow?>
</BODY>
</HTML>
9-7
WWW.HUUKHANG.COM
PHP VA DATABASE
?>
<tr valign="top">
<td>
<?=$row["ShipID"]?> </td>
<td ><?=$row["ShipName"]?></td>
</tr>
9-8
Trong trng hp so mau tin tra ve la 0 th in ra cau thong bao khong tm thay nh sau:
<?php
}
}else{
?>
<tr valign="top">
<td > </td>
<td > <b><font face="Arial" color="#FF0000">
Oop! Ship not found!</font></b></td>
</tr>
<?php
?>
6. KET LUAN
Trong bai nay, chung ta tap trung tm hieu cach ket noi c s d lieu, them, xoa cap nhat va
liet ke mau tin. Trong bai ke tiep chung ta tm hieu nhieu cac trnh bay d lieu, xoa mau tin theo
dang mang.
WWW.HUUKHANG.COM
PHP VA DATABASE
9-1
Trong bai trc chung ta a lam quen vi cach xoa mau tin trong c
s d lieu mySQL. oi vi trng hp xoa mot luc nhieu mau tin, chung ta
phai xay dng trang PHP co s dung the input dang checkbox.
Nhng van e chnh se c e cap trong bai hoc nay
9 Liet ke d lieu dang danh sach
9 Xoa nhieu mau tin
9 Cap nhat nhieu mau tin
1. LIET KE D LIEU
e xoa nhieu mau tin cung mot luc, trc tien ban khai bao trang PHP e liet ke danh sach mau
tin trong mang d lieu chang han, moi mau tin xuat hien mot checkbox tng ng. Checkbox nay
co gia tr la ma nhan dang cua mau tin o. Trong trng hp nay chung ta dung cot khoa cua
ma chuyen hang (SubCateID) trong bang tblSubCategories nh ngha trong trang lietke.php nh
hnh 10-1.
WWW.HUUKHANG.COM
PHP VA DATABASE
9-2
Cho biet ban submit t trang nao va loai xoa nhieu mau tin hay mot mau tin oi vi bang tng
ng. Muc ch cua van e nay la trang delete s dung chung cho nhieu bang khac nhau va t trang
liet ke (xoa nhieu) hoac t trang edit (1 mau tin cu the).
Ngoai ra, chung ta khai bao <input type=hidden name=chon value=""> e nhan gia tr chon tren
cach checkbox bang cach khai bao oan javascript nh sau:
<script>
function calculatechon()
WWW.HUUKHANG.COM
PHP VA DATABASE
{
var strchon="";
var alen=document.frmList.elements.length;
var buttons=1;
9-3
alen=(alen>buttons)?document.frmList.chkid.length:0;
if (alen>0)
{
for(var i=0;i<alen;i++)
if(document.frmList.chkid[i].checked==true)
strchon+=document.frmList.chkid[i].value+",";
}else
{
if(document.frmList.chkid.checked==true)
strchon=document.frmList.chkid.value;
}
document.frmList.chon.value=strchon;
return isok();
</script>
Tuy nhien, do nhieu loai san pham thuoc cac nhom san pham khac nhau, chnh v vay ban khai bao
danh sach nhom san pham tren the select cho phep ngi s dung liet ke sach theo nhom san
pham nh hnh 10-2.
WWW.HUUKHANG.COM
PHP VA DATABASE
function optionselected($stSQL,$item,$links)
{
$results = mysql_query($stSQL, $links);
$totalRows=mysql_num_rows($results);
$strOption="<option value=\"\" selected>";
$strOption .="--Select--</option>";
if($totalRows>0)
{
while ($row = mysql_fetch_array ($results))
{
$strOption .="<option value=\"" ;
$strOption .=$row["ID"]."\"";
if($row["ID"]==$item)
$strOption .=" selected ";
$strOption .= ">".$row["Name"];
$strOption .="</option>";
}
}
return $strOption;
}
9-4
Lan au tien ban co the chon mac nh mot nhom hoac liet ke tat ca, khi ngi s dung chon nhom
san pham nao o th trang lietketheonhom.php se liet ke danh sach loai sach cua nhom sach o.
e lam ieu nay, ban khai bao the form vi the select nh v du 10-4.
<form name=frmMain method=post>
<tr>
<td align=left colspan=4>
Category: <select name=cateid onchange="document.frmMain.submit();">
<?=$strOption?>
</select></td>
<td align=right> </td>
</tr>
</form>
Khi ngi s dung chon cac mau tin nh hnh 10-2 va nhan nut Delete, da vao gia tr cua nut co
ten action (trong trng hp nay la Delete), ban co the khai bao bien e lay gia tr chon bang cach
khai bao nh v du 10-5.
$strid=$chon;
WWW.HUUKHANG.COM
PHP VA DATABASE
$strid=str_replace(",","','",$strid);
9-5
Da vao the hidden khai bao trong cac trang trnh bay danh sach (chang an lietketheonhom.php)
mau tin nh sau:
<input name="from" type=hidden value="subcategories">
Ban co the biet t trang nao goi en trang dodelete.php e quay tr ve khi thc hien xong tac vu x
ly.
Ngoai ra, da vao gia tr cua nut action e thc hien phat bieu SQL. Chang han, trong trng hp
nay neu ngi s dung nhan hut Delete th ban khai bao nh v du 10-6 sau:
switch($strfrom)
{
case "subcategories":
$stSQL ="delete from tblsubcategories where SubCateID in('".$strid."')";
$strlocation="Location:lietketheonhom.php";
break;
case "categories":
$stSQL ="delete from tblcategories where CateID in('".$strid."')";
$strlocation="Location:nhom.php";
break;
}
Sau o, ban co the thc thi phat bieu SQL va khai bao tren nh v du 10-7.
if($stSQL!="")
{
$result = mysql_query($stSQL, $link);
}
Lu y rang, ban cung nen khai bao try catch trong khi lam viec vi c s d lieu. Ngoai ra, ban
cung phai xac nhan trc khi thc thi hanh ong xoa mau tin chon bang cach khai bao oan
Javascript nh sau:
<script>
function isok()
{
return confirm('Are you sure to delete?');
}
</script>
WWW.HUUKHANG.COM
PHP VA DATABASE
9-6
Hnh 10-3: Liet ke danh sach san pham duyet hay cha
Tng t nh trong trng hp delete, ban khai bao trang doUpdate nh sau:
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
<BODY>
<h3>Cap nhat mau tin</h3>
<?php
require("dbcon.php");
$strid=$chon;
$strid=str_replace(",","','",$strid);
$strfrom="";
if(isset($from_))
{
$strfrom=$HTTP_POST_VARS{"from_"};
}
$strtype="";
if(isset($type))
{
$strtype=$HTTP_POST_VARS{"type"};
}
$stSQL="";
if($strfrom<>"")
{
switch($strfrom)
{
case "items":
$stSQL ="update tblItems set Activate=1 where ItemID
in('".$strid."')";
WWW.HUUKHANG.COM
PHP VA DATABASE
break;
}
if($stSQL!="")
{
$result = mysql_query($stSQL, $link);
if($result)
$affectrow=mysql_affected_rows();
mysql_close($link);
}
}
?>
So mau tin cap nhat <?= $affectrow?>
</BODY>
</HTML>
9-7
3. KET LUAN
Trong bai nay, chung ta tm hieu chc nang xoa, cap nhat nhieu mau tin bang cach s dung the
input loai checkbox cung ten va khac gia tr, bai ke tiep chung ta tiep tuc tm hieu ve chc nang
ang nhap trong PHP.
WWW.HUUKHANG.COM