SlideShare a Scribd company logo
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moân hoïc: PHP
Baøi 1
Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc:
Giôùi thieäu PHP
Caáu hình IIS, Apache Web Server
Caøi ñaët PHP.
o Caøi ñaët PHP.
o Caáu hình öùng duïng PHP
Giôùi thieäu PHP.
o PHP Script.
o Ghi chuù trong PHP
o In noäi dung baèng PHP
1. GIÔÙI THIEÄU PHP
PHP vieát taét cuûa chöõ Personal Home Page ra ñôøi naêm 1994 do phaùt minh cuûa
Rasmus Lerdorf, vaø noù tieáp tuïc ñöôïc phaùt trieån bôûi nhieàu caù nhaân vaø taäp theå khaùc, do ñoù
PHP ñöôïc xem nhö moät saûn phaåm cuûa maõ nguoàn môû.
PHP laø kòch baûn trình chuû (server script) chaïy treân phía server (server side) nhö
caùch server script khaùc (asp, jsp, cold fusion).
PHP laø kòch baûn cho pheùp chuùng ta xaây döïng öùng duïng web treân maïng internet hay
intranet töông taùc vôùi moïi cô sôû döõ lieäu nhö mySQL, PostgreSQL, Oracle, SQL Server vaø
Access.
Löu yù raèng, töø phieân baûn 4.0 trôû veà sau môùi hoã trôï session, ngoaøi ra PHP cuõng nhö
Perl laø kòch baûng xöû lyù chuoãi raát maïnh chính vì vaäy baïn coù theå söû duïng PHP trong nhöõng
coù yeâu caàu veà xöû lyù chuoãi.
2. CAØI ÑAËT PHP
Caøi ñaët PHP treân neàn Windows thì söû duïng php-4.0.6-Win32.zip, sau khi caøi ñaët
öùng duïng naøy treân ñóa cöùng seõ xuaát hieän thö muïc PHP, trong thöï muïc naøy seõ coù taäp tin
php4ts.dll vaø php.exe cuøng vôùi thö muïc sessiondata.
Ngoaøi ra, trong thö muïc WINDOW hoaëc WINNT seõ xuaát hieän taäp tin php.ini, taäp
tin naøy cho pheùp baïn caáu hình cho öùng duïng PHP. Chaúng haïn, khi söû duïng session, PHP
caàn moät nôi ñeå löu tröõ chuùng, trong taäp tin naøy maëc ñònh laø session.save_path =
C:PHPsessiondata, neáu baïn caøi ñaët PHP vôùi thö muïc PHP treân ñóa D thì baïn caàn thay
ñoåi ñöôøng daãn trong khai baùo naøy.
Töông töï nhö vaäy, khi coù loãi trong trangPHP thì loãi thöôøng xuaát hieän khi trieäu goïi
chuùng, ñeå che daáu caùc loãi naøy thì baïn caàn khai baùo display_errors = Off thay vì chuùng ôû
traïng thaùi display_errors = On.
Ngoaøi ra, trang PHP cuõng coù theå trình baøy moät soá warning khi chuùng phaùt hieän cuù
phaùp khoâng hôïp lyù, chính vì vaäy ñeå che daáu caùc warning naøy thì baïn cuõng caàn khai baùo
traïng thaùi Off thay vì On nhö assert.warning = Off.
3. CAÁU HÌNH ÖÙNG DUÏNG PHP
3.1. Caáu hình IIS
Sau khi caøi ñaët heä ñieàu haønh Windows NT hay 2000 trôû veà sau, baèng caùch khai baùo
môùi moät web site hay virtual site trong moät site ñang coù theo caùc böôùc nhö sau:
1. Taïo moät thö muïc coù teân myPHP ñeà löu tröõ caùc taäp tin PHP
2. Khôûi ñoäng IIS (töï ñoäng khôûi ñoäng neáu Windows NT/2000)
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
3. Choïn Start | Programs | Administrative Tools | Internet Information Server
4. Neáu taïo virtual site thì choïn Default Web Ste | R-Click | New | Virtual Site
5. Trong tröôøng hôïp taïo môùi Site thì Default Web Ste | R-Click | New | Site
6. Neáu choïn tröôøng hôïp 4 thì baïn cung taáp dieãn giaûi cuûa site nhö hình 1-1
Hình 1-1: Khai baùo dieãn giaûi
7. Choïn nuùt Next vaø khai baùo IP vaø port, trong tröôøng hôïp baïn khoâng söû duïng port
80 cho öùng site khaùc thì choïn giaù trò maëc ñònh. Tuy nhieân neáu coù nhieàu öùng
duïng tröôùc ñoù ñaõ caáu hình trong IIS thì baïn coù theå thay ñoåi port khaùc, ví duï
choïn port 85 nhö hình 1-2.
Hình 1-2: Khai baùo IP vaø Port
Löu yù raèng, port 80 laø port chuaån ñieàu naøy coù nghóa laø khi trieäu goïi treân trình
duyeät baïn khoâng caàn goõ port, ví duï http://localhost/. Ñoái vôùi tröôøng hôïp port khaùc thì baïn
phaûi goõ töông töï nhö http://localhost:85/
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
8. Choïn Next, baïn choïn thö muïc cuûa öùng duïng, ñoái vôùi tröôøng hôïp naøy chuùng ta
choïn vaøo thö muïc myPHP, chaúng haïn trong tröôøng hôïp naøy chuùng ta choïn htö
muïc myPHP nhö hình 1-3.
Hình 1-3: Choïn thö muïc myPHP
9. Keá ñeán choïn quyeàn truy caäp web site, trong tröôøng hôïp ñang thieát keá thì baïn
choïn vaøo Browse. Ngoaøi ra, neáu baïn cho pheùp ngöôøi söû duïng internet coù theå
thöïc thi taäp tin thöïc thi töø xa thì choïn vaøo tuyø choïn execute.
Hình 1-4: Quyeàn truy caäp
10.Choïn Next vaø Finish, trong cöûa soå IIS xuaát hieän öùng duïng coù teân myPHP (khai
baùo trong phaàn dieãn giaûi) nhö hình 1-5.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 1-5: Taïo thaønh coâng öùng duïng PHP trong IIS
11.Sau khi taïo öùng duïng xong, baïn choïn teân öùng duïng myPHP | R-Click }
Properties | cöûa soå xuaát hieän nhö hình 1-5.
Hình 1-5: Caáu hình PHP trong IIS
12.Baèng caùch choïn vaøo nuùt Configuration, cöûa soå seõ xuaát hieän nhö hình 1-6.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 1-6: Theâm PHP Engine
13.Choïn nuùt Add, vaø khai baùo nhö hình 1-7.
Hình 1-7: Khai baùo PHP Engine
14.Ñeå kieåm tra uùng duïng, baïn môû cöûa soå IE vaø goõ treân thanh ñòa chæ chuoãi nhö sau:
http://localhost:85/ , keát quaû xuaát hieän nhö hình 1-8.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 1-8: ÖÙng duïng PHP ñaõ ñöôïc khôûi ñoäng
3.2.
4.
Caøi ñaët Apache Web Servr
Ñeå caøi ñaët Apache Web Server, baïn theo caùc böôùc sau
1. Chep tap tin apache_1.3.22-win32-x86.exe xuong dia cung
2. Chay tap tin nay va cai dat len dia C:Program Files, sau khi ket thuc thanh
cong phan cai dat Apache, baïn baét ñaàu caáu hình öùng duïng PHP.
3. Cheùp ba doøng leänh töø taäp tin install.txt trong thö muïc C:PHP
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe"
4. Paste vaøo taäp tin httpd.conf trong thö muïc C:Program FilesApache
GroupApacheConf
5. Chon Start | Programs | Apache HTTP Server | Control Apache Server | Start
6. Viet trang test.php voi noi dung <?echo "hello";?>
7. Chep tap tin test.php vao thu muc C:Program FilesApache
GroupApachehtdocs
8. Sau ñoù goõ treân trình duyeät http://localhost/test.php
GIÔÙI THIEÄU PHP
4.1. Yeâu caàu
PHP döïa treân cuù phaùp cuûa ngoân ngöõ laäp trình C, chính vì vaäy khi laøm vieäc vôùi PHP
baïn phaûi laø ngöôøi coù kieán thöùc veà ngoân ngöõ C, C++, Visual C. Neáu baïn xaây döïng öùng
duïng PHP coù keát noái cô sôû döõ lieäu thì kieán thöùc veà cô sôû döõ lieäu MySQL, SQL Server hay
Oracle laø ñieàu caàn thieát.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
4.2.
4.3.
4.4.
Giôùi thieäu
PHP laø kòch baûn trình chuû (Server Script) ñöôïc chaïy treân neàn PHP Engine, cuøng
vôùi öùng duïng Web Server ñeå quaûn lyù chuùng. Web Server thöôøng söû duïng laø IIS, Apache
Web Server, ...
Thoâng dòch trang PHP
Khi ngöôøi söû duïng goïi trang PHP, Web Server trieäu goïi PHP Engine ñeå thoâng dòch
(töông töï nhö ASP 3.0 chæ thoâng dòch chöù khoâng phaûi bieân dòch) dòch trang PHP vaø traû veà
keát quaû cho ngöôøi söû duïng nhö hình 1-9.
Hình 1-9: Quaù trình thoâng dòch trang PHP
Taäp tin
PHP
Web
Server
PHP
Engine
P
Parse
Response
Request
Parse
Request
Response
Kòch baûn (script)
Noäi dung cuûa PHP coù theå khai baùo laãn loän vôùi HTML, chính vì vaäy baïn söû duïng caëp
daáu giaù <?=trò/bieåu thöùc/bieán?> ñeå khai baùo maõ PHP. Chaúng haïn, chuùng ta khai baùo:
<br>
1-Giaù trò bieán Str: <?=$groupid?>
2-Giaù trò bieán i: <?=$i?>
3-Giaù trò cuõ theå: <?=10?>
Chaúng haïn baïn khai baùo trang hello.php vôùi noäi 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>
Keát quaû traû veà nhö hình 1-10 khi trieäu goïi trang naøy treân trình duyeät.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 1-10: Keát quaû trang hello.php
Trong tröôøng hôïp coù nhieàu khai baùo, baïn söû duïng Scriptlet, ñeàu naøy coù nghóa laø söû
duïng caëp daáu treân nhö <?php Khai baùo ?> vôùi caùc khai baùo PHP vôùi cuù phaùp cuûa C nhö
sau:
<?php
$sotrang=$pagenumber;
$record=$rownumber;
$totalRows = 0;
$paging="";
?>
-Khai baùo treân laø Scriptlet
Giaù trò cuûa paging: <br>
<?= $paging ?>
-Khai baùo naøy laø Script
Löu yù raèng, keát thuùc moãi caâu leänh phaûi duøng daáu ;
Ví duï, baïn khai baùo ñoaïn PHP treân trong taäp tin script.php nhö ví duï 1-2
Ví duï 1-2: Trang script.php
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<?php
$sotrang=$pagenumber;
$record=$rownumber;
$totalRows = 0;
$paging="Go to 1 2 3 4 5 Next";
?>
Giaù trò cuûa paging: <?= $paging ?>
</BODY>
</HTML>
Keát quaû traû veà nhö hình 1-11 khi trieäu goïi trang naøy treân trình duyeät.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 1-11: Keát quaû trang hello.php
Löu yù raèng, neáu baïn muoán söû duïng script hay scriptlet nhö ASP thì baïn khai baùo
trong taäp tin php.ini nhö sau:
asp_tags = On
; Allow ASP-style <% %> tags. maëc ñònh laø Off
Khi ñoù trong trang PHP, thay vì baïn khai baùo
<?php
$sotrang=$pagenumber;
$record=$rownumber;
$totalRows = 0;
$paging="";
?>
Thì baïn coù theå khai baùo nhö sau:
<%
$sotrang=$pagenumber;
$record=$rownumber;
$totalRows = 0;
$paging="";
%>
4.5. Ghi chuù trong PHP
Ghi chuù trong kòch baûn PHP töông töï ngoân ngöõ laäp trình C, ñeå ghi chuù moät doøng
thì baïn söû duïng caëp daáu /. Chaúng haïn khai baùo sau laø ghi chuù:
<?php
// Khai baùo bieán ñeå paging
$sotrang=$pagenumber;
$record=$rownumber;
$totalRows = 0;
$paging="";
?>
Trong tröôøng hôïp coù nhieàu doøng caàn ghi chuù baïn söû duïng caëp daáu /* vaø */, ví duï
khai baùo ghi chuù nhö sau:
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
/*
Khai baùo bieán ñeå ñoïc döõ lieäu
trong ñoù totalRows laø bieán traû
veà toång soá maåu tin
*/
$result = mysql_query($stSQL, $link);
$totalRows=mysql_num_rows($result);
Ngoaøi ra, baïn cuõng coù theå söû duïng daáu # ñeå khai baùo ghi chuù cho töøng doøng, ví duï
khai baùo sau laø ghi chuù:
<?php
# Khai baùo bieán ñeå paging
$sotrang=$pagenumber;
$record=$rownumber;
$totalRows = 0;
$paging="";
?>
4.6. In keát quaû treân trang PHP
Khaùc vôù caùc kòch baûn nhö ASP, JSP, Perl, ñoái vôùi PHP ñeå in ra giaù trò töø bieán, bieåu
thöùc, haøm, giaù trò cuï theå thæ baïn coù theå söû duïng script nhö treân:
Giaù trò cuûa paging: <%= $paging %>
Tuy nhieân, ñeå söû duïng cuù phaùp cuûa PHP khi in ra giaù trò töø bieán, bieåu thöùc, haøm,
giaù trò cuï theå thì söû duïng khai baùo echo nhö sau:
<?php
$stSQLs=”select * from Customers”;
echo $stSQLs;
?>
Chaúng haïn, khai baùo echo nhö ví duï 1-3.
Ví duï 1-2: Trang echo.php
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<?php
$sotrang=$pagenumber;
$record=$rownumber;
$totalRows = 0;
$paging="Go to 1 2 3 4 5 Next";
/*duøng phaùt bieåu echo */
echo “Giaù trò cuûa paging: “;
echo $paging;
?>
</BODY>
</HTML>
Keát quaû traû veà nhö hình 1-12 khi trieäu goïi trang naøy treân trình duyeät.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 1-11: Keát quaû trang hello.php
5. KEÁT LUAÄN
Trong baøi naøy, chuùng ta taäp trung tìm hieåu caùch caøi ñaët PHP vaø Apache Web
Server, sau ñoù caáu hình öùng duïng PHP trong IIS hay söû duïng caáu hình maëc ñònh cuûa
chuùng.
Ngoaøi ra, baïn laøm quen caùch khai baùo maõ PHP trong trang .php cuøng vôùi script hay
scriptlet.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moân hoïc: PHP
Baøi 2
Baøi hoïc naøy chuùng ta seõ laøm quen vaø tìm hieåu cuù phaùp vaø moät
soá phöông thöùc cô baûn cuûa PHP:
Caâu leänh.
Kieåu döõ lieäu vaø bieán
Khai baùo vaø söû duïng haèng.
Döõ lieäu maûng
Chuyeån ñoåi kieåu döõ lieäu
1. KHAÙI NIEÄM VEÀ CUÙ PHAÙP PHP
Cuù phaùp PHP chính laø cuù phaùp trong ngoân ngöõ C, caùc baïn laøm quen vôùi ngoân ngöõ C
thì coù lôïi theá trong laäp trình PHP.
Ñeå laäp trình baèng ngoân ngöõ PHP caàn chuù yù nhöõng ñieåm sau:
Cuoái caâu leänh coù daáu ;
Bieán trong PHP coù tieàn toá laø $
Moãi phöông thöùc ñeàu baét ñaàu { vaø ñoùng baèng daáu }
Khi khai baùo bieán thì khoâng coù kieãu döõ lieäu
Neân coù giaù trò khôûi ñaàu cho bieán khai baùo
Phaûi coù chi chuù (comment) cho moãi feature môùi
Söû duïng daáu // hoaëc # ñeå giaûi thích cho moãi caâu ghi chuù
Söû duïng /* vaø */ cho moãi ñoaïn ghi chuù
Khai baùo bieán coù phaân bieät chöõ hoa hay thöôøng
2. KHAI BAÙO BIEÁN
Khi thöïc hieän khai baùo bieán trong C, baïn caàn phaûi bieát tuaân thuû quy ñònh nhö: kieãu
döõ lieäu tröôùc teân bieán vaø coù giaù trò khôûi ñaàu, tuy nhieân khi laøm vieäc vôùi PHP thì khoâng
caàn khai baùo kieåu döõ lieäu nhöng söû duïng tieàn toá $ tröôùc bieán.
Xuaát phaùt töø nhöõng ñieàu ôû treân, khai baùo bieán trong PHP nhö sau:
$variablename [=initial value];
$licount=0;
$lsSQL=”Select * from tblusers where active=1”;
$nameTypes = array("first", "last", "company");
$checkerror=false;
Chaúng haïn, khai baùo nhö ví duï 2-1 (variables.php)
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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. KIEÅU DÖÕ LIEÄU
Baûng caùc kieåu döõ lieäu thoâng thöôøng
Boolean True hay false
Integer giaù trò lôùn nhaát xaáp xæ 2 tyû
Float ~1.8e308 goàm 14 soá leõ
String Löu chuoãi kyù töï chieàu daøi voâ haïn
Object Kieåu ñoái töôïng
Array Maûng vôùi nhieàu kieåu döõ lieäu
3.1. Thay ñoåi kieåu döõ lieäu
Ñeå thay ñoåi kieåu döõ lieäu, baïn coù theå söû duïng caùch eùp kieåu nhö trong caùc ngoân ngöõ laäp
trình C hay Java. Chaúng haïn, khai baùo eùp kieåu nhö ví duï 2-2 (box.php):
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Variable</h4>
<?php
$i="S10A";
echo $i+10;
echo "<br>";
$i="10A";
$j=(float)$i;
$j+=10;
echo $i;
echo "<br>";
echo $j;
echo "<br>";
$q=12;$p=5;
echo "Amount: ".(float)$q/$p;
?>
</BODY>
</HTML>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Löu yù raèng, PHP töï ñoäng nhaän bieát giaù trò chuoãi ñaèng sau soá seõ khoâng ñöôïc chuyeån
sang kieåu döõ lieäu soá nhö tröôøng hôïp treân.
Ngoaøi ra, baïn coù theå söû duïng haøm settype ñeå chuyeån ñoåi döõ lieäu naøy sag döõ lieäu khaùc,
ví duï chuùng ta khai baùo 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>
3.2. Kieåm tra kieåu döõ lieäu cuûa bieán
Ñeå kieåm tra kieåu döõ lieäu cuûa bieán, baïn söû duïng caùc haøm nhö sau:
is_int ñeå kieåm tra bieán coù kieåu integer, neáu bieán coù kieåu integer thì haøm seõ traû veà giaù
trò laø true (1). Töông töï, baïn coù theå söû duïng caùc haøm kieåm tra töông öùng vôùi kieåu döõ
lieäu laø is_array, is_bool, is_callable, is_double, is_float, is_int, is_integer, is_long,
is_null, is_numeric, is_object, is_real, is_string. Chaúng haïn, baïn khai baùo caùc haøm naøy
nhö ví duï 2-4 (check.php).
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Check DataType of 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 is_array($myarr);
echo "<br>";
echo is_bool($record);
?>
</BODY>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
</HTML>
3.3.
3.4.
Thay ñoåi kieåu döõ lieäu bieán
Khi khai baùo bieán vaø khôûi taïo giaù trò cho bieán vôùi kieåu döõ lieäu, sau ñoù baïn muoán söû
duïng giaù trò cuûa bieán ñoù thaønh teân bieán vaø coù giaù trò chính laø giaù trò cuûa bieán tröôùc ñoù
thì söû duïng caëp daáu $$. Ví duï, bieán $var coù giaù trò laø "total", sau ñoù muoán söû duïng bieán
laø total thì khai baùo nhö ví duï 2-5 (change.php).
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Change DataType of Variable</h4>
<?php
$var="total";
echo $var;
echo "<br>";
$$var=10;
echo $total;
?>
</BODY>
</HTML>
Kieåu Array
Kieãu maûng laø moät maûng soá lieäu do ngöôøi duøng ñònh nghóa, chuùng coù cuù phaùp nhö
sau:
$myarrs=array("first", "last", "company");
// maûng bao goàm caùc kieåu chuoãi
hay coù theå khai baùo nhö sau
$myarr[]=array(3);
$myarr[0]="Number 0";
$myarr[1]="Number 1";
$myarr[2]="Number 2";
Thöù töï index trong maûng baét ñaàu töø vò trí 0. Chaúng haïn, baïn khai baùo maûng moät chieàu
theo hai caùch treân nhö ví duï 2-6 (array.php).
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Array on demenssion</h4>
<?php
$myarr[]=array(3);
$myarr[0]="Number 0";
$myarr[1]="Number 1";
$myarr[2]="Number 2";
echo $myarr[0];
echo $myarr[1];
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
echo $myarr[2];
echo "<br>";
$myarrs=array("first", "last", "company");
echo $myarrs[2];
?>
</BODY>
</HTML>
Neáu nhö baïn khai baùo maûng hai chieàu, thì cuù phaùp khai baùo nhö sau:
$myarrs[][]=array(2,3);
Chaúng haïn khai baùo nhö ví duï 2-7 (arrays.php):
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Array two demenssions</h4>
<?php
$myarrs[][]=array(2,3);
$myarrs[0][0]="Number 00";
$myarrs[1][0]="Number 10";
$myarrs[0][1]="Number 01";
$myarrs[1][1]="Number 11";
$myarrs[0][2]="Number 02";
$myarrs[1][2]="Number 13";
echo $myarrs[0][2];
echo "<br>";
?>
</BODY>
</HTML>
3.5. Kieåu ñoái töôïng
Ñeå khai baùo ñoái töôïng, baïn söû duïng khaùi nieäm class nhö trong ngoân ngöõ laäp trình C
hay java, ngoaøi ra phöông thöùc trong PHP ñöôïc bieát ñeán nhö moät haøm. Ñieàu naøy coù
nghóa laø töø khoaù laø function.
Neáu haøm coù teân truøng vôùi teân cuûa class thì haøm ñoù ñöôïc goïi laø constructor. Chaúng
haïn, chuùng ta khai baùo class vaø khôûi taïo chuùng thì töï ñoäng constructor ñöôïc goïi moãi
khi ñoái töôïng khôûi taïo, sau ñoù goïi haøm trong class ñoù nhö ví duï 2-8 (object.php).
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Object</h4>
<?php
class clsA
{
function clsA()
{
echo "I am the constructor of A.<br />n";
}
function B()
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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";
}
}
// Goïi phöông thöùc clsA() nhö constructor.
$b = new clsA();
echo "<br>";
// Goïi phöông thöùc B().
$b->B();
?>
</BODY>
</HTML>
3.6. Taàm vöïc cuûa bieán
Taàm vöïc cuûa bieán phuï thuoäc vaøo nôi khai baùo bieán, neáu bieán khai baùo beân ngoaøi haøm
thì seõ coù taàm vöïc trong trang PHP, trong tröôøng hôïp bieán khai baùo trong haøm thì chæ
coù hieäu löïc trong haøm ñoù.
Ví duï, chuùng ta coù bieán $a khai baùo beân ngoaøi haøm nhöng khi vaøo trong haøm thì bieán
$ ñöôïc khai baùo laïi, bieán naøy coùtaàm vöïec beân trong haøm. Töông töï nhö vaäy, khi bieán
$i khai baùo trong haøm thì chæ coù taàm vöïc beân trong haøm cho duø chuùng ñöôïc khai baùo
laïi beân ngoaøi nhö ví duï 2-9 (scope.php).
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Scope of Variable</h4>
<?php
$a = 100;
/* global scope */
function Test()
{
$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>
Ngoaøi ra, ñeå söû duïng bieán toaøn cuïc trong haøm, baïn söû duïng töø khoa global, khi ñoù bieán
toaøn cuïc seõ coù hieäu löïc beân trong haøm. Ví duï khai baùo bieán $a beân ngoaøi haøm, sau ñoù
beân trong haøm Test baïn söû duïng töø khoaù global cho bieán $a, khi ñoù bieán $a seõ ñöôïc söû
duïng vaø giaù trò ñoù coù hieäu löïc sau khi ra khoûi haøm chöù khoâng goáng nhö tröôøng hôïp
trong ví duï scope.php nhö ví duï 2-10 (global.php).
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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. HAÈNG TRONG PHP
4.1.
4.2.
Khai baùo vaø söû duïng haèng
Haèng laø giaù trò khoâng thay ñoåi keå töø sau khi khai baùo, baïn coù theå söû duïng phaùt bieåu
Define ñeå khai baùo haèng nhö sau:
define("MAXSIZE", 100);
Ñeå söû duïng haèng, baïn khai baùo nhö ví duï 2-11 (constant.php)
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Constant</h4>
<?php
define("pi",3.14);
function Test()
{
echo "<br>pi:=".pi;
echo "<br>pi:=".constant("pi");
}
Test();
echo "<br>pi:=".pi;
echo "<br>pi:=".constant("pi");
?>
</BODY>
</HTML>
Kieåm tra haèng
Khi söû duïng haèng, maø haèng chöa toàn taïi thì baïn söû duïng haøm defined nhö ví duï 2-
12 sau (defained.php):
<HTML>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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. KEÁT LUAÄN
Trong baøi naøy, chuùng ta tìm hieåu caùch khai baùo haèng, bieán vaø söû duïng haèng bieán. Ngoaøi
ra, baïn cuõng tìm hieåu caùch chuyeån ñoåi kieåu döõ lieäu, kieåm tra kieåu döõ lieäu, taàm vöïec cuûa
bieán.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Baøi 3
PHEÙP TOAÙN VAØ PHAÙT BIEÅU COÙ ÑIEÀU KIEÄN
TRONG PHP
Chöông naøy chuùng ta seõ laøm quen vaø tìm hieåu toaùn töû, phaùt bieåu
coù ñieàu kieän vaø voøng laëp cuûa PHP.
Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy
Toaùn töû.
Pheùp gaùn trong PHP
Phaùt bieåu coù ñieàu khieån.
Voøng laëp.
1. KHAÙI NIEÄM VEÀ CAÙC TOAÙN TÖÛ TRONG PHP
Khi baïn laäp trình treân PHP laø söû duïng cuù phaùp cuûa ngoân ngöõ C, C++.
Töông töï nhö nhöõng ngoân ngöõ laäp trình khaùc, toaùn töû giuùp cho baïn thöïc hieän
nhöõng pheùp toaùn nhö soá hoïc hay treân chuoãi.
Baûng sau ñaây giuùp cho baïn hình dung ñöôïc nhöõng toaùn töû söû duïng trong
PHP, PHP ñònh nghóa toaù töû toaùn hoïc, quan heä, soá hoïc, bit vaø noät soá pheùp toaùn
gaùn.
Loaïi toaùn töû Toaùn töû Dieãn giaûi Ví duï
Arithmetic
+
-
*
/
%
Addition
Subtraction
Multiplication
Division
Modulus
a + b
a - b
a * b
a / b
a % b
Relational
>
<
>=
<=
!=
==
Greater than
Less than
Greater than or equal
Less than or equal
Not equal
Equal
a > b
a < b
a >= b
a <= b
a != b
a == b
Logical
!
&&
||
Not
AND
OR
!a
a && b
a || b
huukhang@yahoo.com 3-1
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Assignment
=
++
--
+=
-=
*=
/=
%=
|=
&=
^=
.=
Increment and assign
Decrement and assign
Add and assign
Subtract and assign
Multiply and assign
Divide and assign
Take modulus and assign
OR and assign
AND and assign
XOR and assign
Concat and assign
a = b
a++
a--
a += b
a -= b
a *= b
a /= b
a %= b
a |= b
a &= b
a ^= b
a .= b
Allocation new
Create a new object of a
class
new A()
Selection ? : If...Then selection a ? b : c
2. GIÔÙI THIEÄU TOAÙN TÖÛ
Khi noùi ñeán toaùn töû, chuùng ta luoân lieân töôûng ñeán thöù töï xöû lyù, cuõng nhö
trong toaùn hoïc, toaùn töû trong PHP cuõng co ñoä öu tieân add-subtract-multi-divide.
2.1. Toaùn töû AND
Khi thöïc hieän moät vieäc taêng leân giaù trò thì baïn söû duïng cuù phaùp nhö sau:
$ i=0;$j=0;
j=i++;// i taêng sau khi gaùn i vaøo j, chính vì vaäy sau khi gaùn i vaøo j, j vaãn
khoâng thay ñoåi
j=++i;// i taêng tröôùc khi gaùn i vaøo j, chính vì vaäy sau khi gaùn i vaøo j, j thay
ñoåi.
Ví duï 3.1: Pheùp toaùn AND.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>AND Operator</h4>
<?php
huukhang@yahoo.com 3-2
COMPUTER LEARNING CENTER 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. Toaùn töû Not: ~ And !
Toaùn töû ~ ñaûo nghòch taát caû caùc bit cuûa tham soá, coøn toaùn töû ! ñaûo nghòch
giaù trò cuûa giaù trò tröôùc ñoù. Chaúng haïn trong tröôøng hôïp naøy chuùng ta söû duïng
cho bieåu thöùc hay bieán coù giaù trò boolean.
Ví duï 3.2: Pheùp toaùn ~ 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. Toaùn töû nhaân vaø chia: * and /
Baïn coù theå tham khaûo ví duï sau
Ví duï 3.3: Pheùp toaùn * vaø /, + vaø -
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
huukhang@yahoo.com 3-3
COMPUTER LEARNING CENTER 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. Toaùn töû modulus: %
Khi chia moät soá cho moät soá, baïn caàn keát quaû laø soá dö cuûa pheùp chia ñoù thì
duøng toaùn töû modulus
Ví duï 3.4: Pheùp toaùn %
<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. Toaùn töû quan heä: >=,>,<,<=,==,!=
Khi caàn so saùnh keát quaû giöõa hai toaùn haïn vôùi nhau, thoâng thöôøng baïn nghó
ñeán pheùp toaùn so saùnh nhö laø baèng, lôùn hôn, nhoû hôn, ví duï sau dieãn giaûi cho
baïn caùc toaùn töû treân:
Ví duï 3.5: Pheùp toaùn >,>=,<,<=,==,!=
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Comparation Operators</h4>
<?php
huukhang@yahoo.com 3-4
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
$i=10;
$j=9;
echo $i<$j;
echo "<br>";
echo $i!=$j;
?>
</BODY>
</HTML>
2.6. Toaùn töû && vaø ||
&& laø toaù töû and trong soù hoïc, || laø toaùn töû or trong soá hoïc. Hai toaùn töû
naøy raát thöôøng duøng trong khi laäp trình treân PHP, ví duï döôùi ñaây dieãn giaûi cho
baïn ñaày ñuû hai toaùn töû naøy. Chuù yù raèng khi söû duïng toaùn töû ñeàu coù keøm phaùt
bieåu coù ñieàu kieän.
Ví duï 3.6: Pheùp toaùn && 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. Toaùn töû ?:
Toaùn töû naøy thay theá cho phaùt bieåu coù ñieàu kieän if...else, khi baïn caàn laáy
keát quaû theo ñieàu kieän naøo ñoù, neáu coù theå khoâng caàn phaùt bieåu if-else, thì haõy
thay theá baèng toaùn töû ?:, cuù phaùp cuûa chuùng nhö sau:
str1=str2.equals(”khang”)?”Welcome to PHP”:”Good bye PHP”;
Ví duï 3.7: Pheùp toaùn ?:
<HTML>
huukhang@yahoo.com 3-5
COMPUTER LEARNING CENTER 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. PHEÙP GAÙN
Khi gaùn moät giaù trò hay bieán vaøo moät bieán trong PHP, baïn phaûi duøng ñeán
pheùp gaùn, nhöng trong PHP cuõng gioáng nhö trong C thì coù nhöõng pheùp gaùn ñöôïc
ñôn giaûn hoaù hay noùi ñuùng hôn laø chuaån hoaù ñeå ruùt goïn laïi trong khi vieát.
3.1.
3.2.
3.3.
3.4.
4.
Pheùp gaùn thoâng thöôøng nhaát nhö sau:
$j=i;
$str1 =” Hello!”;
$b=true;
Pheùp gaùn theâm moät giaù trò laø 1
$k=0;
$k++;
Pheùp gaùn chuoãi
$strX="Hello";
$strX.=” world”;
$strX.=”ABCc”.$x;
Pheùp gaùn theâm moät vôùi chính noù giaù trò
$k=0;$j=1;
$k+=$j;
töông töï nhö vaäy chuùng ta coù $k*=2, nghóa laø $k=$k*2
PHAÙT BIEÅU COÙ ÑIEÀU KIEÄN
Caùc phat bieåu coù ñieàu kieän nhö :
IF (ñieàu kieän) { caâu leänh; }
IF (ñieàu kieän) { caâu leänh; }ELSE { caâu leänh; }
huukhang@yahoo.com 3-6
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
IF (ñieàu kieän) { caâu leänh; }ELSEIF { caâu leänh; }
switch (ñieàu kieän)
{
case Value1
caâu leänh1;
break;
}
While (ñieàu kieän)
Do - While (ñieàu kieän)
Break
Continue
4.1. Phaùt bieåu IF (ñieàu kieän) { caâu leänh; }
Söû duïng phaùt bieåu if ñeå choïn loïc keát quaû khi ñieàu kieän ñuùng, ví duï nhö sau:
Ví duï 3.8: Phaùt bieåu 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. Phaùt bieåu IF (ñieàu kieän) { caâu leänh; }ELSE { caâu leänh; }
Söû duïng phaùt bieåu if ñeå choïn loïc keát quaû khi ñieàu kieän ñuùng, vaø xuaát ra keát
quaû khi ñieàu kieän sai, ví duï nhö sau:
Ví duï 3.9: Phaùt bieåu IF - ELSE
<HTML>
<HEAD>
huukhang@yahoo.com 3-7
COMPUTER LEARNING CENTER 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.
4.4.
Phaùt bieåu ELSEIF
Phaùt bieåu elseif laø phaàn cuûa phaùt bieåu if else nhieàu nhaùnh, khi coù nhieàu
ñieàu kieän choïn löïa thì baïn söû duïng elseif, cuù phaùp cuûa chuùng 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>
Phaùt bieåu Switch (ñieàu kieän)
Phaùt bieåu switch laø phaàn cuûa phaùt bieåu elseif nhieàu nhaùnh, khi coù nhieàu
ñieàu kieän choïn löïa thì baïn söû duïng switch, cuù phaùp cuûa chuùng nhö sau:
huukhang@yahoo.com 3-8
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Switch(ñieàu kieän)
{
case Value1
caâu leänh1;
break;
case Value2
caâu leänh2;
break;
…
default:
caâu leänh default;
}
Break: duøng ñeå thoaùt ra khoûi switch khi thoaû moät case naøo ñoù trong switch,
default: khi khoâng coù baát kyø giaù trò naøo thoaûn trong caùc case thì giaù trò cuoái cuøng
laø defaule statement
Ví duï 3.10: Phaùt bieåu 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
COMPUTER LEARNING CENTER 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. Phaùt bieåu While(ñieàu kieän)
Phaùt bieåu while thöïc thi nhöõng caâu leänh trong while khi ñieàu kieän coù giaù trò
true.
Ví duï 3.11: Phaùt bieåu While
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>While Statement</h4>
<?php
$j=10;
while($j>0)
{
echo $j."<br>";
$j--;
}
?>
</BODY>
</HTML>
4.6. Phaùt bieåu For
Phaùt bieåu for duøng cho voøng laëp coù giôùi haïn cho tröôùc, cuù phaùp coù daïng nhö
sau:
Ví duï 3.12: Phaùt bieåu For
<HTML>
<HEAD>
huukhang@yahoo.com 3-10
COMPUTER LEARNING CENTER 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. Phaùt bieåu do while
Phaùt bieåu do while cho pheùp duyeät vaø kieåm tra ñieàu kieän sau phaùt bieåu thöù
nhaát, ñieàu naøy coù nghóa laø ít nhaát moät phaùt bieåu ñöôïc thöïc hieän.
Ví duï 3.13: Phaùt bieåu 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>
Phaùt bieåu exit cho pheùp thoùat ra khoûi phaùt bieåu ñieàu kieän khi thoaû ñieàu
kieän naøo ñoù.
Ví duï 3.14: Phaùt bieåu exit
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Exit Statement</h4>
<?php
$j=10;
do
huukhang@yahoo.com 3-11
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
{
if($j==3) exit;
echo $j."<br>";
$j--;
}while($j>0)
?>
</BODY>
</HTML>
TOÙM TAÉT5.
Trong baøi hoïc naøy chuùng toâi giôùi thieäu ñeán cho caùc baïn caùc pheùp gaùn, caùc toaùn
töû, ñoàng thôøi giuùp cho caùc baïn hieåu theâm vaøo caùc phaùt bieåu coù ñieàu kieän nhö
while, for, switch, ….
huukhang@yahoo.com 3-12
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moân hoïc: PHP
Baøi 4
Baøi hoïc naøy chuùng ta seõ laøm quen vôùi bieán form vaø hai phöông
thöùc $HTTP_POST_VARS vaø $HTTP_GET_VARS cuûa PHP:
Bieán form.
Phöông thöùc $HTTP_GET_VARS
Phöông thöùc $HTTP_POST_VARS
BIEÁN FORM
Bieán form trong PHP ñöôïc bieát ñeán nhö moät loaïi bieán, thay vì khai baùo thì bieán ñoù
chính laø teân cuûa theû nhaäp lieäu trong trang submit hay tham soá treân querystring.
1.
1.1. Bieán form töø form ñöôïc submit vôùi phöông thöùc POST
Trong trang baïn submit ñeán, neáu khai baùo teân cuûa theû naèm trong theû form coù teân laø
xyz thì bieán form ñöôïc ñònh nghóa laø $xyz.
Chaúng haïn, baïn khai baùo baùo theû form trong trang submit.php nhö ví duï 4-1.
Ví duï 4-1: Khai baùo theû form
...
<form action=ex1-1.php method=post>
<tr>
<td>Name</td><td>:<input type=text name=fullname></td>
</tr>
<tr><td>Gender</td>
<td>:<input type=radio value=M name=gender> Male
<input type=radio value=F name=gender> Female</td>
</tr>
<tr><td>&nbsp</td>
<td><input type=submit value=Submit></td>
</tr>
</form>
...
Khi ngöôøi söû duïng nhaäp giaù trò vaøo phaàn Name vaø choïn giôùi tính Male hay Female
nhö hình 4-1, neáu nhaán nuùt submit thì trang ex1-1.php seõ trieäu goïi, trong trang naøy
baïn coù theå laáy giaù trò nhaäp töø trang ex1.php baèng caùch söû duïng bieán form nhö ví duï
4-1-1.
Ví duï 4-2: Duøng bieán form
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Form variable</h4>
<table>
<tr><td>Name</td>
<td>
:<?=$fullname?>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
</td></tr>
<tr><td>Gender</td>
<td>
:<?=$gender?>
</td></tr>
</table>
</BODY>
</HTML>
Trong ñoù, $fullname vaø $gender laø teân cuûa hai theû input trong trang ex1.php, trong
tröôøng hôïp naøy chuùng ta söû duïng phöông thöùc POST cho form.
Hình 4-1: Nhaäp lieäu
Keát quaû traû veà nhö hình 4-1-1.
Hình 4-1-1: Keát quaû laáy töø trang submit baèng bieán form
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
1.2. Bieán form töø form ñöôïc submit vôùi phöông thöùc GET
Neáu baïn söû duïng phöông thöùc GET trong theû form, baïn coù theå laáy giaù trò cuûa caùc
tham soá treân chuoãi QueryString baèng bieán form. Ví duï khai baùo theû form coù hai tuyø
choïn nhö ví duï 4-2 vôùi phöông thöùc GET trong theû form.
Ví duï 4-2: Khai baùo theû form
...
<form action=ex2-1.php method=get>
<tr><td>Province</td>
<td>
:<select name=province>
<option value=HAN>Ha Noi</option>
<option value=HCM>Ho Chi Minh</option>
<option value=HUE>Hue</option>
</select>
</td></tr>
<tr><td>Industry</td>
<td>
:<select name=industry multiple>
<option value=AUT>Automobile</option>
<option value=FOO>Foods</option>
<option value=ENG>Enginering</option>
<option value=GAR>Garment</option>
</select>
</td></tr>
<tr><td>&nbsp</td>
<td><input type=submit value=Submit></td></tr>
</form>
...
Khi trieäu goïi trang ex2.php treân trình duyeät, ngöôøi söû duïng choïn giaù trò trong hai
tuyø choïn Province vaø Industry nhö hình 4-2.
Hình 4-2: Phöông thöùc GET
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Neáu nhaán Submit thì hai giaù trò choïn seõ ñöôïc truyeàn leân treân QueryString vôùi hai
tham soá laø teân cuûa theû select. Ví duï trong tröôøng hôïp naøy keát quaû traû veà nhö hình 4-
2-1.
Hình 4-2-1: Bieán form vôùi phöông thöùc GET
Trong ñoù, hai tham soá vaø giaù trò töông öùng laø ex2-
1.php?province=HAN&industry=FOO, baèng caùch söû duïng bieán form baïn coù theå laáy
ñöôïc giaù trò naøy nhö ví duï 4-2-1.
Ví duï 4-2-1: Khai baùo theû form
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Form variable</h4>
<table>
<tr><td>Province</td>
<td>
:<?=$province?>
</td></tr>
<tr><td>Industry</td>
<td>
:<?=$industry?>
</td></tr>
</table>
</BODY>
</HTML>
Ñoái vôùi tröôøng hôïp baïn khoâng söû duïng theû form nhö hai tröôøng hôïp treân, chuùng ta
cuõng coù theå laáy giaù trò töø chuoãi QueryString baèng bieán form. Chaúng haïn, baïn khai
baùo trang chop pheùp ngöôøi söû duïng choïn kyù töï ñeå lieät keâ danh saùch khaùch haøng theo
kyù töï ñoù nhö hình 4-3.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 4-3: Choïn kyù töï
Baèng caùch khai baùo caùc theû <a> baïn ñònh nghóa 24 kyù töï nhö hình treân vôùi tham soá
al coù giaù trò töông öùng:
<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>
Khi ngöôøi söû duïng choïn moät kyù töï thì söû duïng bieán form laø teân cuûa tham soá (al), baïn
coù theå laáy ñöôïc giaù trò cuûa kyù töï ñang choïn:
<tr><td>Select:<?=$al?></td></tr>
Tuy nhieân, laán ñaàu tieân trieäu goïi trang naøy maø khoâng coù tham soá treân QueryString,
khai baùo bieán form seõ phun ra loãi nhö hình 4-3-1.
Ñeå traùnh tröôøng hôïp naøy, baïn söû duïng haøm isset ñeå kieåm tra bieán toàn taïi hay
khoâng, neáu toàn taïi thì baïn söû duïng bieán form naøy. Ví duï ñoái vôùi tröôøng hôïp naøy
chuùng ta khai baùo nhö ví duï 4-3.
Ví duï 4-3: Söû duïng bieán form
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Form variable</h4>
<table>
<tr><td>List by Alphabet</td></tr>
<tr><td>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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>
Hình 4-3-1: Loãi phaùt sinh
Chuù yù raèng, khi söû duïng bieán form baïn khoâng neân khai baùo bieán cuøng teân vôùi caùc
tham soá hay teân cuûa theû nhaäp lieäu trong trang trieäu goïi tröôùc ñoù. Neáu khoâng thì giaù
trò traû veà laø giaù trò cuûa bieán thöôøng thay vì bieán form.
2. PHÖÔNG THÖÙC $HTTP_GET_VARS
Ngoaøi caùch söû duïng bieán form trong tröôøng hôïp laáy giaù trò töø tham soá cuûa QueryString,
baïn coù theå söû duïng haøm $HTTP_GET_VARS. Ví duï, chuùng ta khai baùo trang PHP nhö
ví duï 4-4.
Ví duï 4-4: Söû duïng $HTTP_GET_VARS
<HTML>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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>
Löu yù raèng, neáu baïn khoâng söû duïng haøm isset ñeå kieåm tra province toàn taïi hay khoâng
thì trang php seõ phun loãi trong tröôøng hôïp laàn ñaàu tieân goïi ñeán trang ex4.php maø
khoâng submit. Tuy nhieân, neáu baïn submit trang naøy thì keát quaû traû veà nhö hình 4-4.
Hình 4-4: Duøng $HTTP_GET_VARS
Töông töï nhö vaäy trong tröôøng hôïp baïn khoâng söû duïng theû form maø giaù trò laáy töû chuoãi
QueryString baèng caùch söû duïng $HTTP_GET_VARS nhö ví duï 4-5.
Ví duï 4-5: Söû duïng $HTTP_GET_VARS
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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>
Keát quaû traû veà nhö hình 4-5.
Hình 4-5: Söû duïng $HTTP_GET_VARS
3. PHÖÔNG THÖÙC $HTTP_POST_VARS
Töông töï nhö $HTTP_GET_VARS nhöng $HTTP_POST_VARS cho pheùp baïn laáy giaù trò
laáy töø caùc theû nhaäp lieäu cuûa theû form trong traang submit tröôùc ñoù. Ví duï, baïn khai baùo
trang nhaäp lieäu nhö ví duï 4-6.
Ví duï 4-5: Khai baùo form vôùi phöông thöùc POST
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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>&nbsp</td>
<td><input type=submit value=Login></td></tr>
</table>
</form>
</BODY>
</HTML>
Khi ngöôøi söû duïng nhaäp username vaø password nhö hình 4-6 vaø nhaán nuùt Login.
Hình 4-6: Ñaêng nhaäp
Baèng caùch söû duïng $HTTP_POST_VARS ñeå laáy giaù trò username vaø password nhö ví duï
4-7.
Ví duï 4-5: Söû duïng $HTTP_POST_VARS
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Form variable</h4>
<?php
if(isset($HTTP_POST_VARS["username"]))
{
?>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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>
Keát quaû trình baøy nhö hình 4-7.
Hình 4-7: Duøng $HTTP_POST_VARS
4. KEÁT LUAÄN
Trong baøi naøy, chuùng ta tìm hieåu caùch söû duïng bieán form vaø hai phöông thöùc
$HTTP_POST_VARS, $HTTP_GET_VARS. Ngoaøi ra, baïn cuõng tìm hieåu caùch kieåm tra
bieán toàn taïi hay khoâng baèng haøm isset().
Chuù yù raèng, khi söû duïng bieán form baïn traùnh tröôøng hôïp khai baùo bieán cuïc boä hay toaøn
cuïc trong tang PHP cuøng teân vôùi theû nhaäp lieäu cuûa form tröôùc ñoù submit ñeán hay tham
soá treân querystring.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moân hoïc: PHP
Baøi 5
Baøi hoïc naøy chuùng ta seõ laøm quen vôùi ñoái töôïng Session vaø moät
soá ñoái töôïng khaùc:
Ñoái töôïng Session.
Ñoái töôïng khaùc
ÑOÁI TÖÔÏNG SESSION
Trong PHP4.0 ñoái töôïng Session ñöôïc xem nhö moät ñoái töôïng cho pheùp baïn truyeàn giaù
trò töø trang PHP naøy sang PHP khaùc. Ñeå söû duïng Session, baïn khai baùo thö muïc ñöôïc
löu tröõ döõ lieäu do ñoái töôïng nay ghi ra.
Session ñöôïc sinh ra vaø ñöôïc bieán maát khi ngöôøi söû duïng huyû chuùng, thôøi gian soáng cuûa
chuùng ñaõ heát hoaëc ngöôøi söû duïng ñoùng trình duyeät.
Chaúng haïn, trong tröôøng hôïp naøy chuùng ta söû duïng thö muïc C:PHPsessiondata ñöôïc
khai baùo trong taäp tin php.ini.
1.
session.save_path = C:PHPsessiondata
Ngoaøi ra, khi muoán söû duïng Sessoin thì baïn phaûi khôûi taïo chuùng. Ñeå khôûi taïo Session
baïn coù theå khôûi taïo trong trang PHP moãi khi truy caäp hay gaùn giaù trò cho Session.
session_start();
Tuy nhieân, baïn coù theå caáu hình trong trang php.ini (1 laø start).
session.auto_start = 0
1.1. Nhaän daïng Session
Moãi phieân laøm vieäc ñöôïc taïo ra töø Web Server thì seõ coù moät nhaän daïng duy nhaát coù
giaù trò laø chuoãi do trình chuû Web taïo ra. Ñieàu naøy coù nghóa laø moãi khi ngöôøi söû duïng
trieäu goïi trang Web cuûa Web Site laàn ñaàu tieân thì phieân laøm vieäc seõ ñöôïc taïo ra, khi
ñoù moät nhaän daïng ñöôïc caáp cho phieân laøm vieäc ñoù.
Ñeå laán giaù trò nhaän daïng cuûa Session do trình chuû Web caáp phaùt baïn söû duïng cuù
phaùp:
$x= session_id();
Chaúng haïn, baïn khai baùo baùo ñeå laáy giaù trò session_id trong trang sessionid.php nhö
ví duï 5-1.
Ví duï 5-1: Nhaän daïng session
<?php
session_start();
?>
<HTML>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Session_ID</h4>
<?php
$sessionid=session_id();
echo $sessionid;
?>
</BODY>
</HTML>
Moãi ngöôøi söû duïng truy caäp ñeán Web Site seõ coù moät nhaän daïng khaùc nhö nhö hình 5-
1.
Hình 5-1: Nhaän daïng duy nhaát
1.2. Khai baùo Session
Khi muoán khai baùo bieán session, baïn phaûi söû duïng haøm session_register coù cuù phaùp
nhö sau:
session_register("sessioname");
Khi muoán khôûi taïo session, baïn coù theå gaùn giaù trò cho session naøy nhö gaùn giaù trò
cho bieán trong PHP, sau ñoù söû duïng haøm treân ñeå ñaéng kyù.
$sessioname=value;
session_register("sessioname");
Trong tröôøng hôïp coù nhieàu session, baïn coù theå söû duïng haøm session_register ñeå ñaêng
kyù cuøng moät luùc nhieàu session nhö sau:
$sessioname1=value1;
$sessioname2=value2;
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
$sessioname3=value3;
session_register("sessioname1","sessioname2","sessioname3");
Chaúng haïn, trong tröôøng hôïp naøy chuùng ta khai baùo trang sessionregister.php vaø
ñaêng kyù 3 sessoin coù teân userid, email vaø fullname nhö ví duï 5-2 sau:
Ví duï 5-2: Ñaêng 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>
Keát quaû traû veà nhö hình 5-2.
Hình 5-2: Ñaêng kyù Session
1.3. Laáy giaù trò töø session
Sau khi khai baùo khôûi aïo moät soá session vôùi giaù trò töông öùng cuûa session ñoù, baïn coù
theå truy caäp caùc bieán session naøy ñeå laáy giaù trò torng trang PHP khaùc. Chaúng haïn,
chuùng ta khai baùo trang getsession.php ñeå laáy caùc session cuûa PHP vöøa khai baùo
trong ví duï treân nhö ví duï 5-3.
Ví duï 5-3: Laáy giaù trò töø session
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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 trieäu goïi trang getsession.php treân trình duyeät baïn trình baøy giaù trò cuûa session
userid, email vaø fullname nhö hình 5-3.
Hình 5-3: Laáy giaù trò cuûa session
Tuy nhieân, trong tröôøng hôïp baïn truy caäp moät bieán session chöa khôûi taïo tröôùc ñoù
thì l64i seõ phaùt sinh. Ví duï trong tröôøng hôïp naøy chuùng ta truy caäp bieán session coù
teân $address nhö ví duï 5-4.
Ví duï 5-4: Truy caäp session chöa toàn taïi
<?php
session_start();
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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 trieäu goïi trang unregistersession.php treân trình duyeät thì loãi phaùt sinh nhö hình
5-4.
Hình 5-4: Loãi phaùt sinh
Ñeå kieåm tra session ñoù coù toàn taïi hay chöa baïn söû duïng haøm session_is_register
trong trang checksession.php. Ñoái vôùi tröôøng hôïp naøy chuùng ta caàn kieåm tra 4
session tröôùc khi truy caäp ñeán chuùng nhö ví duï 5-5.
Ví duï 5-5: Kieåm tra session
<?php
session_start();
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Get Session</h4>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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 trieäu goïi trang checksession.php thì keát quaû seõ trình baøy nhö hình 5-5.
Hình 5-5: Khoâng coù loãi phaùt sinh
Chuù yù raèng, khi söû duïng ñeán session, baïn phai khôûi ñoäng chuùng baèng session_start()
neáu khoâng thì phaûi khai baùo trong php.ini.
1.4. Huyû session
Khi khoâng coù nhu caàu söû duïng session nöõa thì baïn söû duïng haøm session_unregister
ñeå loaïi session ñoù. Chaúng haïn, trong tröôøng hôïp naøy chuùng ta muoán loaïi boû session
coù teân laø fullname baïn khai baùo trong trang sessionunregister.php nhö ví duï 5-6.
Ví duï 5-6: Loaïi boû moät Session
<?php
session_start();
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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 trieäu goïi trang sessionunregister.php treân trình duyeät thìkeát quaû traû veà nhö hình 5-
6.
Hình 5-6: Loaïi boû session
Trong tröôøng hôïp loaïi boû taát caùc session ñang toàn taïi thì söû duïng haøm session_unset().
Ví duï duøng haøm naøy ñeå laïoi boû session vaø duøng haøm sessin_destroy ñeå huyû taát caû
session ñoù khai baùo trong trang unset.php nhö ví duï 5-7.
Ví duï 5-7: Xoaù taát caû session
<?php
session_start();
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>UnSet Session</h4>
<?php
session_unset();
session_destroy();
if(session_is_registered("userid"))
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
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>
Keát quaû traû veà nhö hình 5-7.
Hình 5-7: Huyû session
2. COOKIE
Cookie ñöôïc xem nhö session, tuy nhieân chuùng löu tröõ thoâng tin treân trình khaùch. Ñeå
söû duïng Cookie, baïn söû duïng haøm setcookie ñeå gaùn giaù trò nhö ví duï 5-8.
Ví duï 5-8: Gaùn 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 ngöôøi söû duïng trieäu goïi trang setcookie.php keát quaû traû veà nhö hình 5-8.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 5-8: Ñaéng kyù cookie
Ngaøi ra, baïn coù theå gaùn giaù trò cookie baèng session. Chaúng haïn, chuùng ta söû duïng haøm
session_set_cookie_params ñeå gaùn cookie nhö ví duï 5-9.
Ví duï 5-9: Gaùn cookie baèng session
<?php
session_start();
$myvalue="Online Recruitment";
session_set_cookie_params($myvalue);
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Session-Cookie</h4>
</BODY>
</HTML>
Baèng caùch söû duïng $HTTP_COOKIE_VARS ñeå laáy giaù trò cuûa cookie tröôùc ñoù trong
trang httpcookievar.php nhö ví duï 5-10.
Ví duï 5-10: Söû duïng $HTTP_COOKIE_VARS
<?php
echo $HTTP_COOKIE_VARS["huukhang"];
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Get Cookie</h4>
</BODY>
</HTML>
Keát quaû trình baøy nhö hình 5-10.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 5-10: Duøng $HTTP_COOKIE_VARS
Baèng caùch söû duïng haøm session_get_cookie_params ñeå laáy giaù trò cuûa cookie tröôùc ñoù
trong trang sessiongetcookie.php nhö ví duï 5-11.
Ví duï 5-11: Söû duïng session_get_cookie_params
<?php
session_start();
$myvalue= session_get_cookie_params();
echo $myvalue[1];
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Get Cookie</h4>
</BODY>
</HTML>
3. KEÁT LUAÄN
Trong baøi naøy, chuùng ta tìm hieåu caùch söû duïng bieán session vaø cookie.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moân hoïc: PHP
Baøi 6
Baøi hoïc naøy chuùng ta seõ laøm quen caùch khai baùo haøm, cheøn taäp
tin vaø taäp tin duøng chung:
Caùch khai baùo haøm.
Xaây döïng taäp tin ñònh daïng noäi dung
Taäp tin duøng chung
KHAI BAÙO HAØM TRONG PHP
Haøm do ngöôøi söû duïng ñònh nghóa cho pheùp baïn xöû lyù nhöõng taùc vuï thöôøng laëp ñi laëp
laïi trong öùng duïng.
Ñeå khai bao haøm, baïn söû duïng töø khoaù function vôùi cuù phaùp töông töï nhö sau:
1.
function functioname($parameter)
{
return value;
}
Trong tröôøng hôïp haøm khoâng coù giaù trò traû veà thì haøm ñöôïc xem nhö thuû tuïc. Ngoaøi ra,
baïn coù theå khai baùo tham soá tuyø choïn baèng caùch gaùn giaù trò maëc ñònh cho tham soá. Ví
duï chuùng ta khai baùo:
function functioname($parameter1, $parameter2=10 )
{
return value;
}
Ñoái vôùi tröôøng hôïp naøy thì tham soá $parameter1 laø tham soá baét buoäc vaø tham soá
$parameter2 laø tham soá tuyø choïn, khi goïi haøm neáu khoâng cung caáp tham soá cho
$parameter2 thì tham soá naøy coù giaù trò laø 10.
Ví duï, baïn khai baùo trang function.php coù haøm getResult nhaän hai soá vaø pheùp toaùn sau
ñoù tuyø thuoäc vaøo pheùp toaùn haøm traû veà keát quaû. Neáu ngöôøi söû duïng khoâng cung vaáp
pheùp toaùn thì maëc ñònh laø pheùp toaùn +.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Function</h4>
<?php
function getResult($number1, $number2,$operator="+")
{
$result=0;
switch($operator)
{
case "+":
$result=$number1+$number2;
break;
case "-":
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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>
Neáu muoán ñònh nghóa function khoâng coù giaù trò traû veà, baïn coù theå khai baùo 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 tröôøng hôïp truyeàn tham soá nhö tham bieán, baïn söû duïng kyù hieäu & tröôùc tham soá,
chaúng haïn chuùng ta khai baùo haøm coù tham bieán coù teân 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>";
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
echo "result of Average is : ".$bq;
echo "<br>";
function getAmounts($quantity, $price,$average)
{
$result=0;
$result=$quantity*$price;
$average=$result*6/12;
return $result;
}
$bq=0;
echo "result is : ".getAmounts(10,20,$bq);
echo "<br>";
echo "result of Average is : ".$bq;
?>
</BODY>
</HTML>
Trong tröôøng hôïp treân thì haøm getAmount coù tham soá $average laø tham bieán coøn haøm
getAmounts coù tham soá $average laø tham trò, vaø keát quaû traû veà cuûa bieán $bq khi goïi
haøm getAmount laø 100 trong khi ñoù giaù trò cuûa bieán naøy trong haøm getAmounts laø 0.
2. XAÂY DÖÏNG TAÄP TIN ÑÒNH DAÏNG NOÄI DUNG
Khi trình baøy noäi dung treân trang HTML hay trang PHP, ñeå thoáng nhaát ñònh daïng
chuoãi trong theû body hay theû div chaúng haïn baïn caàn khai baùo theû style trong theû
<head>.
<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
}
.text{
FONT: 11px Arial, Helvetica, sans-serif
}
</style>
Trong ñoù, A töông öùng vôùi lieân keát (chuoãi trong theû <a>) coù ñònh daïng öùng vôùi tröôøng
hôïp lieân keát, di chuyeån con chuoät, choïn lieân keát.
A {
COLOR: #003063;
TEXT-DECORATION: none
}
A:hover {
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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
}
Chaúng haïn, chuùng ta khai baùo trang PHP vôùi noäi dung ñöôïc aùp duïng vôùi kieåu ñònh daïng
khai baùo trong theû style nhö vuù duï 6-1.
Ví duï 6-1: Khai baùo 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>
*** Quaûn Trò SQL Server 2000 *** </TD>
</TR>
<TR>
<TD class=text>
<div align=justify>
Tìm hieåu caùch caøi ñaët, caáu hình, quaûn trò,
backup & restore, import & export, thieát
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
keá, laäp trình, töï ñoäng hoaù taùc vuï quaûn trò,
baûn sao döõ lieäu, baûo maät vaø choáng thaâm nhaäp
döõ lieäu baèng.
<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>
Khi trieäu goïi trang style.PHP treân trình duyeät, noäi dung cuûa trang web ñöôïc ñònh daïng
theo theû style nhö hình 6-1.
Hình 6-1: AÙp duïng theû style
Töông töï nhö vaäy khi baïn muoán thoáng nhaát noäi dung trong nhöõng theû khaùc cuûa moät
trang web thì khai baùo moät ñònh daïng trong theû style. Tuy nhieân, khi ñaët teân truøng vôùi
theû HTML, moïi theû ñoù trong trang seõ cuøng chung moät ñònh daïng. Chaúng haïn, baïn khai
baùo ñònh daïng cho theû td nhö sau:
TD {
FONT: 10px Arial, Helvetica, sans-serif
}
Moïi noäi dung trình baøy trong theû td seõ coù ñònh daïng nhö treân. Neáu baïn muoán coù ñònh
daïng khaùc thì khai baùo thuoäc tính class cho theû td ñoù, ví duï söû duïng ñònh daïng khaùc
cho theû td:
<td class=text>ABC</td>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Thay vì chuoãi ABC seõ coù ñònh daïng laø FONT: 10px Arial, Helvetica, sans-serif thì chuùng
seõ coù ñònh daïng cuûa FONT: 11px Arial, Helvetica, sans-serif.
Chuù yù raèng, trong moãi trang web baïn phaûi khai baùo theû style vaø ñònh nghóa thoáng nhaát
cho caùc theû. Khi coù söï thay ñoåi baïn phaûi thay ñoåi trong moïi trang web. Ñeå söû duïng
chung cho moïi trang web trong öùng duïng, baïn caàn xaây döïng moät taäp tin style, taäp tin
ñöôïc bieát ñeán vôùi teân goïi custom style sheet (css).
Baát kyø trang web naøo trong öùng duïng, muoán aùp duïng kieåu ñònh daïng trong taäp tin css
thì khai baùo lieân keát taäp tin css baèng theû link.
Ví duï, chuùng ta khai baùo taäp tin style.css bao goàm caùc ñònh daïng nhö ví duï 6-2.
Ví duï 6-2: Khai baùo taäp 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, baïn khai baùo lieân keát taäp tin naøy baèng theû link, neáu muoán aùp
duïng ñònh daïng naøy trong moãi theû HTML baïn söû duïng thuoäc tính class nhö khai baùo
ñònh daïng cuûa theû style ngay trong trang ñoù nhö ví duï 6-3.
Ví duï 6-3: Khai baùo söû duïng taäp 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>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
<TR>
<TD vAlign=top class=title>
*** Quaûn Trò SQL Server 2000 *** </TD>
</TR>
<TR>
<TD class=text>
<div align=justify>
Tìm hieåu caùch caøi ñaët, caáu hình, quaûn trò,
backup & restore, import & export, thieát
keá, laäp trình, töï ñoäng hoaù taùc vuï quaûn trò,
baûn sao döõ lieäu, baûo maät vaø choáng thaâm nhaäp
döõ lieäu baèng.
<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>
Trieäu goïi trang includestyle.php treân trình duyeät nhö hình 6-3, maøu vaø kích thöôùc font
cuøng vôùi kieåu chöõa cuûa noäi dung khoâng thay ñoåi so vôùi style.php, bôûi vì phaàn theû style
ñöôïc taùch ra thaønh taäp tin style.css, sau ñoù duøng theû link ñeå lieân keát taäp tin css naøy vaøo
trang PHP trôû laïi.
Hình 6-3: Lieân keát taäp tin css
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Chuù yù raèng, neáu khai baùo thuoäc tính class trong theû <table> thì nhöõng noäi dung trong
theû <table> seõ coù ñònh daïng theo ñònh daïng khai baùo trong thuoäc tính class. Töông töï,
neáu khai baùo thuoäc tính class trong theû <tr> thì noäi dung trong theû <tr> seõ coù ñònh
daïng gioáng nhö ñònh daïng khai baùo trong thoâng tin class.
3. THOÁNG NHAÁT KÍCH THÖÔÙC CUÛA MOÏI TRANG PHP
Khi xaây döïng öùng duïng web chuyeân nghieäp, ñieàu ñaàu tieân baïn neân quan taâm laø söï
thoáng nhaát veà kích thöôùc cuûa caùc phaàn treân trang web. Ñieàu naøy coù nghóa laø khi ngöôøi
söû duïng thay ñoåi trang web khi duyeät, phaàn top, left, right, bottom coù kích thöôùc nhö
nhau.
Ñeå laøm ñieàu naøy, baïn chia trang web ra thaønh 5 phaàn: top, left, right, body vaø bottom.
Phaàn top thöôøng trình baøy caùc thuoäc tính nhö quaûn caùo (baner), logo (bieåu töôïng cuûa
coâng ty), menu (thöïc ñôn cuûa öùng duïng) vaø moät soá thoâng tin khaùc.
Phaàn left laø thoâng tin veà caùc menu phuï hay coøn goïi laø menu cuûa menu chính, beân caïnh
menu con naøy trang web thöôøng coù caùc lieân keát veà lieân heä, quaûng caùo, mailing list
(ñaêng kyù email), gôûi ñeán baïn beø (send to friend), ....
Ñoái vôùi phaàn right, thöôøng laø phaàn giôùi thieäu veà caùc thoâng ñaëc bieät vaø quaûng caùo,
chaúng haïn ñoái vôùi öùng duïng baùn saùch, phaàn right thöôøng laø danh saùch caùc nhoùm saùch
baùn chaïy, saép phaùt haønh, ...
Phaàn bottom thöôøng thoâng tin lieân laïc cuûa coâng ty, chuû nhaân cuûa web site vaø baûn
quyeàn. Ngoaøi ra, phaàn bottom ñoâi khi laø danh saùch caùc menu con khaùc.
Toùm laïi, tuyø thuoäc vaøo yù töôûng thieát keá moãi phaàn nhö treân bao goàm caùc thuoäc tính maø
nhaø thieát keá caàn trình baøy sao cho phuø hôïp. Tuy nhieân, phaàn body laø phaàn trình baøy
noäi dung chính cuûa moãi trang web. Ngoaøi ra, tuyø vaøo töøng tröôøng hôïp cuï theå, trang web
coù theå khoâng coù phaàn left vaø right.
Nhö vaäy, chuùng ta seõ chia trang web ra thaønh 5 phaàn, phaàn body chính laø phaàn chính
cuûa trang web ñoù, coøn 4 phaàn coøn laïi ñöôïc cheøn vaøo khi coù nhu caàu.
Chaúng haïn, coù nhöõng trang web do thoâng tin trình baøy trong phaàn body nhieàu, neân caàn
khoâng gia lôùn hôn, baïn coù theå khoâng caàn söû duïng hai phaàn left vaø right.
Ñeå laøm ñieàu naøy, tröôùc tieân chuùng ta thieát keá trang sample.php coù 5 phaàn nhö hình 6-3.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 6-3: Trang sample.php
-------------------------------------------------------------------------------------------
Löu yù:
Taïo moät table goàm 3 haøng 3 coät vaø khai baùo border=1 ñeå ñeã canh leà sau ñoù baïn coù theå
khai baùo laïi thuoäc tính naøy baèng 0.
•
•
•
•
•
Phaàn top vaø bottom laø moät haøng vaø merge 3 coät thaønh 1.
Beân trong moãi phaàn coù theå coù moät hay nhieàu theû table khaùc.
Coù theå khoâng coù phaàn left vaø right nhöng baét buoäc phaàn top vaø bottom phaûi coù.
Baïn coù theå söû duïng chieàu roäng cuûa table theo kích thöôùc töông ñoái (%) hay soá chæ ñònh,
ñoái vôùi maøn hình 600*800 thì chieàu roäng thöôøng söû duïng laø 780, khi ngöôøi söû duïng choïn
ñoä phaân giaûi cuûa maøn hình lôùn hôn thì kích thöôùc cuûa table naøy khoâng thay ñoåi, trong
khi ñoù noäi dung seõ phuû ñaày maøn hình khi baïn khai baùo kích thöôùc theo 100%.
-------------------------------------------------------------------------------------------
Ñeå coù giao dieän nhö trang sample.php nhö treân, baïn coù theå khai baùo nhö ví duï 6-3.
Ví duï 6-3: Noäi 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>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
<TABLE cellSpacing=2 cellPadding=2
width="778" border=1 align=center>
<TR HEIGHT="100">
<TD Align=center colspan=3>
TOP
</TD>
</TR>
<TR HEIGHT="280">
<TD vAlign=top width="20%">
LEFT
</TD>
<TD vAlign=top width="60%">
BODY
</TD>
<TD vAlign=top width="20%">
RIGHT
</TD>
</TR>
<TR HEIGHT="50">
<TD colspan=3 align=center>
BOTTOM
</TD
</TR>
</TABLE>
</body>
</html>
Trong tröôøng hôïp baïn muoán coù ñöôøng phaân caùch giöõa moãi phaàn baèng image, baïn coù theå
khai baùo laïi trang sample.php coù 5 haøng vaø 5 coät nhö template.php nhö hình 6-4.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 2-4: Phaân caùch coù vieàng
Ñeå trình baøy trang tempale.PHP nhö hình 6-4, baïn khai baùo noäi dung trang naøy nhö ví
duï 6-4.
Ví duï 6-4: Khai baùo template.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>
<TABLE width="778" border=0 cellSpacing=0
cellPadding=0 align=center>
<TR HEIGHT="100">
<TD Align=center colspan=5>
TOP
</TD>
</TR>
<!---Khai baùo ñöôøng phaân caùch--->
<TR HEIGHT="1">
<TD colspan=5 bgcolor=gray></TD>
</TR>
<TR HEIGHT="280">
<TD vAlign=top width="150">LEFT</TD>
<!---Khai baùo ñöôøng phaân caùch--->
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
<TD bgcolor=gray width="1"></TD>
<TD vAlign=top width="476">BODY</TD>
<!---Khai baùo ñöôøng phaân caùch--->
<TD bgcolor=gray width="1"></TD>
<TD vAlign=top width="150">RIGHT</TD>
</TR>
<!---Khai baùo ñöôøng phaân caùch--->
<TR HEIGHT="1">
<TD colspan=5 bgcolor=gray></TD>
</TR>
<TR HEIGHT="50">
<TD colspan=5 align=center>
BOTTOM
</TD
</TR>
</TABLE>
</body>
</html>
Sau ñoù taùch trang template.php naøy thaønh 5 trang khaùc nhau ñöôïc ñaët teân töông öùng laø
top.htm, left.htm, right.htm vaø bottom.htm, trong ñoù phaàn body töông öùng vôùi trang
templates.php.
Ñeå khai baùo cheøn taäp tin trong trang PHP, baïn söû duïng cuù phaùp nhö sau:
<?php
include(”filename”);
?>
Hay
<?php
require(”filename”);
?>
Trong ñoù trang templates.PHP khai baùo cheøn top.htm, left.htm, right.htm vaø bottom.htm
nhö ví duï 6-5.
Ví duï 6-5: Khai baùo cheøn taäp 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 baùo ñöôøng phaân caùch--->
<TR HEIGHT="1">
<TD colspan=5 bgcolor=gray></TD>
</TR>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
<TR HEIGHT="280">
<TD vAlign=top width="150">
<?php include(“left.htm")?>
</TD>
<!---Khai baùo ñöôøng phaân caùch--->
<TD bgcolor=gray width="1"></TD>
<TD vAlign=top width="476">BODY</TD>
<!---Khai baùo ñöôøng phaân caùch--->
<TD bgcolor=gray width="1"></TD>
<TD vAlign=top width="150">
<?php include ("right.htm")?>
</TD>
</TR>
<!---Khai baùo ñöôøng phaân caùch--->
<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 trieäu goïi trang templates.php, noäi dung cuûa 4 tang left.htm, right.htm, top.htm,
bottom.htm cheøn vaøo trang templates.php nhö hình 6-5.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 6-5: Trang templates.php sau khi cheøn
Trong ñoù, noäi dung cuûa trang top.htm ñònh nghóa töông töï nhö ví duï 6-5-1.
Ví duï 6-5-1: Noäi dung trang top.htm
<TABLE width="100%" border=0 cellSpacing=0
cellPadding=0 HEIGHT="100%" align=center>
<TR >
<TD width="150" Align=center>
LOGO
</TD>
<TD Align=center>
BANNER
</TD>
</TR>
<TR HEIGHT="1">
<TD colspan=2 bgcolor=gray></TD>
</TR>
<TR HEIGHT="20%" bgcolor=black class=menu>
<TD width="150" >
Welcome
</TD>
<TD>
Home | Search | Contact | Help
</TD>
</TR>
</TABLE>
Noäi dung cuûa taäp tin left.htm ñöôïc ñònh nghóa töông töï nhö ví duï 6-5-2.
Ví duï 6-5-2: Noäi dung trang left.htm
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
<TABLE width="100%" border=0 cellSpacing=0
cellPadding=0 HEIGHT="100%" align=center>
<TR >
<TD width="150" Align=center>
LEFT
</TD>
</TR>
</TABLE>
Neáu coù söû duïng trang right.htm thì noäi dung cuûa taäp tin naøy ñöôïc ñònh nghóa töông töï
nhö ví duï 6-5-3.
Ví duï 6-5-3: Noäi 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>
Töông töï nhö vaäy, trang bottom.htm coù noäi dung nhö ví duï 6-5-4.
Ví duï 6-5-4: Noäi dung trang bottom.htm
<TABLE width="100%" border=0 cellSpacing=0
cellPadding=0 HEIGHT="100%" align=center>
<TR class=text>
<TD Align=center>
HUUKHANG.COM<br>
Copyright ©2000-2005.
All Rights Reserved.
</TD>
</TR>
</TABLE>
Chuù yù raèng, trong moãi trang khai baùo cheøn khoâng coù caùc theû ñoùng vaø môû html, body bôûi
khi cheøn thì noäi dung cuûa taäp tin ñöôïc cheøn seõ ñöôïc cheøn vaøo taäp tin bò cheøn vaø trong
taäp tin bò cheøn ñaõ coù hai theû naøy.
Kòch baûn trình chuû PHP hoã trôï caùc taäp tin ñöôïc cheøn vôùi caùc teân môû roäng nhö htm,
PHP, inc, lib, html. Do thöïc chaát cuûa vieäc khai baùo cheøn laø cheøn ñoaïn maõ trong taäp tin
cheøn vaøo taäp tin boï cheøn, trong tröôøng hôïp naøy trang cheøn htm hay PHP ñeàu gioáng
nhau ñoù laø lyù do taïi sao caùc trang cheøn ôû treân ñeàu coù teân môû roäng laø htm.
Tuy nhieân, khi baïn goïi trang cheøn naøy moät mình ví duï tom.htm, neáu beân trong coù maõ
PHP thì maõ ñoù khoâng ñöôïc thoâng dòch. Neáu nhöõng trang cheøn naøy coù nhu caàu goïi moät
mình thì baïn coù theå chuyeån chuùng thaønh trang PHP thay vì htm nhö ñaõ trình baøy.
Sau khi coù ñöôïc trang templates.php, baïn coù theå söû duïng trang naøy laø maãu cho caùc
trang khaùc baèng caùch save as thaønh caùc trang PHP khaùc khi laäp trình. Khi khai baùo
cheøn taäp tin, baïn coù theå söû duïng ñöôøng daãn töông ñoái hoaëc tuyeät ñoái cuûa taäp tin cheøn
so vôùi aäp tin bò cheøn.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
4. TAÄP TIN DUØNG CHUNG
Ngoaøi caùch cheøn ôû treân, neáu baïn coù nhöõng haøm söû duïng chung cho caùc trang PHP khaùc
thì baïn khai baùo thaønh moät trang PHP khaùc sau ñoù duøng cuù phaùp cheøn taäp tin ñeå cheøn
chuùng vaøo khi coù nhu caàu.
Ví duï trong tröôøng hôïp naøy chuùng ta muoán söû duïng chung haøm coù teân getPaging nhaän 5
tham soá $totalRows (toång soá maåu tin), $curPg (soá trang hieän haønh), $pg (soá trang trình
baøy), $re (soá maåu tin treân 1 trang), $file (trang php caàn goïi) trong taäp tin paging.php.
<?php
function paging($totalRows,$curPg,$pg,$re,$file)
{
$paging="";
$mxR = $re;
$mxP = $pg;
if($totalRows%$mxR==0)
$totalPages = (int)($totalRows/$mxR);
else
$totalPages = (int)($totalRows/$mxR+1);
$curRow = ($curPg-1)*$mxR+1;
if($totalRows>$mxR)
{
$start=1;
$end=1;
$paging1 ="";
for($i=1;$i<=$totalPages;$i++)
{
if(($i>((int)(($curPg-1)/$mxP))* $mxP) && ($i<=((int)(($curPg-
1)/$mxP+1))* $mxP))
{
if($start==1) $start=$i;
if($i==$curPg)
$paging1 .= $i."&nbsp;&nbsp;";
else
{
$paging1 .= "<a class=lslink href='$file";
$paging1 .="&page=".$i."'>".$i;
$paging1 .="</a>&nbsp;&nbsp;";
}
$end=$i;
}
}
$paging.= "Trang :&nbsp;&nbsp;" ;
if($curPg>$mxP)
{
$paging .="<a class=lslink href='$file";
$paging .="&page=".($start-1);
$paging .="'>Previous</a>&nbsp;&nbsp;";
}
$paging.=$paging1;
if(((($curPg-1)/$mxP+1)*$mxP) < $totalPages)
{
$paging .= "<a class=lslink href='$file";
$paging .="&page=".($end+1);
$paging .="'>Next</a>&nbsp;&nbsp;";
}
}
return $paging;
}
?>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Sau ñoù khai baùo trang result.php, cheøn taäp tin paging.php vaø goïi haøm getPaging nhöu
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>
Keát quaû traû veà nhö hình 6-6 sau
Hình 6-6: Haøm duøng chung
5. KEÁT LUAÄN
Trong baøi naøy, chuùng ta tìm hieåu caùch khai baùo haøm, trang php vaø khai baùo cheøn taäp
tin.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moân hoïc: PHP
Baøi 7
Baøi hoïc naøy chuùng ta seõ laøm quen caùch xöû lyù chuoãi, maûng, kieåu DataTime
trong PHP:
Xöû lyù chuoãi
Laøm vieäc vôùi maûng döõ lieäu
Kieåu DateTime
XÖÛ LYÙ CHUOÃI
PHP laø kòch baûn ñöôïc xem laø toát nhaát cho xöû lyù chuoãi, baèng caùch söû duïng caùc haøm xöû lyù chuoãi, baïn
coù theå thöïc hieän caùc yù ñònh cuûa mình khi töông taùc cô sôû döõ lieäu, taäp tin hay döõ lieäu khaùc.
1.
1.1. Ñònh daïng chuoãi
Khi xuaát keát quaû ra trình duyeät, baïn coù theå söû duïng caùc ñònh daïng chuoãi töông töï nhö ngoân ngöõ
laäp trình C. Chaúng haïn, chuùng ta in giaù trò cuûa bieán $i trong trang dinhdang.php nhö ví duï 7-1.
<html>
<head>
<title>String Functions</title>
</head>
<body>
<h4>Dinh dang</h4>
<?php
$i=12.55;
$j=100;
echo "Total amount of order: $i<br>";
printf("Total amount of order: %.1f", $i);
echo "<br>";
printf("Total amount of order: %.2f", $i);
echo "<br>";
printf("Total amount of order: i=%.2f, j=%.0f", $i,$j);
?>
</body>
</html>
Keát quaû xuaát hieän nhö hình 7-1
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 7-1: Ñònh daïng chuoãi in
Trong ñoù caùc ñònh daïng ñöôïc chia ra nhieâu loaïi tuyø thuïoâc vaøo caùc kyù töï baïn söû duïng.
% - Koâng yeâu caàu tham soá.
b – Trình baøy daïng soá integer vaø hieän thöïc döôùi daïng binary.
c - Trình baøy daïng soá integer vaø hieän thöïc döôùi daïng maõ ASCII.
d - Trình baøy daïng soá integer vaø hieän thöïc döôùi daïng decimal.
e - Trình baøy daïng soá logic vaø hieän thöïc döôùi daïng 1.2e+2.
u - Trình baøy daïng soá integer vaø hieän thöïc döôùi daïng decimal khoâng daáu.
f - Trình baøy daïng soá float vaø hieän thöïc döôùi daïng soá chaám ñoäng.
o - Trình baøy daïng soá integer vaø hieän thöïc döôùi daïng heä soá 10.
s - Trình baøy daïng chuoãi.
x - Trình baøy daïng soá integer vaø hieän thöïc döôùi daïng heä soá 16 vôùi kyù töï thöôøng.
X - Trình baøy daïng soá integer vaø hieän thöïc döôùi daïng heä soá 16 vôùi kyù töï hoa.
1.2. Haøm chuyeån ñoåi chuoãi
Ñeå chuyeån ñoåi chuoãi ra kyù töï hoa thöôøng baïn söû duïng moät trong 4 haøm nhö ví duï 7-2 trong trang
chuyendoi.php:
<html>
<head>
<title>String Functions</title>
</head>
<body>
<h4>Chuyen doi</h4>
<?php
$str="Welcome to huukhang.com";
echo $str;
echo "<br>";
echo strtoupper($str);
echo "<br>";
echo strtolower($str);
echo "<br>";
echo ucfirst($str);
echo "<br>";
echo ucwords($str);
echo "<br>";
?>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
</body>
</html>
Keát quaû trình baøy nhö hình 7-2.
Hình 7-2: Chuyeån ñoåi chuoãi
1.3. Haøm taùch hay keát hôïp chuoãi
Ñeå taùch hay keát hôïp chuoãi, baïn söû duïng moät trong caùc haøm thöôøng söû duïng nhö strtok, explode
hay substr. Chaúng haïn, chuùng ta söû duïng 4 haøm naøy trong ví duï 7-4 trong trang tachchuoi.php.
<html>
<head>
<title>String Functions</title>
</head>
<body>
<h4>Tach hop chuoi</h4>
<?php
$string = "Xin chao ban da den voi huukhang.com";
$str = $string;
echo $string."<br>";
$tok = strtok($string, " ");
while ($tok)
{
echo "Word= $tok<br />";
$tok = strtok(" nt");
}
echo $str."<br>";
echo substr($str,24)."<br>";
$a[]=array();
$a=explode(" ",$str);
while($i=each($a))
{
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
echo $i["value"]."<br>";
}
?>
</body>
</html>
Keát quaû trình baøy nhö hình 7-4.
Hình 7-4: Haøm taùch chuoãi
Trong tröôøng hôïp keát hôïp giaù trò cuûa caùc phaàn töû cuûa maûng thaønh chuoãi, baïn söû duïng haøm implode
nhö ví duï 7-5 trong trang kethop.php:
<html>
<head>
<title>String Functions</title>
</head>
<body>
<h4>Ket hop chuoi</h4>
<?php
$str = "Xin chao ban da den voi huukhang.com";
$a[]=array();
$a=explode(" ",$str);
while($i=each($a))
{
echo $i["value"]."<br>";
}
$str=implode(" ",$a);
echo $str;
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
?>
</body>
</html>
Keát quaû trình baøy nhö hình 7-5.
Hình 7-5: Haøm keát hôïp chuoãi
1.4. Tìm kieám vaø thay theá chuoãi
Ñeå thay theá chuoãi, baïn söû duïng haøm str_replace, chaúng haïn trong tröôøng hôïp hôïp baïn laáy giaù trò
töø theû nhaäp lieäu, sau ñoù tìm kieám neáu phaùt hieän daáu ‘ thì thay theá thaønh hai daáu nhaùy nhö trang
replace.php.
<html>
<head>
<title>String Functions</title>
</head>
<body>
<h4>That the chuoi</h4>
<?php
$str="";
if (isset($txtfullname))
$str = $txtfullname;
if($str != "");
$str=str_replace("o","a",$str);
echo $str."<br>";
?>
<form action=replace.php method=post>
fullname: <input name=txtfullname value="<?=$str?>"><br>
<input type=submit value=Submit>
</form>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
</body>
</html>
Khi trieäu goïi trang replace.php treân trình duyeät, baïn seõ coù keát quaû nhö sau:
Hình 7-6: Haøm thay theá chuoãi
Ngoaøi ra, baïn coù theå söû duïng caùc haøm nhö strpos (traû veà vò trí chuoãi con trong chuoãi meï), ...
2. LAØM VIEÄC VÔÙI MAÛNG DÖÕ LIEÄU
Nhö trong baøi kieåu döõ lieäu chuùng ta ñaõ laøm quen vôùi kieåu döõ lieäu maûng, trong phaàn naøy chuùng ta
tieáp tuïc tìm hieåu caùc khai baùo, truy caäp vaø töông taùc vôùi taäp tin töø maûng moät chieàu, hai chieàu.
2.1. Maûng moät chieàu
Ñeå khai baùo maûng moät chieàu, baïn coù theå söû duïng cuù phaùp nhö sau:
$arr=array();
$arrs=array(5);
Truy caäp vaøo phaàn töû maûng, baïn coù theå söû duïng chæ muïc cuûa phaàn töû nhö sau:
$arr[0]=1;
$arrs[1]=12;
Laáy giaù trò cuûa phaàn töû maûng, baïn cuõng thöïc hieän töông töï nhö tröôøng hôïp truy caäp maûng phaàn
töû.
echo $arr[0];
$x=$arrs[5];
Chaúng haïn, chuùng ta khai baùo maûng ñoäng vaø maûng coù soá phaàn töû cho tröôùc, sau ñoù truy caäp vaø
laáy giaù trò cuûa chuùng nhö ví duï trong trang arrayone.php sau:
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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>
Keát quaû trình baøy nhö hình 7-7 khi trieäu goïi trang arrayone.php.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 7-7: Khai baùo vaø söû duïng maûng moät chieàu
2.2. Maûng hai chieàu
Töông töï nhö maûng moät chieàu, trong tröôøng hôïp laøm vieäc maûng hai chieàu baïn khai baùo töông töï
nhö trang arraytwo.php.
<html>
<head>
<title>Array</title>
</head>
<body>
<h4>Mang hai chieu</h4>
<?php
$i=0;$j=0;
$arr=array();
$arr[0][0]=10;
$arr[0][1]=11;
$arr[0][2]=12;
$arr[1][0]=13;
$arr[1][1]=14;
$arr[1][2]=15;
$arr[2][0]=16;
$arr[2][1]=17;
$arr[2][2]=18;
for($i=0;$i<sizeof($arr);$i++)
{
for($j=0;$j<sizeof($arr);$j++)
{
echo $arr[$i][$j]." ";
}
echo "<br>";
}
echo "<br>";
$arrs=array(array(1,2,3,4,5,6,7),
array(11,12,13,14,15,16,17));
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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 trieäu goïi trang naøy treân trình duyeät, keát quaû trình baøy nhö hình 7-8.
Hình 7-8: Maûng hai chieàu
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
3. KIEÅU DATETIME
Ñeå laøm vieäc vôùi kieåu döõ lieäu Date vaø Time, baïn söû duïng haøm cuûa PHP coù saün. Chaúng haïn, muoán
trình baøy chuoãi ngaøy thaùng, baïn duøng haøm date vôùi caùc 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>
Keát quaû traû veà nhö hình 7-9.
Hình 7-9: Söû duïng haøm Date
Löu yù raèng, than soá trong haøm date ñöôïc trình baøy trong baûng sau
-----------------------------------------------------------------------
Code Dieãn giaûi
-----------------------------------------------------------------------
a Buoåi saùng/Chieàu baèng hai kyù töï thöôøng am/pm.
A Buoåi saùng/Chieàu baèng hai kyù töï hoa AM/PM.
B Ñònh daïng thôøi gian Swatch Internet, baïn coù theå tham khaûo
http://swatch.com/internettime/internettime.php3.
d Day (01-31) trong thaùng vôùi hai soá, neáu ngaøy 1-9 seõ coù keøm soá 0.
D Day (Mon-Sun) trong tuaàn vôùi 3 kyù töï.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
F Thaùng (January-December) trong naêm vôùi teân thaùng ñaày ñuû daïng text.
g Hour (1-12) trong ngaøy 1 hoaëc 2 soá (khoâng keøm 0 neáu giôø töø 1-9).
G Hour (0-23) trong ngaøy 1 hoaëc 2 soá (khoâng keøm 0 neáu giôø töø 0-9).
h Hour (01-12) trong ngaøy 2 soá (keøm 0 neáu giôø töø 01-09).
H Hour (00-23) trong ngaøy 2 soá (keøm 00 neáu giôø töø 00-09).
i Minutes (01-59) ñaõ troâi qua (keøm 00 neáu phuùt töø 00-59).
j Day (1-31) 1 hoaëc 2 soá (khoâng keøm 0 neáu ngaøy töø 1-9).
l Day (Monday-Sunday) trong tuaàn daïng text.
L Naêm nhuaàn traû veà 1, ngöôïc laïi haøm traû veà 0.
m Month (01-12) trong naêm 2 soá (keøm 00 neáu thaùng töø 01-09).
M Month (Jan-Dec) trong naêm 3 kyù töï.
n Month (1-12) 1 hoaëc 2 soá (khoâng keøm 0 neáu thaùng töø 1-9).
s Seconds (01-59) ñaõ troâi qua (keøm 00 neáu giaây töø 00-59).
S Theâm hai kyù töï st, nd, rd hay th theo sau ngaøy daïng hai kyù töï soá
(ví duï nhö 12th
).
t Traû veà toång soá ngaøy trong thaùng (töø 28 -31).
T Kyù töï Timezone cuûa server vôùi 3 kyù töï, chaúng haïn nhö EST.
U Toång soá Seconds töù 1 January 1970 tôùi hoâm nay öùng vôùi UNIX Time Stamp.
w Day (0-6) cuûa tuaàn, 0 öùng vôùi Sunday vaø 6 öùng vôùi Saturday.
y Naêm ñònh daïng 2 con soá (03).
Y Naêm ñònh daïng 4 con soá (2003).
z Ngaøy trong naêm moät hoaëc 2 con soá (0-365).
X Timezone hieän taïi tính baèng giaây töø –43200 ñeán 43200.
-----------------------------------------------------------------------
4. KEÁT LUAÄT
Trong baøi naøy, chuùng ta taäp trung tìm hieåu xöû lyù chuoãi, maûng vaø haøm ngaøy thaùng. Trong baøi tieáp,
chuùng ta tieáp tuïc tìm hieåu cô sôû döõ lieäu mySQL.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moân hoïc: MySQL
Baøi 8
Baøi hoïc naøy chuùng ta seõ laøm quen caùch thao taùc treân cô sôû döõ lieäu MySQL:
Giôùi thieäu cô sôû döõ lieäu MySQL
Caøi ñaët MySQL
Caáu hình
Kieåu döõ lieäu
Khai baùo caùc phaùt bieåu
1. GIÔÙI THIEÄU CÔ SÔÛ DÖÕ LIEÄU MYSQL
MySQL laø cô sôû döõ lieäu ñöôïc söû duïng cho caùc öùng duïng Web coù quy moâ vöøa vaø nhoû. Tuy khoâng
phaûi laø moät cô sôû döõ lieäu lôùn nhöng chuùng cuõng coù trình giao dieän treân Windows hay Linux, cho pheùp
ngöôøi duøng coù theå thao taùc caùc haønh ñoäng lieân quan ñeán cô sôû döõ lieäu.
Cuõng gioáng nhö caùc cô sôû döõ lieäu, khi laøm vieäc vôùi cô sôû döõ lieäu MySQL, baïn ñaêng kyù keát noái,
taïo cô sôû döõ lieäu, quaûn lyù ngöôøi duøng, phaàn quyeàn söû duïng, thieát keá ñoái töôïng Table cuûa cô sôû döõ lieäu
vaø xöû lyù döõ lieäu.
Tuy nhieân, trong baát kyø öùng duïng cô sôû döõ lieäu naøo cuõng vaäy, neáu baûn thaân chuùng coù hoã trôï moät
trình giao dieän ñoà hoaï, baïn coù theå söû duïng chuùng tieän lôïi hôn caùc söû duïng Command line. Bôûi vì, cho
duø baïn ñieàu khieån MySQL döôùi baát kyø hình thöùc naøo, muïc ñích cuõng quaûn lyù vaø thao taùc cô sôû döõ
lieäu.
2. CAØI ÑAËT MYSQL
Ñeå caøi ñaët MySQL treân neàn Windows baïn theo caùc böôùc sau:
Tröôùc tieân baïn cheùp taäp tin mysql-4.0.0a-alpha-win.zip vaøo ñóa cöùng hoaëc choïn chuùng töø ñóaq
CD vaø giaûi neùn taäp tin
Chaïy taäp tin Setup.exe, choïn ñóa C hay D
Sau khi caøi ñaët thaønh coâng, baïn kieåm tra trong Windows Services xuaát hieän dòch vuï mySQL
hay khoâng?. Ñeå söû duïng ñöôïc MySQL thì traïng thaùi cuûa dòch vuï naøy phaûi ôû cheá ñoä Started.
Löu yù raèng, trong tröôøng hôïp MySQL khoâng theå chaïy ñöôïc, do dòch vuï cuûa MySQL chöa Started
nhö , ñeå coù theå chaïy ñöôïc MySQL thì baïn caàn moät soá thay ñoåi trong taäp tin my.ini trong thö muïc
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
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
[WinMySQLadmin]
Server=C:/mysql/bin/mysqld-nt.exe
user=root
password=
QueryInterval=10
3. TAÏO CÔ SÔÛ DÖÕ LIEÄU VAØ NGÖÔØI DUØNG
Trong tröôøng hôïp baïn söû duïng giao dieän ñoà hoaï thì duøng ích quaûn trò cô sôû döõ lieäu MySQL, baïn
coù theå chaïy taäp tin mysqlfront.exe trong thö muïc MySQL Control, baèng caùch chaïy taäp tin cöûa soå xuaát
hieän nhö hình 8-1. Neáu laàn ñaàu tieân taïo keát noái cô sôû döõ lieäu, baïn caàn phaûi taïo moät Connection, cung
caáp teân Server hay IP cuûa maùy chöùa MySQL.
Tuy nhieân, trong tröôøng hôïp maùy chöùa cô sôû döõ lieäu MySQL laø maùy ñang söû duïng, baïn coù theå
söû duïng localhost. Ngaøi ra, cuõng gioáng nhö caùc cô sôû döõ lieäu khaùc, Username maëc ñònh cuûa cô sôû döõ
lieäu MySQl laø root vaø Password laø roãng.
Neáu baïn ñaõ coù cô sôû döõ lieäu ñang toàn taïi, baïn coù theå goõ teân cô sôû döõ lieäu trong phaàn Databases (
neáu muoán môû nhieàu database, baïn coù theå duøng daáu ; ñeå phaân caùch).
Trong tröôøng hôïp laàn ñaàu tieân, baïn khoâng caàn cung caáp teân cô sôû döõ lieäu, baïn coù theå taïo chuùng
sau khi keát noái.
Hình 8-1: Keát noái cô sôû döõ lieäu baèng MySQLFront Tool
Sau keát noái cô sôû döõ lieäu thaønh coâng, trình ñieàu khieån cô sôû döõ lieäu MySQL coù giao dieän nhö
hình 8-2, coäng vieäc ñaàu tieân baïn phaûi thöïc hieän laø taïo cô sôû döõ lieäu.
Baét ñaàu töø menu coù teân Tools | Create Database hay choïn teân root@localhost | R-Click | Create
Database, cöûa soå xuaát hieän nhö hình 8-3.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 8-2: Giao dieän ñieàu khieån cô sôû döõ lieäu MySQL
Cung caáp teân cô sôû döõ lieäu, trong tröôøng hôïp naøy baïn coù theå nhaäp Test, baám nuùt OK, cô sôû döõ
lieäu xuaát hieän trong cöûa soå ñieàu khieån.
Hình 8-3: Taïo cô sôû döõ lieäu coù teân Test
Trong caû hai tröôøng hôïp taïo cô sôû döõ lieäu baèng MySQL thaønh coâng nhö treân, baïn coù theå tìm
thaáy teân cô sôû döõ lieäu ñoù trong thö muïc mysql/data nhö hình 8-4 sau:
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 8-4: Thö muïc tin cô sôû döõ lieäu Test
3.1. Quaûn lyù ngöôøi duøng
Laøm theá naøo ñeå ñaêng nhaäo vaøo cô sôû döõ lieäu MySQL, baïn coù theå söû duïng hai caùch nhö trình
baøy ôû treân. Tuy nhieân, sau khi taïo ra caùc username khaùc, baïn coù theå söû duïng chuùng ñeå ñaêng nhaäp.
Ñeå ñaêng nhaäp vaøo MySQL baèng Command line, baïn chæ caàn goõ >mysql – hostname –u username
– p töø daáu nhaéc hay ñaêng nhaäp baèng caùch söû duïng trình giao dieän ñoà hoaï. Töø khoaù -h hæ ra raèng teân
(computer name), IP, hay localhost cuûa maùy coù söû duïng cô sôû döõ lieäu MySQL, -u chæ ra raèng baïn söû
duïng username, username laø teân username, -p ñöôïc chæ ñònh khi username naøy coù password. Trong
tröôøng hôïp password laø roãng, baïn coù theå khoâng cung caáp tham soá –p.
Ñeå taïo User trong cô sôû döõ lieäu MySQL, baïn coù theå söû duïng hai caùch treân. Neáu baïn thöïc hieän
vieäc taïo moät Username baèng Command line, baïn coù theå goõ töø daáu nhaéc nhö phaùt bieåu sau:
GRANT
Select, Insert, Update,
Delete, Index, Alter,
Create, Drop, References
ON *.* TO 'myis'@'%'
IDENTIFIED BY '12345678'
Trong phaùt bieåu treân, vöøa taïo ra User coù teân myis, vôùi hostname laø cô sôû döõ lieäu hieän haønh,
password laø 1234 vaø ñöôïc caùc ñaët quyeàn Select, Insert, Update, Delete, Index, Alter, Create, Drop treân
cô sôû döõ lieäu hieän haønh.
Trong tröôøng hôïp baïn taïo ra moät Username khoâng cung caáp caùc ñaët quyeàn treân cô sôû döõ lieäu,
baïn coù theå thöïc hieän nhö phaùt bieåu taïo username: test, password: 1234 sau:
GRANT
usage
ON *.* TO 'test'@'%'
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
IDENTIFIED BY '1234'
Neáu baïn söû duïng giao dieän ñoà hoaï, baïn coù theå taïo username vaø gaùn quyeàn nhö treân baèng caùch
söû duïng menu coù teân Tools | User-Manager, cöûa soå xuaát hieän nhö hình 8-5.
Hình 8-5: Taïo Username
3.2. Caáp quyeàn cho ngöôøi duøng
Caùc ñaët quyeàn Select, Insert, Update, Delete, Index, Alter, Create, Drop treân cô sôû döõ lieäu, baïn
coù theå tham khaûo chi tieát trong baûng 8-1.
Baûng 8-1: Caùc ñaët quyeàn treân cô sôû döõ lieäu
----------------------------------------------
Loaïi aùp duïng Dieãn giaûi
----------------------------------------------
select tables, Cho pheùp user truy vaán maåu
columns tin töø Table.
insert tables, Cho pheùp user theâm môùi maåu
columns tin vaøo Table.
update tables, Cho pheùp user thay ñoåi giaù
columns trò cuûa maåu tin toàn taïi
trong Table.
delete tables Cho pheùp user maåu tin toàn
taïi trong Table.
index tables Cho pheùp user theâm môùi hay
xoaù chæ muïc cuûa Table.
alter tables Cho pheùp user thay ñoåi caáu
truùc cuûa ñoái töôïng Table
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
hay Database toàn taïi, nhö
theâm coät vaøo trong Table
toàn taïi, thay ñoåi kieåu döõ
lieäu cuûa coät döõ lieäu, ..
create databases Cho pheùp user taïo môùi ñoái
tables töôïng Table hay Database.
drop databases Cho pheùp user xoaù ñoái
tables töôïng Table hay Database.
----------------------------------------------
Xuaát phaùt töø caùc quyeàn coù aûnh höôûng ñeán caáu truùc cô sôû döõ lieäu, caùc ñoái töôïng cuûa cô sôû döõ lieäu
vaø döõ lieäu, baïn coù theå xem xeùt kyõ caøng tröôùc khi caáp quyeàn cho user aøm vieäc treân cô sôû döõ lieäu.
Ngoaøi caùc quyeàn treân, trong MySQL coøn coù moät soá quyeàn khoâng gaùn maëc ñònh nhö trong baûng
8-2, baïn coù theå xem xeùt caùc ñaët quyeàn quaûn trò ñeå caáp cho ngöôøi duøng.
Baûng 8-2: Caùc ñaët quyeàn quaûn trò treân cô sôû döõ lieäu
----------------------------------------------
Loaïi Dieãn giaûi
----------------------------------------------
reload Cho pheùp ngöôøi quaûn trò naïp laïi caùc
Table, quyeàn, host, logs vaø Table.
shutdown Cho pheùp ngöôøi quaûn trò chaám döùt hoaït
ñoäng MySQL Server.
process Cho pheùp ngöôøi quaûn trò xem quaù trình
thöïc hieän cuûa trình chuû vaø coù theå chaám
döùt moät soá quaù trình ñang thöïc thi.
file Cho pheùp döõ lieäu ghi vaøo Table töø taäp
tin.
----------------------------------------------
Löu yù: Nhöõng username bình thöôøng khoâng neân caáp quyeàn nhö trong baûng 8-2 cho hoï, trong
tröôøng hôïp baïn muoán caàp taát caû caùc quyeàn trong baûng 8-1 vaø Baûng 8-2 cho username khi taïo ra hoï,
baïn Table söû duïng töø khoaù All thay vì All Privileges trong phaùt bieåu taïo user nhö sau:
GRANT
ALL
ON *.* TO 'ekhang'@'%'
IDENTIFIED BY '12345678'
Töông töï nhö vaäy, trong tröôøng hôïp baïn khoâng cung caáp baát kyø ñaët quyeàn naøo treân cô sôû döõ
lieäu hieän haønh, baïn coù theå khai baùo phaùt bieåu caáp uyeàn nhö sau:
GRANT
usage
ON *.* TO 'ekhang'@'%'
IDENTIFIED BY '12345678'
3.3. Xoaù quyeàn cuûa user
Ñeå xoaù caùc quyeàn cuûa user töø cô sôû döõ lieäu hieän haønh, baïn coù theå söû duïng phaùt bieåu SQL coù teân
Revoke, phaùt bieåu Revoke ngöôïc laïi vôùi phaùt bieåu Grant.
Neáu baïn xoaù moät soá quyeàn cuûa user, baïn coù theå söû duïng khai baùo nhö phaùt bieåu sau:
Revoke privileges [(columns)]
ON item
From username
Trong tröôøng hôïp xoaù taát caû caùc quyeàn cuûa user, baïn coù theå söû duïng phaùt bieåu nhö sau:
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Revoke All
ON item
From username
Neáu user ñoù ñöôïc caáp quyeàn vôùi tuyø choïn Grant Option, ñeå xoaù caùc quyeàn ñoù cuûa user, baïn coù
theå khai baùo nhö sau:
Revoke Grant Option
ON item
From username
Ñeå tham khaûo chi tieát quaù trình caáp vaø xoaù quyeàn cuûa moät user, baïn coù theå tham khaûo moät soá
phaùt bieåu nhö sau:
Gaùn quyeàn Administrator cho user coù teân fred treân moïi cô sôû döõ lieäu trong MySQL, password
cuûa anh ta laø mnb123, baïn coù theå khai baùo nhö sau:
Grant all
On *
To fred indetifyed by ‘mnb123’
With Grant Option;
Neáu baïn khoâng muoán user coù teân fred trong heä thoáng, baïn coù theå xoaù anh ta baèng caùch khai
baùo phaùt bieåu sau:
Revoke all
On *
From fred;
Taïo moät user coù teân ekhang vôùi password laø 12345678, ñöôïc laøm vieäc treân cô sôû döõ lieäu Test,
khoâng caáp quyeàn cho user naøy, baïn coù theå khai baùo nhö sau:
Grant usage
On Test.*
To ekhang identified by ‘12345678’;
Töông töï nhö vaäy, trong tröôøng hôïp baïn muoán caáp moät soá quyeàn cho user coù teân ekhang treân cô
sôû döõ lieäu Test, baïn coù theå khai baùo nhö sau:
Grant select, insert, delete, update, index, drop
On Test.*
To ekhang;
Neáu baïn muoán xoaù bôùt moät soá quyeàn cuûa user coù teân ekhang treân cô sôû döõ lieäu Test, baïn coù theå
khai baùo nhö sau:
Revoke update, delete, drop
On Test.*
From ekhang;
Nhöng trong tröôøng hôïp xoaù taát caû caùc quyeàn cuûa user coù teân ekhang treân cô sôû döõ lieäu Test,
baïn coù theå khai baùo:
Revoke All
On Test.*
From ekhang;
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
4. KIEÅU DÖÕ LIEÄU CUÛA CÔ SÔÛ DÖÕ LIEÄU MYSQL
Tröôùc khi thieát keá cô sôû döõ lieäu treân MySQL, baïn caàn phaûi tham khaûo moät soá kieåu döõ lieäu
thöôøng duøng, chuùng bao goàm caùc nhoùm nhö: numeric, date and time vaø string.
Ñeàu caàn löu yù trong khi thieát keá cô sôû döõ lieäu, baïn caàn phaûi xem xeùt kieåu döõ lieäu cho moât coät
trong Table sao cho phuø hôïp vôùi döõ lieäu cuûa theá giôùi thöïc.
Ñieàu naøy coù nghóa laø khi choïn döõ lieäu cho coät trong Table, baïn phaûi xem xeùt ñeán loaïi döõ lieäu
caàn löu tröõ thuoäc nhoùm kieåu döõ lieäu naøo, chieàu daøi cuõng nhö caùc raøng buoäc khaùc, nhaèm khai baùo cho
phuø hôïp.
4.1. Loaïi döõ lieäu numeric
Kieåu döõ lieäu numeric bao goàm kieåu soá nguyeân trình baøy trong baûng 8-3 vaø kieåu soá chaám ñoäng,
trong tröôøng hôïp döõ lieäu kieåu daáu chaám ñoäng baïn caàn phaûi chæ roõ bao nhieàu soá sau ñaáu phaàn leû nhö
trong baûng 8-4.
Baûng 8-3: Kieåu döõ lieäu soá nguyeân
----------------------------------------------
Loaïi Range Bytes Dieãn giaûi
----------------------------------------------
tinyint -127->128 1 Soá nguyeân raát nhoû.
hay
0..255
smallint -32768 2 Soá nguyeân nhoû.
->32767
hay
0..65535
mediumint -8388608 3 Soá nguyeân vöøa.
-> 838860
hay
0..16777215
int -231
->231
-1 4 Soá nguyeân.
hay
0..232
-1
bigint -263
->263
-1 8 Soá nguyeân lôùn.
hay
0..264
-1
----------------------------------------------
Baûng 8-4: Kieåu döõ lieäu soá chaám ñoäng
----------------------------------------------
Loaïi Range Bytes Dieãn giaûi
----------------------------------------------
float phuï thuoäc Soá thaäp phaân
Soá thaäp daïng Single hay
Phaân Double.
Float(M,D) 4 Soá thaäp phaân
±1.175494351E-38 daïng Single.
±3.40282346638
Double(M,D) 8 Soá thaäp phaân
daïng Double.
±1.7976931348623157308
±2.2250738585072014E-308
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Float(M[,D])
Soá chaám ñoäng löu
döôùi daïng char.
----------------------------------------------
4.2.
4.3.
Loaïi döõ lieäu Datet and Time
Kieåu döõ lieäu Date and Time cho pheùp baïn nhaäp lieäu döôùi daïng chuoãi hay daïng soá nhö trong
baûng 8-5.
Baûng 8-5: Kieåu döõ lieäu soá nguyeân
----------------------------------------------
Loaïi Range Dieãn giaûi
----------------------------------------------
Date 1000-01-01 Date trình baøy döôùi daïng
yyyy-mm-dd.
Time -838:59:59 Time trình baøy döôùi
838:59:59 daïng hh:mm:ss.
DateTime 1000-01-01 Date vaø Time trình baøy döôùi
00:00:00 daïng yyyy-mm-dd hh:mm:ss.
9999-12-31
23:59:59
TimeStamp[(M)]
1970-01-01 TimeStamp trình baøy döôùi
00:00:00 daïng yyyy-mm-dd hh:mm:ss.
Year[(2|4)]
1970-2069 Year trình baøy döôùi
1901-2155 daïng 2 soá hay 4 soá.
----------------------------------------------
Ñoái vôùi kieåu döõ lieäu TimeStamp, baïn coù theå ñònh daïng nhieàu caùch nhö trình baøy trong baûng 8-
6.
Baûng 8-6: Trình baøy ñaïi dieän cuûa TimeStamp
----------------------------------------------
Loaïi Hieån thò
----------------------------------------------
TimeStamp YYYYMMDDHHMMSS
TimeStamp(14) YYYYMMDDHHMMSS
TimeStamp(12) YYMMDDHHMMSS
TimeStamp(10) YYMMDDHHMM
TimeStamp(8) YYYYMMDD
TimeStamp(6) YYMMDD
TimeStamp(4) YYMM
TimeStamp(2) YY
----------------------------------------------
Loaïi döõ lieäu String
Kieåu döõ lieäu String chia laøm ba loaïi, loaïi thöù nhaát nhö char (chieàu daøi coá ñònh) vaø varchar
(chieàu daøi bieán thieân). Char cho pheùp baïn nhaäp lieäu döôùi daïng chuoãi vôùi chieáu daøi lôùn nhaát baèng
chieàu daøi baïn ñaõ ñònh nghóa, nhöng khi truy caäp döõ lieäu treân Field coù khai baùo daïng naøy, baïn caàn
phaûi xöû lyù khoaûng traéng. Ñieàu naøy coù nghóa laø neáu khai baùo chieàu daøi laø 10, nhöng baïn chæ nhaäp
hcuoãi 4 kyù töï, MySQL löu tröõ trong boä nhôù chieàu daøi 10.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Ngöôïc laïi vôùi kieåu döõ lieäu Char laø Varchar, chieàu daøi lôùn haát ngöôøi duøng coù theå nhaäp vaøo baèng
chieàu daøi baïn ñaõ ñònh nghóa cho Field naøy, boä nhôù chæ löu tröõ chieàu daøi ñuùng vôùi chieàu daøi cuûa chuoãi
baïn ñaõ nhaäp.
Nhö vaäy, coù nghóa laø neáu baïn khai baùo kieåu varchar 10 kyù töï, nhöng baïn hcæ nhaäp 5 kyù töï,
MySQL chæ löu tröõ chieàu daøi 5 kyù töï, ngoaøi ra, khi baïn truy caäp ñeán Field coù kieåu döõ lieäu naøy, baïn
khoâng caàn phaûi giaûi quyeát khoaûng traéng.
Loaïi thöù hai laø Text hay Blob, Text cho pheùp löu chuoãi raát lôùn, Blob cho pheùp löu ñoái töôïng nhò
phaân. Loaïi thöù 3 laø Enum vaø Set. Baïn coù theå tham khaûo caû ba loaïi treân trong baûng 8-7.
Baûng 8-7: Kieåu döõ lieäu String
----------------------------------------------
Loaïi Range Dieãn giaûi
----------------------------------------------
char 1-255 Chieàu daøi cuûa chuoãi lôùn nhaát
characters 255 kyù töï.
varchar 1-255 Chieàu daøi cuûa chuoãi lôùn nhaát
characters 255 kyù töï (characters).
tinyblob 28
-1 Khai baùo cho Field chöùa kieåu
ñoái töôïng nhò phaân côû 255
characters.
tinytext 28
-1 Khai baùo cho Field chöùa kieåu
chuoãi côû 255 characters.
blob 216
-1 Khai baùo cho Field chöùa kieåu
blob côû 65,535 characters..
text 216
-1 Khai baùo cho Field chöùa kieåu
chuoãi daïng vaên baûn côû 65,535
characters.
Mediumblob
224
-1 Khai baùo cho Field chöùa kieåu
blob vöøa khoaûng 16,777,215
characters.
Mediumtext
224
-1 Khai baùo cho Field chöùa kieåu
chuoãi daïng vaên baûn vöøa
khoaûng 16,777,215
characters.
Longblob
232
-1 Khai baùo cho Field chöùa kieåu
blob lôùn khoaûng
4,294,967,295 characters.
Longtext
232
-1 Khai baùo cho Field chöùa kieåu
chuoãi daïng vaên baûn lôùn
khoaûng 4,294,967,295
characters.
----------------------------------------------
5. PHAÙT BIEÅU SQL
MySQL laø moät heä thoáng quaûn lyù cô sôû döõ lieäu quan heä (RDBMS) hay coøn ñöôïc goïi laø Relational
Database Management System. RDBMS laø moät trong nhöõng moâ hình cô sôû döõ lieäu quan heä thoâng
duïng hieän nay.
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
5.1.
5.2.
5.2.1.
Nhoùm phaùt bieåu SQL
Nhö ñaõ trình baøy trong chöông 3, haàu heát saûn phaåm cô sôû döõ lieäu quan heä hieän nay ñeàu döïa
treân chuaån cuûa SQL vaø ANSI-SQL, chaúng haïn nhö SQL Server, Oracle, PostgreSQL vaø MySQL. Ñieàu
naøy coù nghóa laø taát caû nhöõng cô sôû döõ lieäu quan heä ñeàu phaûi coù nhöõng tieâu chuaån theo cuù phaùp SQL
vaø MySQL cuõng khoâng phaûi laø ngoaïi leä.
Ngoân ngöõ SQL chia laøm 4 loaïi sau:
DDL (Data Definition Language): Ngoân ngöõ ñònh nghóa döõ lieäu, duøng ñeå taïo cô sôû döõ lieäu,
ñònh nghóa caùc ñoái töôïng cô sôû döõ lieäu nhö Table, Query, Views hay caùc ñoái töôïng khaùc.
DML (Data Manipulation Language): Ngoân ngöõ thao taùc döõ lieäu, duøng ñeå thao taùc döõ lieäu,
chaúng haïn nhö caùc phaùt bieåu: Select, Inert, Delete, Update, ...
DCL: (Data Control Language): Ngoân ngöõ söû duïng truy caäp ñoái töôïng cô sôû döõ lieäu, duøng ñeå
thay ñoåi caáu truùc, taïo ngöôøi duøng, gaùn quyeàn chaúng haïn nhö: Alter, Grant, Revoke, ...
TCL: (Transaction Control Language): Ngoân söû duïng ñeå khai baùo chuyeån taùc chaúng haïn nhö:
Begin Tran, Rollback, Commit, ...
Phaùt bieåu SQL thao taùc döõ lieäu
Phaùt bieåu SQL bao goàm caùc loaïi nhö sau:
SELECT (Truy vaán maåu tin).
INSERT (Theâm maåu tin).
UPDATE (Caäp nhaät döõ lieäu).
DELETE (Xoaù maåu tin).
Khaùi nieäm cô baûn veà Select
Phaùt bieåu Select duøng ñeå truy vaán döõ lieäu töø moät hay nhieàu baûng khaùc nhau, keát quaû traû veà laø
moät taäp maåu tin thoaõ caùc ñieàu kieän cho tröôùc neáu coù, cuù phaùp cuûa phaùt bieåu SQL daïng SELECT:
SELECT <danh saùch caùc coät>
[FROM <danh saùch baûng>]
[WHERE <caùc ñieàu kieän raøng buoäc>]
[GROUP BY <teân coät / bieåu thöùc trong SELECT> ]
[HAVING <ñieàu kieän baét buoäc cuûa GROUP BY>]
[ORDER BY <danh saùch coät>]
[LIMIT FromNumber | ToNumber]
Danh saùch caùc coät: Khai baùo caùc teân coät, bieåu thöùc keát hôïp giöõa caùc coät cuûa Table baïn caàn truy
luïc. Trong tröôøng hôïp coù hai coät cuøng teân cuûa hai Table trong phaùt bieåu, baïn caàn phaûi chæ ñònh teân
Table ñi tröôùc. Chaúng haïn, nhö ví duï 8-1.
Ví duï 8-1: Phaùt bieåu SELECT
Select ItemID,ItemName
From tblItems
Where Cost>100;
Select tblOrders.OrderID,OrderDate,ItemID,Qtty
From tblOrders,tblOrderDetails
Where tblOrders.OrderID = _ tblOrderDetail.OrderID;
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
5.2.2. Phaùt bieåu SELECT vôùi meänh ñeà FROM
Phaùùt bieåu SQL daïng SELECT laø moät trong nhöõng phaùt bieåu yeâu caàu MySQL truy luïc döõ lieäu
treân cô sôû döõ lieäu chæ ñònh. SELECT duøng ñeå ñoïc thoâng tin töø cô sôû döõ lieäu theo nhöõng tröôøng quy
ñònh, hay nhöõng bieåu thöùc cho tröôøng ñoù.
Meänh ñeà FROM chæ ra teân moät baûng hay nhöõng baûng coù quan heä caàn truy vaán thoâng tin.
Thöôøng chuùng ta söû duïng coâng cuï MySQL-Front | Query ñeå thöïc thi phaùt bieåu SQL.
Sau khi thöïc thi phaùt bieåu SQL, keát quaû traû veà soá maåu tin vaø toång soá maåu tin ñöôïc laáy ra töø
baûng.
Daáu * cho pheùp loïc maåu tin vôùi taát caû caùc tröôøng trong baûng, neáu muoán chæ roõ nhöõng tröôøng naøo
caàn loïc baïn caàn neâu teân cuï theå nhöõng tröôøng ñoù.
Ñeå tieän tham khaûo trong giaùo trình naøy chuùng toâi söû duïng moät phaàn cô sôû döõ lieäu coù saün cuûa
MySQL, ñoàng thôøi boå sung theâm cô sôû döõ lieäu daønh cho öùng duïng baùn haøng qua maïng.
Cô sôû döõ lieäu baùn haøng qua maïng coù teân laø Test, vaø bao goàm nhieàu baûng. Baèng phaùt bieåu
SELECT chuùng ta coù theå bieát soá baûng hay ñoái töôïng khaùc ñang coù trong cô sôû döõ lieäu Test
Ví duï 8-2: Thöïc thi phaùt bieåu SQL SELECT heä thoáng
show tables
from Test
/* Hieån thò taát caû teân baûng cuûa cô sôû döõ lieäu hieän haønh */
Keát quaû traû veà danh saùch baûng nhö sau:
TABLES_IN_TEST
--------------------------------------
tblCountries
tblProvinces
tblAuthors
tblPayment
tblItemsion
tblCustomers
tblSoftware
Ghi chuù:
Baïn coù theå söû duïng phaùt bieåu SQL treân ñeå hieån thò nhöõng ñoái töôïng trong cô sôû döõ lieäu, baèng caùch thay
theá caùc tham soá vaø ñieàu kieän.
Cuù phaùp ñôn giaûn
Select *
From tablename
/* Loïc taát caû soá lieäu cuûa taát caû caùc coät (field) cuûa tablename*/
Select field1,field2
From tablename
/* Loïc taát caû soá lieäu cuûa 2 field: field1, field2 cuûa tablename*/
Select *
From tablename
Limit 0,10
/* Loïc top 10 maåu tin ñaàu tieân cuûa taát caû caùc field cuûa tablename*/
Select field1, field2
From tablename
Limit 0,10
/* Loïc top 10 maåu tin ñaàu tieân cuûa 2 fields field1, field2 cuûa
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
tablename*/
Ví duï 8-3: phaùt bieåu phaùt bieåu SQL daïng Select
Select *
From tblCountries
/* Lieät keâ taát caû caùc quoác gia trong baûng tblCountries hoaëc baïn coù theå lieät keâ teân nhö phaùt bieåu sau */
Select CountryName
From tblCountries
Keát quaû traû veà nhö sau:
CountryCode CountryName
-------- ---------- ------------ -------------
VNA Vietnam
SNG Singapore
USS United Stated
UKD United Kingdom
GER Germany
CAM Cambodia
THA Thai Land
MAL Malaysia
INC Indonesia
CHN China
5.2.3. Phaùt bieåu SQL daïng SELECT vôùi meänh ñeà Where
Khi baïn duøng meänh ñeà WHERE ñeå taïo neân tieâu chuaån caàn loïc maåu tin theo tieâu chuaån ñöôïc
ñònh nghóa, thoâng thöôøng WHERE duøng coät (tröôøng) ñeå so saùnh vôùi giaù trò, coät khaùc, hay bieåu thöùc
chöùa coät (tröôøng) baát kyø coù trong baûng. Phaùt bieåu SQL daïng Select vôùi meänh ñeà Where cuù phaùp coù
daïng nhö sau:
Select *
from tablename
where conditions
Select field1, field2, field3
from tablename
where conditions
Vôùi conditions trong caû hai phaùt bieåu treân ñöôïc ñònh nghóa ñieàu kieän truy vaán nhö khai baùo sau:
Select *
From tablename
where field1>10
select *
from tblCountries
where CountryCode in('VNA','CHN')
Caùc pheùp toaùn so saùnh trong conditions bao goàm:
♦ > : lôùn hôn where Amount > 100000;
♦ < : nhoû hôn where Amount < 100000;
♦ >= : lôùn hôn hoaëc baèng where Amount >= 100000;
♦ >= : nhoû hôn hoaëc baèng where Amount <= 100000;
♦ = : baèng where CustID=’12';
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
♦ != : Khaùùc where CustID!='12';
♦ <> : Khaùc where CustID<>'12';
Caùc pheùp toaùn logic coù theå söû duïng trong conditions
♦ and : Pheùp toaùn "and"
SELECT *
FROM tblOrders
Where Amount!>100000
And CustID='12';
♦ Or : Pheùp toaùn "or"
SELECT *
FROM tblOrderDetails
Where Amount!>100000
Or CustID=‘12’;
♦ Not : Pheùp toaùn phuû ñònh (not)
SELECT *
FROM tblOrders
where OrderDate is not null;
♦ Not in : Pheùp toaùn phuû ñònh (not in)
SELECT *
FROM tblOrders
where OrderID not in (‘12’,’15’);
♦ Between: Keát quaû thuoäc trong mieàn giaù trò
SELECT *
FROM tblOrders
Where Amount between 10
And 500;
♦ Like : Pheùp toaùn so saùnh gaàn gioáng, söû duïng daáu % ñeå theå hieän thay theá baèng kyù töï ñaïi
dieän
SELECT *
FROM tblCustomers
where CustName like '%A';
♦ Not Like : Pheùp toaùn phuû ñònh so saùnh gaàn gioáng, söû duïng daáu % ñeå theå hieän thay theá
baèng kyù töï ñaïi dieän
SELECT *
FROM tblCustomers
where CustName not like '%A';
♦ IN : Pheùp toaùn so saùnh trong moät taäp hôïp
SELECT *
FROM tblOrders
Where OrderID in ('100','200','300');
Ví duï 8-5: Ví duï veà SQL daïng SELECT vaø Where
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
/* > : lôùn hôn */
Select *
From tblOrders
Where Amount > 100000;
/* < : nhoû hôn */
Select *
From tblOrders
Where Amount < 100000;
/* >=: lôùn hôn hoaëc baèng */
Select *
From tblOrders
Where Amount >= 100000;
/* >=: nhoû hôn hoaëc baèng */
Select *
From tblOrders
Where Amount <= 100000;
/* = : baèng */
Select *
From tblOrders
Where CustID=‘12’;
/* != :Khaùùc */
Select *
From tblOrders
Where CustID !=‘12’;
/* <>: Khaùc */
Select *
From tblOrders
Where CustID <>‘12’;
/* !> : Khoâng lôùn hôn */
Select *
From tblOrders
Where Amount !> 100000;
/* !< : Khoâng nhoû hôn */
Select *
From tblOrders
Where Amount !< 100000;
-- Caùc pheùp toaùn logic
/* and : Pheùp toaùn vaø */
Select *
From tblOrders
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Where Amount !>100000
And CustID=‘12’;
/* Or : Pheùp toaùn hoaëc */
Select *
From tblOrders
Where Amount !>100000
Or CustID=‘12’;
/* Not : Pheùp toaùn phuû ñònh */
Select *
From tblOrders
Where OrderDate is NOT NULL;
/* Between: giaù trò naèm trong mieàn */
Select *
From tblOrders
Where Amount
Between 10 and 500;
/* Like : Pheùp toaùn so saùnh gaàn gioáng, söû duïng daáu %
ñeå theå hieän thay theá baát kyø kyù töï */
Select *
From tblOrders
Where Descriion like '%A'
Or CustID ='152';
/* Not Like : Pheùp toaùn phuû ñònh so saùnh gaàn gioáng,
söû duïng daáu % ñeå theå hieän thay theá baát kyø kyù töï */
Select *
From tblOrders
Where Descriion not like '%A'
Or CustID ='152';
/* IN: Pheùp toaùn so saùnh trong moät taäp hôïp */
Select *
From tblOrders
Where OrderID in ('134','244','433');
/* Not IN : Pheùp toaùn phuû ñònh so saùnh trong moät taäp hôïp */
Select *
From tblOrders
Where OrderID not in ('134','244','433');
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
5.2.4. Meänh ñeà Order by
Thoâng thöôøng, trong khi truy vaán maåu tin töø baûng döõ lieäu, keát quaû hieån thò caàn saép xeáp theo
chieàu taêng hay giaûm döïa treân kyù töï ALPHABET. Nhöng baïn cuõng coù theå saép xeáp theo moät tieâu chuaån
baát kyø, chaúng haïn nhö bieåu thöùc.
Khi saép xeáp döõ lieäu trình baøy trong keát quaû, caàn phaûi choïn tröôøng hay bieåu thöùc theo traät töï
taêng daàn hoaëc giaûm daàn.
Cuù phaùp cho meänh ñeà ORDER BY cuøng vôùi traïng thaùi taêng hay giaûm, öùng vôùi ASC saép xeáp
taêng daàn, DESC giaûm daàn.
Cuù phaùp coù daïng nhö sau:
Order by columnname DESC
Order by columnname1 + columnname2 DESC
Order by columnname ASC
Order by columnname1 ASC, columnname2 DESC
Ví duï 8-6: SELECT vôùi meänh ñeà Order by DESC
/*-- Giaûm daàn theo thôøi gian */
Select OrderID , OrderDate, CustID, Amount
From tblOrders
Where Amount >1000
Order by OrderDate DESC
Keát quaû traû veà nhö sau:
OrderID OrderDate CustID Amount
---------- ------------ ----------------------
17 2001-09-20 12 178.243
18 2001-09-20 12 2.78534
16 2001-09-19 12 398.798
15 2001-09-18 12 5.758.876
14 2001-09-17 12 5.539.647
12 2001-09-16 12 1.330
13 2001-09-16 12 1.585.563
31 2001-09-16 13 459.525
11 2001-09-15 11 1.401.803
28 2001-09-15 13 1.45200
Ví duï 8-7: SQL daïng SELECT vôùi meänh ñeà Order by vaø ASC
/*-- Taêng daàn theo thôøi gian */
Select OrderID , OrderDate, CustID, Amount
From tblOrders
Where Amount >1000
Order by OrderDate ASC
Keát quaû traû veà nhö sau
OrderID OrderDate CustID Amount
---------- --------------------------- --------
01 2001-09-05 10 2.903.576
02 2001-09-05 10 48.168.567
03 2001-09-05 10 5.107.032
04 2001-09-08 10 2.355.537
05 2001-09-08 16 1.817.487
06 2001-09-10 16 26.000
19 2001-09-10 12 575.667
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
29 2001-09-10 13 466.500
07 2001-09-11 16 186.782
23 2001-09-11 12 459.162
Neáu muoán saép xeáp theo nhieàu coät (tröôøng), chæ caàn söû duïng daáu phaåy (,) ñeå phaân caùch caùc coät.
Ví duï 8-7: SELECT vôùi meänh ñeà Order by vôùi 2 coät döõ lieäu
Select OrderID , OrderDate, CustID, Amount
From tblOrders
Where Amount >1000
Order by OrderID,CustID DESC
Keát quaû traû veà nhö sau:
OrderID OrderDate CustID Amount
---------- --------------------------- --------
31 2001-09-16 13 459.525
30 2001-09-15 13 153.120
29 2001-09-10 13 466.500
28 2001-09-15 13 145.200
27 2001-09-14 13 603.033
26 2001-09-13 13 230.000
25 2001-09-11 13 244.904
24 2001-09-12 13 1.367.228
23 2001-09-11 12 459.162
19 2001-09-10 12 575.667
Neáu muoán saép xeáp theo nhieàu tröôøng keát hôïp, chæ caàn duøng thöù töï töøng coät caùch nhau baèng daáu
+.
Ví duï 8-8: SELECT vôùi meänh ñeà Order by hôïp 2 coät
/*-- Giaûm daàn theo soá OrderID vaø CustID */
Select OrderID , OrderDate, CustID, Amount
From tblOrders
Where Amount >1000
Order by OrderID + CustID DESC
Keát quaû traû veà nhö sau:
OrderID OrderDate CustID Amount
---------- --------------------------- --------
31 2001-09-16 13 459.525
30 2001-09-15 13 153.120
29 2001-09-10 13 466.500
28 2001-09-15 13 145.200
27 2001-09-14 13 603.033
26 2001-09-13 13 230.000
25 2001-09-11 13 244.904
24 2001-09-12 13 1.367.228
23 2001-09-11 12 459.162
19 2001-09-10 12 575.667
Neáu trong phaùt bieåu SQL daïng SELECT coù nhieàu baûng keát hôïp laïi vôùi nhau, baïn coù theå duøng
theâm teân baûng öùng vôùi coät cuûa baûng ñoù. Phaàn naøy seõ ñöôïc dieãn giaûi cuï theå hôn trong phaàn keá tieáp
(JOIN -Pheùp hôïp).
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
5.2.5. SQL daïng SELECT vôùi meänh ñeà GROUP BY
Khi truy vaán maåu tin treân moät hay nhieàu baûng döõ lieäu, thoâng thöôøng coù nhöõng nghieäp vuï thuoäc
tröôøng naøo ñoù coù cuøng giaù trò, ví duï khi hieån thò hôïp ñoàng phaùt sinh trong thaùng, keát quaû seõ coù nhieàu
hôïp ñoàng cuûa khaùch haøng laëp ñi laëp laïi nhö ví duï 8-9.
Ví duï 8-9: SQL daïng SELECT vôùi meänh ñeà Order by
Select CustID, Amount
from tblOrders
Vôùi phaùt bieåu treân keát quaû traû veà nhö sau:
CustID Amount
---------- ------------------------
10 2.903.576
10 48.168.567
10 5.107.032
10 2.3555347
16 181.074.847
16 26.000
16 1.867.682
16 3.600.000
16 195.713.899
16 961.804.228
16 140.180.347
12 138
12 158.555.638
12 5.539.647
12 575.887.767
12 39.879.489
12 17.824.938
12 278.503.048
12 5.756.667
12 459.162
13 136.727.628
13 244.904
13 230.000
13 603.033
13 1.452.000
13 4.665.100
13 1.531.200
13 459.525
Trong baùo caùo chuùng ta laïi caàn phaûi bieát moãi khaùch haøng coù bao nhieâu laàn traû tieàn, toång soá tieàn
cuûa moãi khaùch haøng ñaõ traû laø bao nhieâu?
Ñeå laøm ñieàu naøy, chuùng ta söû duïng meänh ñeà GROUP BY trong phaùt bieåu SQL daïng SELECT
cuøng vôùi moät soá haøm trong MySQL, baïn tham khaûo ví duï 8-10 ñöôïc trình baøy chi tieát töø ví duï 4-8
nhöng nhoùm maåu tin baèng meänh ñeà Group By.
Ví duï 8-10: SQL daïng SELECT vôùi meänh ñeà Group By
Select CustID, count (CustID),
Sum(Amount)
From tblOrders
Group by CustID
Order by CustID
Keát quaû traû veà nhö sau:
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
CustID
---------- ---- -------------------
16 7 2.956.562.368
12 9 3.843.022.604
13 8 145.913.378
10 4 72.382.804
5.3.
5.3.1.
Caùc haøm thoâng duïng trong MySQL
Caùc haøm trong phaùt bieåu GROUB BY
Haøm AVG: Haøm traû veà giaù trò bình quaân cuûa coät hay tröôøng trong caâu truy vaán, ví duï nhö
phaùt bieåu sau:
Select AVG(Amount)
From tblOrders
Haøm MIN: Haøm traû veà giaù trò nhoû nhaát cuûa coät hay tröôøng trong caâu truy vaán, ví duï nhö
phaùt bieåu sau:
Select Min(Amount)
From tblOrders
Haøm MAX: Haøm traû veà giaù trò lôùn nhaát cuûa coät hay tröôøng trong caâu truy vaán, ví duï nhö caùc
phaùt bieåu sau:
Select Max(Amount)
From tblOrders
Haøm Count: Haøm traû veà soá löôïng maåu tin trong caâu truy vaán treân baûng, ví duï nhö caùc phaùt
bieåu sau:
Select count(*)
From tblOrders
Select count(CustID)
From tblOrders
Select count(*)
From tblOrderDetails
Haøm Sum: Haøm traû veà toång caùc giaù trò cuûa tröôøng, coät trong caâu truy vaán, ví duï nhö caùc phaùt
bieåu sau:
Select sum(Amount)
From tblOrders
Chaúng haïn, baïn coù theå tham khaûo dieãn giaûi toaøn boä caùc haøm duøng trong meänh ñeà GROUP BY.
Ví duï 8-11: SQL daïng SELECT vôùi Group By vaø caùc haøm
Select CustID,
Count (CustID),Sum(Amount),
Max(Amount),
Min(Amount),
Avg(Amount)
From tblOrders
Group by CustID
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Order by CustID
Keát quaû traû veà nhö sau:
CustID
---------- ----------- -------------------------
16 7 2956562368 1.95713899 26000 422366052
12 9 3843022604 39879489 459162 427002511
13 8 145913378 1.36727628 230000 18239172.25
10 4 72382804 48168567 2903576 18095701
5.3.2. Caùc haøm xöû lyù chuoãi
Haøm ASCII: Haøm traû veà giaù trò maõ ASCII cuûa kyù töï beân traùi cuûa chuoãi, ví duï nhö khai baùo:
Select ASCII('TOI')
Keát quaû traû veà nhö sau:
84
Haøm Char: Haøm naøy chuyeån ñoåi kieåu maõ ASCII töø soá nguyeân sang daïng chuoãi:
Select char(35)
Keát quaû traû veà nhö sau:
#
Haøm UPPER: Haøm naøy chuyeån ñoåi chuoãi sang kieåu chöõ hoaï:
Select UPPER('Khang')
Keát quaû traû veà nhö sau:
KHANG
Haøm LOWER: Haøm naøy chuyeån ñoåi chuoãi sang kieåu chöõ thöôøngï:
Select LOWER('Khang')
Keát quaû traû veà nhö sau:
khang
Haøm Len: Haøm naøy traû veà chieàu daøi cuûa chuoãi:
Select len('I Love You')
Keát quaû traû veà nhö sau:
10
Thuû tuïc LTRIM: Thuû tuïc loaïi boû khoaûng traéng beân traùi cuûa chuoãiï:
Select ltrim(' Khang')
Keát quaû traû veà nhö sau:
'khang'
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Thuû tuïc RTRIM: Thuû tuïc loaïi boû khoaûng traéng beân phaûi cuûa chuoãiï:
Select ltrim('Khang ')
Keát quaû traû veà nhö sau:
'khang'
Haøm Left: Haøm traû veà chuoãi beân traùi tính töø ñaàu cho ñeán vò trí thöù n:
Select left('Khang',3)
Keát quaû traû veà nhö sau:
'Kha'
Haøm Right: Haøm traû veà chuoãi beân phaûi tính töø cuoái cho ñeán vò trí thöù n:
Select Right('KHang',4)
Keát quaû traû veà nhö sau:
'Hang'
Haøm Instr: Haøm traû veà vò trí chuoãi baét ñaàu cuûa chuoãi con trong chuoãi xeùt:
Select INSTR ('Khang','Pham Huu Khang')
Keát quaû traû veà nhö sau:
11
11 laø töông ñöông vò trí thöù 11 cuûa chöõ Khang trong chuoãi "Pham Huu Khang"
5.3.3. Caùc haøm veà xöû lyù thôøi gian
Haøm CurDate(): Haøm traû veà ngaøy, thaùng vaø naêm hieän haønh cuûa heä thoáng:
Select curdate() as 'Today is’
Keát quaû traû veà nhö sau
Today is
---------------------------
2001-11-21
Haøm CurTime(): Haøm traû veà giôø, phuùt vaø giaây hieän haønh cuûa heä thoáng:
Select curtime() as 'Time is’
Keát quaû traû veà nhö sau
Time is
---------------------------
09:12:05
Haøm Period_Diff: Haøm traû veà soá ngaøy trong khoaûng thôøi gian giöõa 2 ngaøyï:
Select
Period_diff (OrderDate, getdate())
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
as 'So ngay giua ngay thu tien ñen hom nay:'
from tblOrders
Keát quaû traû veà nhö sau
So ngay giua ngay thu tien ñen hom nay:
---------------------------------
74
72
Haøm dayofmonth: Haøm dayofmonth traû veà ngaøy thöù maáy trong thaùng:
Select dayofmonth(curdate())
as 'hom nay ngay
Keát quaû traû veà nhö sau:
21
Ngoaøi caùc haøm trình baøy nhö treân, baïn coù theå tìm thaáy nhieàu haøm xöû lyù veà thôøi gian trong
phaàn Funtions xuaát hieän beân phaûi maøn hình cuûa trình ñieàu khieån nhö hình 8-6.
Hình 8-6: Söû duïng chöùc naêng Funcitons
5.3.4. Caùc haøm veà toaùn hoïc
Haøm sqrt: Haøm traû veà laø caên baät hai cuûa moät bieåu thöùc:
Select sqrt (4)
Keát quaû traû veà laø
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
2
Haøm Round: Haøm traû veà laø soá laøm troøn cuûa moät bieåu thöùc:
Select round (748.58,-1)
Keát quaû traû veà laø
7500
Ñeå tham khaûo theâm moät soá haøm khaùc baïn coù theå tham khaûo trong phaàn Functions nhö hình
8-9.
5.4. Phaùt bieåu SQL daïng Select vôùi AS
Khi caàn thieát phaûi thay ñoåi teân tröôøng naøo ñoù trong caâu truy vaán, baïn chæ caàn duøng phaùt bieåu
AS. AS cho pheùp aùnh xaï teân cuõ, hay giaù trò chöa coù teân thaønh teân môùi (header).
Ví duï, khi söû duïng GROUP BY ôû trong phaàn treân, nhöõng coät taïo ra töø caùc pheùp toaùn count,
sum, max, min, ... cho ra keát quaû khoâng coù header, nghóa laø khoâng coù teân coät ñeå tham chieáu trong khi
goïi ñeán chuùng. Chuùng ta phaûi caàn phaùt bieåu AS cho nhöõng tröôøng hôïp naøy.
Ví duï 4-11: SQL daïng SELECT vôùi AS vaø caùc haøm
Select CustID,
Count (CustID) as No,
Sum(Amount) as TIENHD,
Max(Amount) as HDLONNHAT,
Min(Amount) as HDNHONHAT,
Avg(Amount) as TRUNGBINH
From tblOrders
Group by CustID
Order by CustID
Keát quaû hieån thò nhö sau:
CustID No TIENHD HDLONNHAT HDNHONHAT TRUNGBINH
---------- ----------- ------------------------
16 7 2956562368 1.95713899 26000 422366052
12 9 3843022604 39879489 459162 427002511
13 8 145913378 1.36727628 230000 18239172.25
10 4 72382804 48168567 2903576 18095701
5.5. Phaùt bieåu SQL daïng Select vôùi Limit N , M
Phaùt bieåu SQL daïng SELECT cho pheùp truy luïc chæ moät soá maåu tin tính töø vò trí thöù n ñeán vò
trí thöù m trong Table (theo moät tieâu chuaån hay saép xeáp naøo ñoù). Ñeå laøm ñieàu naøy, trong phaùt bieåu
SQL daïng SELECT baïn duøng chæ ñònh töø khoaù LIMIT vôùi soá löôïng maåu tin caàn laáy töø vò trí thöù n
ñeán m.
Chaúng haïn, trong tröôøng hôïp baïn khai baùo Select * from tblOrders limit 0,10. Keát quaû seõ traû veà
10 maåu tin ñaàu tieân trong baûng tblOrders.
Baïn cuõng coù theå söû duïng keát hôïp LIMIT vôùi caùc meänh ñeà nhö WHERE, ORDER BY nhaèm taïo
ra keát quaû nhö yù muoán.
Do yeâu caàu khaùc nhau thoâng qua phaùt bieåu SQL daïng SELECT coù söû duïng LIMIT, nghóa laø keát
quaû traû veà soá löôïng 10 maåu tin ñaàu tieân vôùi taát caû caùc coät trong baûng tblOrders
Ví duï 8-12: Phaùt bieåu SQL daïng SELECT vôùi Limit N,M
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Select *
From tblOrders
Limit 0,10
Keát quaû traû veà nhö sau:
OrderID OrderDate CustID Amount
---------- --------------------------- -------
01 2001-09-05 10 2903576
02 2001-09-05 10 48168567
03 2001-09-05 10 5107032
04 2001-09-08 10 2.3555347
05 2001-09-08 16 1.81074847
06 2001-09-10 16 26000
07 2001-09-11 16 1867682
08 2001-09-12 16 3600000
09 2001-09-13 16 1.95713899
10 2001-09-14 16 9.61804228
Neáu muoán loïc ra 10 hôïp ñoàng coù soá tieàn nhieàu nhaát, baïn chæ caàn söû duïng saép xeáp theo coät
TotalAmount hay Amount trong baûng tblOrders.
Ví duï 8-13: Phaùt bieåu SQL daïng SELECT vôùi Limit N,M
Select OrderID,OrderDate,CustID,Amount
From tblOrders
Order by Amount Desc
Limit 0,10
Keát quaû traû veà nhö sau:
OrderID OrderDate CustID Amount
---------- --------------------------- -------
06 2001-09-10 16 26000
26 2001-09-13 13 230000
25 2001-09-11 13 244904
23 2001-09-11 12 459162
31 2001-09-16 13 459525
27 2001-09-14 13 603033
28 2001-09-15 13 1452000
30 2001-09-15 13 1531200
07 2001-09-11 16 1867682
01 2001-09-05 10 2903576
Neáu muoán loïc ra 10 saûn phaåm coù soá löôïng baùn nhieàu nhaát, baïn chæ caàn söû duïng saép xeáp theo
coät soá löôïng Qtty.
Ví duï 8-14: Phaùt bieåu SQL daïng Select vôùi Limit N,M
Select ItemID,Qtty,Price,Amount
from tblOrderDetails
Where Amount>10
order by Qtty
Limit 0,10
Keát quaû traû veà nhö sau:
ItemID Qtty Price Amount
---------------------------------------------
1 900 12000 12960000
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
2 1000 12000 14400000
3 5000 12000 72000000
3 6000 12000 86400000
4 8000 12000 15200000
4 8000 12000 15200000
4 8000 10000 15200000
5 9000 12000 29600000
5 9000 12000 129600000
5 9000 12000 129600000
5.6. Phaùt bieåu SQL daïng SELECT vôùi DISTINCT
Neáu coù moät hay nhieàu baûng keát noái vôùi nhau, seõ xaûy ra truøng laëp nhieàu maåu tin. Nhöng trong
tröôøng hôïp naøy baïn chæ caàn laáy ra moät maåu tin trong taäp maåu tin truøng laëp, baïn söû duïng phaùt bieåu
SQL daïng SELECT vôùi chæ ñònh DISTINCT.
Ví duï 8-14: Phaùt bieåu SQL daïng SELECT
Select ItemID,Qtty,Price,Amount
from tblOrderDetails
order by Qtty
Keát quaû traû veà nhö sau:
ItemID Qtty Price Amount
----------------------------------------------
1 900 12000 12960000
2 1000 12000 14400000
3 5000 12000 72000000
3 6000 12000 86400000
4 8000 12000 115200000
4 8000 12000 115200000
4 8000 10000 115200000
5 9000 12000 129600000
5 9000 12000 129600000
5 9000 12000 129600000
...
...
Ví duï 8-15: Phaùt bieåu SQL daïng SELECT vôùi DISTINCT
Select Distinct ItemID,Qtty,Price,Amount
From tblOrderDetails
Order by Qtty
Keát quaû loaïi boû nhöõng maåu tin truøng laép nhö sau:
ItemID Qtty Price Amount
----------------------------------------------
1 900 12000 12960000
2 1000 12000 14400000
3 6000 12000 86400000
4 8000 12000 115200000
5 9000 12000 129600000
...
...
...
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
5.7.
5.7.1.
Nhaäp döõ lieäu baèng phaùt bieåu SQL daïng Insert
Khi caàn theâm maåu tin vaøo baûng trong cô sôû döõ lieäu MySQL, baïn coù nhieàu caùch ñeå thöïc hieän
coâng vieäc naøy. Trong Visual Basic 6.0, VB.NET, C Sharp hay Java coù nhöõng phöông thöùc ñeå theâm
maåu tin vaøo baûng trong cô sôû döõ lieäu. Tuy nhieân, ñeå söû duïng caùc phaùt bieåu SQL mang tính chuyeân
nghieäp trong MySQL, baïn caàn söû duïng phaùt bieåu INSERT.
Baïn coù theå söû duïng phaùt bieåu Insert ngay treân öùng duïng keát noái vôùi MySQL. Trong tröôøng hôïp
baïn söû duïng cô sôû döõ lieäu SQL Server hay Oracle, baïn coù theå taïo ra moät Stored Procedure vôùi muïc
ñích INSERT döõ lieäu vaøo baûng chæ ñònh tröôùc.
Khi theâm döõ lieäu, caàn chuù yù kieåu döõ lieäu gioáng hoaëc töông öùng kieåu döõ lieäu ñaõ khai baùo cuûa coät
ñoù, neáu khoâng phuø hôïp thì loãi seõ phaùt sinh.
Ngoaøi ra baïn caàn quan taâm ñeán quyeàn cuûa User ñang truy caäp cô sôû döõ lieäu. User phaûi ñöôïc caáp
quyeàn Insert döõ lieäu vaøo töøng baûng cuï theå (quyeàn naøy do nhaø quaûn trò cô sôû döõ lieäu phaân quyeàn cho
User ñoù).
Trong phaùt bieåu INSERT INTO chuùng toâi thöïc hieän treân baûng tblOrderDetails vaø baûng
tblOrderDetailsHist, hai baûng naøy coù caáu truùc nhö sau:
/* Baûng tblOrderDetails*/
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'
);
/* Baûng tblOrderDetailsHist, duøng ñeå chöùa caùc thoâng tin
hôïp ñoàng chi tieát khi hôïp ñoàng cuûa khaùch haøng naøy keát thuùc,
chöông trình töï ñoäng xoaù trong tblOrderDetails vaø lö tröõ laïi
trong baûng tblOrderDetailsHist.*/
CREATE TABLE tblorderdetailshist (
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'
);
Khi Insert döõ lieäu vaøo baûng, coù 3 tröôøng hôïp xaûy ra: insert döõ lieäu vaøo baûng töø caùc giaù trò cuï
theå, insert vaøo baûng laáy giaù trò töø moät hay nhieàu baûng khaùc, vaø cuoái cuøng laø keát hôïp caû hai tröôøng
hôïp treân.
Insert vaøo baûng laáy giaù trò cuï theå:
INSERT INTO <Tablename>[<columnname list>]
Values (data_value)
Ví duï 8-16: INSERT döõ lieäu vaøo baûng töø giaù trò cuï theå
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
/* Theâm maåu tin vôùi moät soá coät */
INSERT INTO
TBLCUSTOMERS
(CustName,Username,Password,
Address,Tel,FaxNo,Email,Contact,
CountryCode,ProvinceCode)
Values ('Khach San CENTURY', ‘century’,
’1111’,’5 Le Loi’,’8676767’,’8767676’,
‘century@yahoo.com’,’Hoang Anh’,
‘VNA’,’HCM’)
/* Theâm maåu tin vôùi moät soá coät */
INSERT INTO
TBLORDERS(OrderID,OrderDate,
CustID,Description,Amount)
Values ('11',curdate(),’1',
'Dat hang qua mang', 20000)
5.7.2. Insert vaøo baûng laáy giaù trò töø baûng khaùc:
INSERT INTO <Tablename1>[<columnname list>]
Select [columnname list]
From <Tablename2>
Where <Conditions>
Ví duï 8-17: INSERT vaøo baûng töø giaù trò cuûa baûng khaùc
/* Theâm maåu tin vôùi caùc coät cuï theå */
/* Chuyeån taát caû nhöõng hôïp ñoàng chi tieát töø baûng
tblOrderDetails vaøo baûng tblOrderDetailsHist */
INSERT INTO
TBLORDERDETAILSHIST(
ItemID,
OrderID,
No,
Qtty,
Price,
Discount,
Amount)
SELECT
ItemID,
OrderID,
No,
Qtty,
Price,
Discount,
Amount
From tblOrderDetails
ORDER BY OrderID ASC
/* Coù theå vieát laïi theâm maåu tin vôùi taát caû caùc coät nhö sau
Chuyeån taát caû nhöõng hôïp ñoàng chi tieát töø baûng tblOrderDetails vaøo baûng tblOrderDetailsHist vôùi ñieàu
kieän soá coät töông öùng trong baûng tblOrderDetails baèng vôùi soá coät trong baûng tblOrderDetailsHist, baïn coù
theå vieát laïi nhö sau */
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
INSERT INTO TBLORDERDETAILSHIST
SELECT * from
tblOrderDetails
ORDER BY OrderID ASC
5.7.3. Insert vaøo baûng laáy giaù trò cuï theå, baûng khaùc:
INSERT INTO <Tablename1>[<columnname list>]
Select [columnname list], valueslist
From <Tablename2>
Where <conditions>
ORDER BY <column name> ASC/DESC
Ví duï 8-18: INSERT vaøo baûng töø giaù trò cuï theå, baûng khaùc
/* Theâm maåu tin vôùi caùc coät cuï theå */
/* Chuyeån taát caû nhöõng hôïp ñoàng chi tieát töø baûng tblOrderDetails vaøo baûng tblOrderDetailsHist. Giaû söû
raèng, ngoaøi nhöõng coät gioáng nhö tblOrderDetails, baûng tblOrderDetailsHist coøn coù theâm coät Tranferdate.
*/
INSERT INTO
TBLORDERSHIST(
OrderID,
OrderDate,
ReceiveFolio,
CustID,
Descriion,
Amount,
Historydate)
SELECT
OrderID,
OrderDate,
ReceiveFolio,
CustID,
Descriion,
Amount,
getdate() as Historydate
From tblOrders
where Month(OrderDate)=12
Order by OrderDate,CustID
/* Coù theå vieát laïi theâm maåu tin vôùi taát caû caùc coät nhö sau */
/* Chuyeån taát caû nhöõng phieáu thu trong thaùng 12 töø baûng tblOrders vaøo baûng tblOrdersHist vôùi ñieàu kieän
soá coät töông öùng trong baûng tblOrders baèng vôùi soá coät trong baûng tblOrdersHist, baïn coù theå vieát laïi nhö
sau */
INSERT INTO
TBLORDERDETAILSHIST(
ItemID,
OrderID,
No,
Qtty,
Price,
Discount,
Amount,TranferDate)
SELECT
ItemID,
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
OrderID,
No,
Qtty,
Price,
Discount,
Amount,CurDate()
From tblOrderDetails
ORDER BY OrderID ASC
5.8. Phaùt bieåu SQL daïng UPDATE
Phaùt bieåu SQL daïng UPDATE duøng caäp nhaät laïi döõ lieäu ñaõ toàn taïi trong baûng. Khi UPDATE
duøng caäp nhaät döõ lieäu cho moät maåu tin chæ ñònh naøo ñoù thöôøng UPDATE söû duïng chung vôùi meänh ñeà
WHERE.
Neáu caàn caäp nhaät taát caû caùc maåu tin trong baûng baïn coù theå boû meänh ñeà WHERE. Phaùt bieåu naøy
coù caáu truùc nhö sau:
/* neáu caäp nhaát giaù trò cuï theå */
Update <table name>
Set <column>=<value>,[<column>=<value>]
[where <restrictive conditions>]
/* neáu caäp nhaát giaù trò laø keát quaû traû veà töø phaùt bieåu
select treân moät hay nhieàu baûng khaùc */
Update <table name>
Set <column>=<select .. from tablename where ...>
[where <restrictive conditions>]
UPDATE coù theå aûnh höôûng ñeán nhieàu baûng, nhöng caäp nhaát giaù trò chæ coù hieäu löïc treân baûng
ñoù, baïn coù theå tham khaûo phaàn naøy trong chöông keá tieáp JOIN TABLE.
Caäp nhaät giaù trò cuï theå vaøo moät hay nhieàu coät minh hoaï trong ví duï 8-18 sau:
Ví duï 8-18: UPDATE treân caùc coät döõ lieäu töø giaù trò cuï theå
/* caäp nhaät coät vôùi giaù trò cuï theå */
Update tblCustomers
Set CustName='Cong ty TNHH Coca cola Vietnam'
Where CustID=‘12’
/* caäp nhaät moät coät vôùi giaù trò coät khaùc trong baûng
tblOrderDetails*/
Update tblOrders
Set Amount= Amount*.01,
TotalAmount=Amount*0.1
Where Month(OrderDate)=12
/* caäp nhaät moät coät vôùi giaù trò töø baûng khaùc*/
/* caäp nhaät coät Price vôùi giaù trò töø coät Cost cuûa baûng tblItems, khai baùo sau chæ ñuùng trong MySQL 4.1 trôû
veà sau*/
Update tblOrderDetails
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Set Price=
(select distinct Cost]
from tblItems
where ItemID=tblOrderDetails.ItemID)
Where Price<1000
/* caäp nhaät moät coät vôùi giaù trò cuï theå vôùi ñieàu kieän töø baûng khaùc, , khai baùo sau chæ ñuùng 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)
5.9. Phaùt bieåu SQL daïng DELETE
Vôùi phaùt bieåu SQL daïng DELETE thì ñôn giaûn hôn. Khi thöïc hieän leänh xoaù maåu tin trong baûng
chuùng ta chæ caàn quan taâm ñeán teân baûng, vaø meänh ñeà WHERE ñeå xoaù vôùi nhöõng maåu tin ñaõ choïn loïc
neáu coù. Cuù phaùp cuûa Delete:
Delete from <table name>
Where <condition>
Vôùi meänh ñeà WHERE gioáng nhö baát kyø meänh ñeà WHERE naøo trong phaùt bieåu SELECT hay
UPDATE vaø INSERT cuûa baát kyø öùng duïng cô sôû döõ lieäu naøo coù söû duïng SQL.
Conditions coù theå laø pheùp toaùn giöõa caùc coät vaø giaù trò, nhöng cuõng coù theå giaù trò laø keát quaû traû
veà töø moät phaùt bieåu SELECT khaùc.
Ghi chuù: Khoâng coù khaùi nieäm xoùa giaù trò trong moät coät, vì xoùa giaù trò moät coät ñoàng nghóa vôùi
caäp nhaät coät ñoù baèng giaù trò roãng.
Ví duï 8-19: Xoùa maåu tin vôùi phaùt bieåu SQL daïng DELETE
/* Xoaù maåu tin töø baûng vôùi ñieàu kieän */
Delete from tblCustomers
Where CustName is null
Trong tröôøng hôïp coù raøng buoäc veà quan heä cuûa döõ lieäu, thì xoùa maåu tin phaûi tuaân thuû theo quy
taéc: Xoaù maåu tin con tröôùc roài môùi xoaù maåu tin cha.
Chaúng haïn, trong tröôøng hôïp ta coù 2 baûng: hôïp ñoàng baùn haøng (tblOrders) vaø hôïp ñoàng baùn
haøng chi tieát (tblOrderDetails).
Ñeå xoaù moät hôïp ñoàng baïn caàn xoùa maåu tin trong baûng tblOrders tröôùc roài môùi ñeán caùc maåu tin
trong baûng tblOrderDetails.
Ví duï 8-20: Xoaù maåu tin vôùi Delete
/* Xoaù maåu tin töø baûng con */
Delete from tblOrderDetails
where OrderID=123
/* Xoaù maåu tin töø baûng cha */
Delete from tblOrders
where OrderID=123
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Baïn coù theå thöïc hieän moät phaùt bieåu SQL daïng DELETE vôùi ñieàu kieän trong meänh ñeà WHERE
laáy giaù trò traû veà töø phaùt bieåu SELECT töø baûng khaùc, khai baùo nhö vaäy chæ coù hieäu löïc trong cô sôû döõ
lieäu MySQL phieân baûn 8.1 trôû veà sau hay trong cô sôû döõ lieäu SQL Server vaø Oracle.
Ví duï 8-21: Xoaù maåu tin theo quy taéc coù raøng buoäc quan heä
/* Xoaù maåu tin töø baûng vôùi ñieàu kieän laáy giaù trò töø baûng khaùc */
Delete from tblOrderDetails
where ItemID in
(select ItemID
from tblItems
where ItemName like 'IT%')
6. PHAÙT BIEÅU SQL DAÏNG JOIN
Ngoaøi caùc phaùt bieåu SQL vôùi 4 daïng treân, trong phaàn keá tieáp, chuùng toâi trình baøy moät soá phaùt
bieåu SQL daïng Select ñeåâ keát noái döõ lieäu giöõa caùc baûng coù quan heä vôùi nhau, nhöõng phaùt bieåu seõ trình
baøy trong chöông 5 nhö:
Khaùi nieäm JOIN
Phaùt bieåu INNER JOIN
Phaùt bieåu LEFTJOIN
Phaùt bieåu RIGHT JOIN
6.1. Khaùi nieäm veà quan heä
Ñeå phaùt trieån öùng duïng Web baèng baát kyø loaïi cô sôû döõ lieäu naøo, giai ñoaïn phaân tích thieát keá heä
thoáng cöïc kyø quan troïng. Neáu keát quaû phaân tích khoâng toái öu thì öùng duïng ñoù khoâng theå ñaït ñöôïc giaù
trò kyõ thuaät cuõng nhö giaù trò thöông maïi. Thieát keá cô sôû döõ lieäu khoâng toái öu, chuùng coù theå daãn ñeán
vieäc chöông trình chaïy chaäm vaø khoâng beàn vöõng.
Moät khi öùng duïng chaïy chaäm ñi do cô sôû döõ lieäu khoâng toái öu thì raát coù theå baïn phaûi thieát keá
vaø xaây döïng laïi töø ñaàu toaøn boä caáu truùc cuûa chöông trình vaø cô sôû döõ lieäu.
Xuaát phaùt töø lyù do naøy, khi xaây döïng moät öùng duïng thoâng tin quaûn lyù, chuùng ta caàn phaûi qua
nhöõng böôùc phaân tích thieát keá heä thoáng kyõ löôõng ñeå coù ñöôïc moâ hình quan heä vaø ERD tröôùc khi ñeán
caùc moâ hình chöùc naêng chi tieát.
Tuy nhieân, trong lyù thuyeát moät soá kieán thöùc cô baûn baét buoäc baïn phaûi thöïc hieän theo moâ hình
heä thoáng öùng vôùi nhöõng quan heä toaøn veïn, nhöng trong thöïc teá, do tính ñaëc thuø cuûa öùng duïng, thöôøng
baïn phaûi thieát keá laïi moâ hình theo nhu caàu caân ñoái giöõa ñoä phöùc taïp vaø tính toái öu.
Trong öùng duïng baùn haøng qua maïng Test ñaõ trình baøy trong chöông 3, khi quan taâm ñeán moät
hôïp ñoàng treân maïng, ngoaøi nhöõng thoâng tin lieân laïc veà khaùch haøng, baïn caàn phaûi löu tröõ döõ lieäu
khaùc nhö chieát haøng mua, phöông thöùc traû tieàn, phöông thöùc giao haøng,... Vaán ñeà ñöôïc thaûo luaän ôû
ñaây, moãi hôïp ñoàng coù nhì6u maët haøng chi tieát.
Trong tröôøng hôïp naøy, chuùng ta coù 6 thöïc theå lieân quan nhö sau, thöïc theå danh muïc Customers
(thoâng tin lieân laïc cuûa khaùch haøng), Orders (hôïp ñoàng mua haøng), OrderDetails (chi tieát haøng mua),
Items (danh muïc saûn phaåm).
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Sô ñoà 8-1: Moâ hình quan heä
Giaû söû raèng khi nhaäp soá lieäu vaøo cô sôû döõ lieäu, öùng vôùi hôïp ñoàng coù maõ 101, cuûa khaùch haøng coù
teân Nguyeãn Vaên A, ... coù hai saûn phaåm chi tieát: 11 (Nöôùc ngoït) vaø 32 (xaø phoøng Lux).
Trong tröôøng hôïp naøy baïn ñang coù moät maåu tin hôïp ñoàng trong baûng tblCustomers, moät maåu
tin hôïp ñoàng trong baûng tblOrders vaø hai maåu tin trong baûng tblOrderDetails.
Neáu muoán bieát thoâng tin hôïp ñoàng cuûa khaùch haøng A, roõ raøng baïn caàn duøng phaùt bieåu SELECT
vôùi meänh ñeà keát hôïp töø 3 baûng treân. Keát quaû traû veà 2 maåu tin laø söï keát hôïp thoâng tin töø hai baûng
tblCustomers, tblOrders vaø tblOrderDetails.
Khi thöïc thi phaùt bieåu SQL daïng SELECT öùng vôùi cô sôû döõ lieäu nhö treân baïn phaûi duyeät qua
hai maåu tin.
Taát nhieân, khi vieát öùng duïng thì ñieàu naøy chaáp nhaän ñöôïc, vaø coù theå coi laø toái öu. Giaû söû raèng,
öùng duïng naøy ñöôïc phaùt trieån treân WEB caàn löu taâm ñeán vaán ñeà toái öu toác ñoä truy vaán thì sao?
Ngöôøi thieát keá cô sôû döõ lieäu trong tröôøng hôïp naøy phaûi thay ñoåi laïi caáu truùc ñeå taêng toác ñoä truy
caäp qua maïng khi xöû lyù treân cô sôû döõ lieäu cuûa ngöôøi duøng.
1 - n
1 - n
1 - n
Items
Order
Details
Orders
Customers
6.2. Khaùi nieäm veà meänh ñeà JOIN
Trong haàu heát phaùt bieåu SELECT, phaàn lôùn keát quaû maø baïn mong muoán laáy veà ñeàu coù lieân
quan ñeán moät hoaëc nhieàu baûng khaùc nhau. Trong tröôøng hôïp nhö vaäy, khi truy vaán döõ lieäu baïn caàn söû
duïng meänh ñeà JOIN ñeå keát hôïp döõ lieäu treân hai hay nhieàu baûng laïi vôùi nhau.
Khi söû duïng JOIN, baïn caàn quan taâm ñeán tröôøng (coät) naøo trong baûng thöù nhaát coù quan heä vôùi
tröôøng (coät) naøo trong baûng thöù hai. Neáu moâ hình quan heä cuûa baïn khoâng toái öu hay khoâng ñuùng,
quaûn trình söû duïng JOIN seõ cho keát quaû traû veà khoâng nhö yù muoán.
Trôû laïi öùng duïng baùn haøng qua maïng trong giaùo trình naøy, khi xuaát moät hôïp ñoàng baùn haøng
cho khaùch haøng, theo thieát keá trong cô sôû döõ lieäu chuùng ta coù raát nhieàu baûng lieân quan ñeán nhau.
Chaúng haïn, neáu quan taâm baùn haøng thì baùn cho ai. Suy ra, lieân quan ñeán thoâng tin khaùch
haøng, baùn saûn phaåm gì cho hoï thì lieân quan ñeán maõ saûn phaåm, neáu khaùch haøng traû tieàn thì lieân quan
ñeán phieáu thu, neáu khaùch haøng coù coâng nôï thì lieân quan ñeán nôï kyø tröôùc...
Trong phaân naøy, chuùng toâi tieáp tuïc thieát keá moät soá baûng döõ lieäu cuøng vôùi kieåu döõ lieäu töông öùng
vaø quan heä giöõa caùc baûng ñöôïc moâ taû nhö sau:
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
tblCustomers (danh saùch khaùch haøng)
[CustID] int auto_increment Primary key,
[CustName] [varchar] (50) NULL ,
[Address] [varchar] (100) NULL,
[Tel] [varchar] (20) NULL,
[FaxNo] [varchar] (20) NULL,
[Email] [varchar] (50) NULL,
[Contact] [varchar] (50) NULL
[Country] [varchar] (3) NULL,
[Province] [varchar] (3) NULL
tblOrders (Hôïp ñoàng baùn haøng)
[OrderID] [int] Not null
auto_increment Primary Key,
[OrderDate] [date] NULL ,
[CustID] int ,
[Description] [varchar] (200) NULL ,
[ShipCost] [float] NULL ,
[TranID] [tinyint] NULL ,
[PaymentID] [tinyint] NULL ,
[Amount] [float] NULL ,
[TotalAmount] [float] NULL ,
tblOrderDetails (Hôïp ñoàng baùn haøng chi tieát)
[SubID] [int] auto_increment NOT NULL ,
[OrderID] int ,
[ItemID] int,
[No] int,
[Qtty] [int] NULL ,
[Price] int NULL ,
[Discount] [Float] NULL ,
[Amount] [Float] NULL
tblItems (Danh saùch saûn phaåm)
[ItemID] int auto_increment Primary key,
[ItemName] [varchar] (200) NULL ,
[Unit] [nvarchar] (20) NULL ,
[Cost] [Float] NULL ,
[Active] [tinyint] NOT NULL ,
[Category] int
Baïn coù theå tìm thaáy caùc baûng döõ lieäu coøn laïi trong döõ lieäu Test trong ñóa ñính keøm theo saùch.
6.3. Meänh ñeà INNER JOIN
Phaùt bieåu SQL daïng SELECT coù söû duïng meänh ñeà INNER JOIN thöôøng duøng ñeå keát hôïp hai
hay nhieàu baûng döõ lieäu laïi vôùi nhau, cuù phaùp cuûa SELECT coù söû duïng meänh ñeà INNER JOIN:
SELECT [SELECT LIST]
FROM <FIRST_TABLENAME>
INNER JOIN <SECOND_TABLENAME>
ON <JOIN CONDITION>
WHERE <CRITERIANS>
ORDER BY <COLUMN LIST>
[ASC / DESC]
Neáu baïn caàn laáy ra moät soá coät trong caùc baûng coù keát noái laïi vôùi nhau baèng meänh ñeà INNER
JOIN thì cuù phaùp naøy vieát laïi nhö sau:
SELECT [FIELD1,FIELD2, ...]
FROM <FIRST_TABLENAME>
INNER JOIN <SECOND_TABLENAME>
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
ON <JOIN CONDITION>
WHERE <CRITERIANS>
ORDER BY <COLUMN LIST>
[ASC / DESC]
Ví duï 8-23: INNER JOIN vôùi moät soá coät chæ ñònh
/* in ra danh saùch khaùch haøng mua haøng trong thaùng 10 */
Select CustName,OrderID,
OrderDate,Amount,
TotalAmount
from tblCustomers
inner join tblOrders
on tblCustomers.CustID = tblOrders.CustID
where month (OrderDate) = 10
order by CustName
Keát quaû traû veà nhö sau:
CustName OrderID OrderDate .. TotalAmount
---------------------------------------------
CENTURY Hotel 13 2001-10-17 388800000
CENTURY Hotel 14 2001-10-18 518400000
CENTURY Hotel 16 2001-10-17 388800000
CENTURY Hotel 17 2001-10-18 14400000
CENTURY Hotel 18 2001-10-18 12960000
CENTURY Hotel 110 2001-10-18 216000000
Plaza Hotel 12 2001-10-17 403200000
Plaza Hotel 19 2001-10-17 86400000
Plaza Hotel 11 2001-10-17 576000000
Plaza Hotel 15 2001-10-17 288000000
Neáu baïn caàn laáy ra taát caû caùc coät trong caùc baûng coù keát noái laïi vôùi nhau baèng meänh ñeà INNER
JOIN, cuù phaùp treân coù theå vieát laïi 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]
Ví duï 8-24: INNER JOIN vôùi taát caùc tröôøng lieân quan
/* in ra danh saùch khaùch haøng mua haøng trong thaùng 10 */
Select CustID,CustName,OrderID,
OrderDate,TotalAmount
from tblCustomers
inner join tblOrders
On TblCustomers.CustID=tblOrders.CustID
where month (OrderDate) = 10
order by CustName DESC
Keát quaû traû veà nhö sau:
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
CustID CustName .. OrderID ..TotalAmount
------ ---------------------------------------
13 Plaza Hotel .. 11 .. 576000000
13 Plaza Hotel .. 15 .. 288000000
12 Plaza Hotel .. 12 . . 403200000
12 Plaza Hotel .. 19 .. 86400000
16 CENTURY Hotel .. 13 .. 388800000
16 CENTURY Hotel .. 14 .. 518400000
16 CENTURY Hotel .. 16 .. 388800000
16 CENTURY Hotel .. 17 .. 14400000
16 CENTURY Hotel .. 18 .. 12960000
16 CENTURY Hotel .. 110 .. 216000000
Neáu trong nhöõng baûng caàn keát noái coù teân tröôøng (coät) gioáng nhau thì khi thöïc thi phaùt bieåu
SQL daïng SELECT phaûi chæ roõ coät thuoäc baûng naøo. Trong tröôøng hôïp caû hai cuøng laáy döõ lieäu ra thì
baïn caàn chuyeån aùnh xaï teân khaùc cho coät thoâng qua meänh ñ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]
Neáu trong nhöõng baûng caàn keát noái ñoù coù teân tröôøng (coät) gioáng nhau vaø khoâng ñöôïc chæ roõ nhö
tröôøng hôïp treân khi khai baùo trong cô sôû döõ lieäu SQL Server, khi thöïc thi phaùt bieåu SQL daïng
SELECT baïn seõ bò loãi, chaúng haïn nhö:
SELECT first_tablename.*, second_tablename.*
FROM <first_tablename>
INNER JOIN <second_tablename>
ON <join condition>
WHERE <criterians>
ORDER BY <column list>
[ASC / DESC]
Server: Msg 209, Lecel 16, State Line 1
Ambiguous column name 'CustID'
Tuy nhieân, vôùi phaùt bieåu treân baïn coù theå thöïc thi trong cô sôû döõ lieäu MySQL. Ngoaøi ra, phaùt
bieåu SQL daïng SELECT söû duïng INNER JOIN baïn coù theå aùnh xaï (alias) teân cuûa baûng thaønh teân
ngaén goïn ñeå deã tham chieáu veà sau.
Thöïc ra phaùt bieåu ALIAS coù yù nghóa gioáng nhö AS vôùi teân coät trong baûng thaønh teân coät khaùc
trong phaùt bieåu SELECT.
Select p.*,s.*
from tablename1
inner join tablename2
On tablename1.field1 = tablename2.field2
Ví duï 8-25: INNER JOIN vôùi aùnh xaï teân baûng
/* in ra danh saùch khaùch haøng mua haøng trong thaùng 10 */
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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
Keát quaû traû veà nhö sau:
CustName OrderID OrderDate .. TotalAmount
----------------------------------------------CENTURY Hotel 13 2001-
10-17 .. 388800000
CENTURY Hotel 14 2001-10-18 .. 518400000
CENTURY Hotel 16 2001-10-17 .. 388800000
CENTURY Hotel 17 2001-10-18 .. 14400000
CENTURY Hotel 18 2001-10-18 .. 12960000
CENTURY Hotel 11 2001-10-18 .. 216000000
Plaza Hotel 12 2001-10-17 .. 403200000
Plaza Hotel 19 2001-10-17 .. 86400000
Plaza Hotel 11 2001-10-17 .. 576000000
Plaza Hotel 15 2001-10-17 .. 288000000
Taát nhieân, baïn cuõng coù theå vieát phaùt bieåu treân öùng vôùi töøng coät muoán laáy ra baèng caùch khai baùo
teân coät.
6.4. Meänh ñeà Left Join
Tröôøng hôïp baïn mong muoán keát quaû laáy ra trong hai baûng keát hôïp nhau theo ñieàu kieän: Nhöõng
maåu tin baûng beân traùi toàn taïi öùng vôùi nhöõng maåu tin ôû baûng beân phaûi khoâng toàn taïi baïn haõy duøng
meänh ñeà LEFT JOIN trong phaùt bieåu SQL daïng SELECT, cuù phaùp coù daïng:
select <Column list>
from lefttablename
LEFT JOIN righttablename
on lefttabkename.field1=righttablename.field2
Where <conditions>
Order by <column name>
ASC/DESC
Chaúng haïn, baïn choïn ra taát caû caùc saûn phaåm (vôùi caùc coät) coù hay khoâng coù doanh soá baùn trong
thaùng hieän taïi. Moät soá saûn phaåm khoâng baùn trong thaùng seõ coù coät Amount coù coät Amount giaù trò
NULL.
Ví duï 8-26: SELECT duøng LEFT JOIN
/* in ra danh saùch saûn phaåm baùn trong thaùng 10 */
select ItemID,ItemName,Amount
from tblItems
left join tblOrderDetails
on tblItems.ItemID=tblOrderDetails.ItemID
order by Amount
Keát quaû traû veà nhö sau:
ItemID ItemName Amount
----------------------------------------------
12 ASW-60VP NULL
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
13 ASW-60VT NULL
14 ASW-660T 120V TW 29340 NULL
14 ASW-685V 120V TW 29440 NULL
15 ASW60VP 220V 34571 NULL
16 ASW-45Z1T1 2960000
17 ASW-45Y1T 127V 14400000
18 ASW-45Y1T 220V 72000000
19 ASW-45Y1T 220V 86400000
20 ASW-45Z1T 15200000
...
6.5. Meänh ñeà Right Join
Ngöôïc laïi vôùi phaùt bieåu SQL daïng SELECT söû duïng meänh ñeà LEFT JOIN laø phaùt bieåu SQL
daïng SELECT söû duïng meänh ñeà RIGHT JOIN seõ xuaát döõ lieäu cuûa baûng beân phaûi cho duø döõ lieäu cuûa
baûng beân traùi khoâng toàn taïi, cuù phaùp coù daïng:
Select <Column list>
From lefttablename
RIGHT JOIN righttablename
On lefttabkename.field1=righttablename.field2
Where <conditions>
Order by <column name>
ASC/DESC
Trong ví duï sau, baïn coù theå choïn ra taát caû caùc saûn phaåm coù hay khoâng coù doanh soá baùn trong
thaùng hieän taïi. Caùc saûn phaåm khoâng toàn taïi doanh soá baùn seõ khoâng hieän ra.
Ví duï 8-27: SELECT duøng RIGHT JOIN
/* in ra danh saùch saûn phaåm baùn trong thaùng ngaøy 17 */
/* trong phaùt bieåu SELECT naøy coù söû duïng meänh ñeà
WHERE söû duïng phaùt bieåu SELECT khaùc, keát quaû cuûa SELECT trong meänh ñeà WHERE traû veà moät maûng
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
Keát quaû traû veà nhö sau:
ItemName Qtty Price Amount
----------------------------------------------
ASW-45Y1T 127V SDIA29350 11000 12000 58400000
ASW-45Y1T 127V SDIA29350 10000 12000 44000000
ASW-45Y1T 127V SDIA 29350 10000 12000 14400000
ASW-45Y1T 127V SDIA 29350 10000 12000 44000000
ASW-45Y1T 127V SDIA 29350 11000 12000 58400000
ASW-45Y1T 127V SDIA 29350 10000 12000 44000000
ASW-45Y1T 127V SDIA 29350 11000 12000 58400000
ASW-45Y1T 220V ARG 29391 6000 12000 86400000
ASW-45Z1T 9000 12000 29600000
ASW-45Z1T 9000 12000 29600000
...
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
6.6. Pheùp toaùn hôïp (union)
Union khoâng gioáng nhö nhöõng meänh ñeà JOIN ñaõ giôùi thieäu treân ñaây. Union laø pheùp toaùn duøng
ñeå noái hai hay nhieàu caâu truy vaán daïng Select laïi vôùi nhau.
Ñoái vôùi JOIN, baïn coù theå keát noái döõ lieäu ñöôïc thöïc hieän theo chieàu ngang. Ñoái vôùi Union baïn
keát noái döõ lieäu ñöôïc thöïc hieän theo chieàu doïc.
Ñeå choïn ra nhöõng khaùch haøng thöôøng xuyeân trong tblCustomers, keát quaû traû veà laø danh saùch
caùc khaùch haøng thöôøng xuyeân.
Ví duï 8-28: Khaùch haøng thöôøng xuyeân trong tblCustomers
Select CustID,CustName
from tblCustomers
Keát quaû traû veà nhö sau:
CustID CustName
---------- -----------------
13 New World Hotel
12 Kinh Do Hotel
16 CENTURY Hotel
10 PLAZA Hotel
Ñeå choïn ra nhöõng khaùch haøng vaõng lai trong tblTempCustomers, keát quaû traû veà laø danh saùch
caùc khaùch haøng vaõng lai.
Ví duï 8-29: Khaùch haøng vaõng lai trong tblTempCustomers
Select CustID,CustName
from tblTempCustomers
Keát quaû traû veà nhö sau:
CustID CustName
---------- ---------------------------------
23 Cong ty nuoc giai khat ‘12’COLA
24 Cong ty nuoc giai khat PEPSI
25 Cong ty nuoc giai khat REDBULK
26 Cong ty nuoc giai khat TRIBICO
Neáu duøng pheùp toaùn UNION ñeå keát noái hai baûng treân, keát quaû traû veà laø danh saùch caû hai loaïi
khaùch haøng trong cuøng moät recordset.
Ví duï 8-30: SELECT söû duïng pheùp hôïp UNION
Select CustID,CustName
From tblCustomers
UNION
Select CustID,CustName
From tblTempCustomers
Keát quaû traû veà nhö sau:
CustID CustName
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
---------- -----------------------------------
23 Cong ty nuoc giai khat ‘12’COLA
24 Cong ty nuoc giai khat PEPSI
25 Cong ty nuoc giai khat REDBULK
26 Cong ty nuoc giai khat TRIBICO
12 Kinh Do Hotel
10 PLAZA Hotel
16 CENTURY Hotel
13 New World Hotel
Ghi chuù: Khi söû duïng pheùp toaùn Union trong phaùt bieåu SQL daïng Select, baïn caàn löu yù caùc quy
ñònh sau:
Taát caû nhöõng truy vaán trong UNION phaûi cuøng soá coät hay tröôøng. Neáu truy vaán thöù nhaát coù
hai coät thì truy vaán thöù hai ñöôïc söû duïng UNION cuõng phaûi coù hai coät töông töï.
Khi söû duïng UNION, nhöõng coät naøo coù teân coät hay bí danh (alias) môùi thì keát quaû traû veà seõ
coù töïa ñeà (header) cuûa töøng coät vaø teân laø teân coät cuûa truy vaán thöù nhaát.
Kieåu döõ lieäu trong caùc coät cuûa truy vaán 2 töông thích vôùi kieåu döõ lieäu caùc coät töông öùng trong
truy vaán thöù nhaát.
Trong UNION baïn coù theå keát hôïp nhieàu caâu truy vaán laïi vôùi nhau.
Keát quaû hieän ra theo thöù töï cuûa truy vaán töø döôùi leân treân.
6.7.
6.7.1.
6.7.2.
SQL daïng thay ñoåi vaø ñònh nghóa cô sôû döõ lieäu
Phaùt bieåu SQL daïng CREATE
Phaùt bieåu SQL daïng CREATE duøng ñeå taïo cô sôû döõ lieäu vaø nhöõng ñoái töôïng cuûa cô sôû döõ lieäu
trong MySQL, SQL Server, Oracle, ..., chuùng cuù phaùp nhö sau:
CREATE Database <Database NAME>
CREATE <OBJECT TYPE>
<OBJECT NAME>
OBJECT TYPE: Loaïi ñoái töôïng cuûa cô sôû döõ lieäu ví duï nhö Procedure, Table, View,...
OBJECT NAME: Teân cuûa ñoái töôïng trong cô sôû döõ lieäu SQL nhö sp_IC, tblEmployer, ...
Taïo cô sôû döõ lieäu - Create database
Khi xaây döïng cô sôû döõ lieäu, baïn baét ñaàu töø moâ hình cô sôû döõ lieäu ERD, hay töø moät giai ñoaïn
naøo ñoù trong quy trình phaân tích thieát keá heä thoáng. Ñeå taïo cô sôû döõ lieäu treân MySQL hay SQL Server
baïn söû duïng cuù phaùp sau:
CREATE DATABASE <Database name>
Cuù phaùp ñaày ñuû cuûa phaùt bieåu taïo cô sôû döõ lieäu nhö sau, neáu baïn söû duïng cô sôû döõ lieäu 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>]
)]
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER 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]
6.7.3. Dieãn giaûi CREATE Database trong SQL Server
ON: Duøng ñeå ñònh nghóa nôi chöùa cô sôû döõ lieäu vaø khoâng gian chöùa taäp tin log.
NAME: Duøng ñònh nghóa teân cuûa cô sôû döõ lieäu. Teân naøy duøng tham chieáu khi goïi ñeán cô sôû
döõ lieäu, teân ñöôïc duøng cho quaù trình backup, export, Import, Shrink cô sôû döõ lieäu ñoù.
FILENAME: Teân taäp tin cô sôû döõ lieäu löu trong ñóa cöùng, thoâng thöôøng khi caøi SQL Server
leân oå ñóa naøo thì giaù trò maëc ñònh cho pheùp löu taäp tin ñeán thö muïc ñoù. Tuy nhieân, neáu
muoán baïn cuõng coù theå thay ñoåi vò trí caùc file naøy.
Khi taïo cô sôû döõ lieäu, baïn ñaõ ñònh nghóa vò trí ñaët taäp tin ôû thö muïc naøo thì khoâng theå di
chuyeån moät caùch thuû coâng (nhö duøng Explorer cuûa Windows), vì laøm ñieàu ñoù thaät nguy hieåm nhaát laø
khi döõ lieäu trong cô sôû döõ lieäu ñang coù giaù trò kinh teá.
SIZE: Dung löôïng cuûa cô sôû döõ lieäu khi khôûi taïo chuùng. Thoâng thöôøng giaù trò maëc ñònh laø 1
MB.
Dung löôïng phaûi laø soá nguyeân, coù theå taêng theâm baèng caùch söû duïng thuû tuïc Shrink trong
SQL Server.
MAXSIZE: Dung löôïng lôùn nhaát, khi dung löôïng cô sôû döõ lieäu taêng leân ñeán möùc MaxSize thì
döøng laïi.
Neáu khi dung löôïng baèng MaxSize, caùc chuyeån taùc coù theå bò huyû boû hay traû veà loãi khoâng theå
thöïc hieän ñöôïc, vaø coù theå laøm cho cô sôû döõ lieäu cuûa baïn bò treo.
Ñeå traùnh ñieàu naøy xaûy ra, thì ngöôøi quaûn trò cô sôû döõ lieäu phaûi thöôøng xuyeân theo gioûi quaù trình
taêng dung löôïng cô sôû döõ lieäu theo thôøi gian, ñeå coù bieän phaùp traùnh moïi ruûi ro coù theå xaûy ra.
FILEGROWTH: Dung löôïng khôûi taïo cuøng dung löôïng toái ña cho pheùp taêng trong quaù trình
theâm döõ lieäu vaøo cô sôû döõ lieäu. Nhaèm töï ñoäng hoùa, chuùng ta phaûi thieát laäp quaù trình taêng töï
ñoäng theo chæ soá KB cho tröôùc hay tyû leä phaàn traêm theo dung löôïng ñang coù.
LOG ON: Log on cho pheùp baïn quaûn lyù nhöõng chuyeån taùc xaûy ra trong quaù trình söû duïng cô
sôû döõ lieäu cuûa SQL Server.
Xaây döïng cô sôû döõ lieäu Test
Nhö ñaõ trình baøy ôû treân, sau ñaây ví duï taïo cô sôû döõ lieäu Test coù cuù phaùp nhö sau:
Ví duï 8-31: Taïo cô sôû döõ lieäu Test trong SQL Server
USE master
GO
CREATE DATABASE Test
ON
( NAME = Test,
FILENAME = 'c:mssql7dataTestdat.mdf',
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'Testlog',
FILENAME = 'c:mssql7dataTestlog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
Ñeå ñôn giaûn hoaù caùc ñoái töôïng Table trong cô sôû döõ lieäu Test, chuùng toâi chæ trình baøy moät vaøi
phaùt bieåu SQL daïng Create Table, caùc Table khaùc baïn coù theå tìm thaáy trong cô sôû döõ lieäu ñính keøm.
Ví duï 8-32: Taïo moät soá baûng trong Test
/* Taïo baûng danh saùch khaùch haøng thöôøng xuyeân */
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)
);
/* Taïo baûng hôïp ñoàng mua haøng qua maïng */
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)
);
/* Taïo baûng hôïp ñoàng chi tieát mua haøng qua maïng */
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'
);
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moät soá quy ñònh khi thieát keá Table
6.7.4.
6.7.5.
6.7.6.
Teân coät - Column Name
Ñaët teân coät cuõng gioáng nhö ñaët teân baûng, coù raát nhieàu quy taéc ñaët teân (nhö ñaõ trình baøy ôû treân
phaàn table), nhöng khuyeán khích baïn neân theo moät soá quy taéc cô baûn sau:
Teân coät baét ñaàu chöõ hoa, coøn laïi baèng chöõ thöôøng.
Teân ngaén goïn vaø ñaày ñuû yù nghóa.
Khoâng neân ñaët teân coät coù khoaûng traéng, sau naøy baïn seõ gaëp nhöõng phieàn toaùi khi tham
chieáu ñeán coät ñoù.
Khoâng ñaët teân coät truøng vôùi nhöõng töø khoaù, töø daønh rieâng, vaø nhöõng kyù töï ñaëc bieät nhö
nhöõng pheùp toaùn hay toaùn töû khaùc.
Chuù yù, neân ñaët teân coät cuøng teân nhöõng coät coù quan heä vôùi nhöõng baûng khaùc trong cuøng cô sôû
döõ lieäu, giuùp deã hieåu vaø traùnh bò nhaàm laãn.
Moät soá ngöôøi thích theâm vaøo daáu gaïch chaân (_) ñeå phaân bieät yù nghóa hay teân goïi cuûa coät, ñieàu
naøy laø tuøy vaøo sôû thích cuûa baïn. Tuy nhieân chuùng toâi khoâng thích qui taéc naøy.
Nhöng ñoái vôùi kinh nghieäm laäp thieát keá xaây döïng cô sôû döõ lieäu thì baïn khoâng neân duøng daáu
gaïch döôùi _, vaø dó nhieân trong nhieàu tröôøng hôïp khaùc baïn seõ caûm thaáy khoù chòu khi theâm moät daáu _
trong teân cuûa ñoái töôïng cuûa cô sôû döõ lieäu.
Maëc duø khoâng coù vaán ñeà gì cho cuù phaùp hay caùc phaùt bieåu tham chieáu ñeán chuùng, nhöng baïn seõ
thaáy taïi sao chuùng ta khoâng neân duøng daáu gaïch chaân (_) khi ñaët teân ñoái töôïng hay teân cô sôû döõ lieäu
trong MySQL.
Neáu baïn ñaët teân coù daáu _ ,baïn phaûi toán thôøi gian hay naêng löôïng cho haønh ñoäng taïo ra daáu _
Trong chöøng möïc hay giôùi haïn naøo ñoù do hieäu öùng cuûa Font chöõ coù theå phaùt sinh loãi seõ gaây
ra nhaàm laãn cho ngöôøi laäp trình.
Noùi toùm laïi laø baïn seõ maát theâm thôøi gian löu taâm ñeán chuùng.
Kieåu döõ lieäu - Data type
Nhö ñaõ trình baøy caùc laïi döõ lieäu trong phaàn treân, khi xaây döïng cô sôû döõ lieäu, taát caû nhöõng
tröôøng trong baûng caàn phaûi coù kieåu döõ lieäu cuï theå. Vaán ñeà quan troïng laø choïn kieåu döõ lieäu naøo cho
phuø hôïp vôùi döõ lieäu maø ngöôøi duøng seõ nhaäp vaøo.
Ñeå thieát keá döõ lieäu phuø hôïp vôùi thöïc teá, ngoaøi tính öùng duïng hôïp vôùi ngöõ caûnh baïn cuõng caàn
quan taâm ñeán kieåu döõ lieäu töông thích vaø chieàu daøi cuûa töøng coät. Chaúng haïn nhö:
[CustID] [varchar] (10)
/* hay */
[CustID] int
Giaù trò maëc ñònh - Default
Thoâng thöôøng khi taïo ra moät coät trong baûng ñoâi khi chuùng ta caàn aùp duïng giaù trò maëc ñònh,
khoâng chæ cho tröôøng hôïp soá lieäu khoâng nhaäp töø beân ngoaøi maø coøn cho caùc coät töï ñoäng coù giaù trò töï
sinh. Vôùi nhöõng lyù do nhö vaäy, chuùng ta caàn coù moät soá giaù trò maëc ñònh cho nhöõng coät caàn thieát, ví duï
:
Neáu coät ñoù laø soá chuùng ta coù giaù trò maëc ñònh laø 0
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Neáu coät ñoù laø ngaøy thaùng chuùng ta coù giaù trò maëc ñònh laø ngaøy naøo ñoù (nhö 0000-00-00 laø
CurDate())
Neáu coät ñoù coù giaù trò laø 0 hoaëc 1, baïn coù theå khai baùo giaù trò maëc ñònh laø 0 hoaëc 1
Neáu coät ñoù laø chuoãi chuùng ta coù giaù trò maëc ñònh nhö laø 'A'
6.7.7. Soá töï ñoäng auto_increment
auto_increment laø khaùi nieäm cöïc kyø quan troïng trong MySQL (töông ñöông vôùi Identity trong
SQL Server, Autonumber trong MS Access). Khi baïn muoán moät coät coù giaù trò taêng töï ñoäng nhö
AutoNumber/Identity, baïn neân ñònh nghóa coät ñoù nhö auto_increment,.
Khi söû duïng auto_increment laøm soá taêng töï ñoäng thì kieåu döõ lieäu laø soá nguyeân hoaëc soá nguyeân
lôùn.
Trong tröôøng hôïp, baïn khai baùo soá töï ñoäng trong SQL Server, baïn caàn phaûi khai baùo theâm caùc
thoâng soá nhö seed. Seed laø giaù trò khôûi ñaàu khi SQL Server töï ñoäng taêng giaù trò, Increament laø böôùc
taêng, noù cho bieát moãi laàn taêng caàn bao nhieâu giaù trò.
Vì duï khi taïo auto_increment cho coät ItemID [Int] auto_increment, nghóa laø baét ñaàu soá 1 vaø moãi
laàn taêng 1 soá. Keát quaû baïn seõ coù laø 1,2,3,4, ...n.
Trong phaùt bieåu SQL cuûa MySQL, ñeå taïo baûng coù gaù trò taêng töï ñoäng baïn chæ caàn khai baùo teân
coät, kieåu döõ lieäu Int (Integer) vaø auto_increment nhö sau:
IDNO Int auto_increment NOT NULL
Trong giao dieän ñoà hoïa baïn chæ caàn check vaøo tuyø choïn AutoIncreament nhö hình 8-10.
Hình 8-10: Choïn auto_increment
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
NULL / NOT NULL
Ñaây laø traïng thaùi cuûa moät coät trong baûng cho pheùp chaáp nhaän giaù trò NULL hay khoâng? Neáu
baïn chæ ra raøng buoäc giaù trò NOT NULL thì baét buoäc phaûi coù giaù trò trong coät naøy moãi khi maåu tin
ñöôïc nhaäp vaøo.
Ñoái vôùi moät soá kieåu döõ lieäu khoâng cho pheùp NULL baïn neân thieát laäp giaù trò maëc ñònh cho coät
ñoù, ví duï nhö kieåu döõ lieäu bit khoâng cho pheùp NULL.
Trong phaùt bieåu SQL taïo baûng, baïn chæ caàn khai baùo NULL hay NOT NULL sau kieåu döõ lieäu
cuûa coät ñoù. Trong giao dieän ñoà hoïa chæ caàn ñaùnh daáu choïn vaøo tuyø choïn Not NULL nhö hình 8-10.
6.8. Thay caáu truùc ñoái töôïng baèng ALTER
Khi chuùng ta caàn thieát phaûi söûa ñoåi moät phaàn caáu truùc cuûa caùc ñoái töôïng nhö table (view, hay
SP trong SQL Server) vì muïc ñích naøo ñoù, thì Baïn söû duïng phaùt bieåu ALTER ñeå thay ñoåi caáu truùc cuûa
ñoái töôïng hieän coù:
ALTER <Object type>
<Object Name>
Khi moät baûng toàn taïi trong cô sôû döõ lieäu, do nhu caàu caàn thieát phaûi thay ñoåi caáu truùc baûng, baïn
söû duïng phaùt bieåu ALTER TABLE cuøng caùc tham soá cuûa chuùng nhö cuù phaùp sau:
ALTER TABLE table alteration [,alteration]
Chaúng haïn, baïn coù theå söû duïng phaùt bieåu ALTER TABLE ñeå theâm moät coät teân Activate vôùi
kieåu döõ lieäu TinyInt coù giaù trò maëc ñònh laø 1.
Ví duï 8-33: Theâm moät coät teân Activate vaøo baûng tblOrders
ALTER TABLE tblorders
ADD Activate TINYINT DEFAULT "1"
Khi thay ñoåi thieát laäp giaù trò maëc ñònh cho coät baïn neân quan taâm ñeán giaù trò maëc ñònh ñoù coù
phuø hôïp cho nhöõng maåu tin ñang toàn taïi hay khoâng.
Muoán thay ñoåi giaù trò maëc ñònh cuûa coät cho nhöõng maåu tin ñang toàn taïi, baïn söû duïng ñeán meänh
ñeà phuï nhö trong ví duï sau:
Ví duï 8-34: Thieát laäp giaù trò maëc ñònh trong baûng tblOrders
ALTER TABLE tblorders
CHANGE OrderDate
OrderDate DATETIME
DEFAULT "0000-00-00"
Thay ñoåi kieåu döõ lieäu töø Date dang DateTime, baïn coù theå khai baùo nhö ví duï 4-35 sau:
Ví duï 8-35: Thay ñoåi kieåu döõ lieäu
ALTER TABLE tblorders
CHANGE OrderDate
OrderDate DATE
DEFAULT "0000-00-00 00:00:00"
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Maëc khaùc, baïn cuõng coù theå taïo hay thay ñoåi baûng trong maøn hình MySQL-Front. Chæ caàn choïn
ngaên Database | R-Click | Create New Table, cöûa soå xuaát hieän nhö hình 8-11.
Hình 8-11: Giao dieän taïo baûng baèng MySQL-Front
6.9. Phaùt bieåu SQL daïng DROP
Drop laø phaùt bieåu thöïc hieän pheùp xoaù. DROP duøng ñeå xoaù ñoái töôïng cuûa cô sôû döõ lieäu nhö baûng,
cô sôû döõ lieäu, ...Cuù phaùp cuûa phaùt bieåu DROP:
DROP <Object type> <Object name> [, .... n]
Baïn coù theå xoaù cô sôû döõ lieäu, baèng caùch khai baùo nhö sau:
Drop Database Test
/* Phaùt bieåu DROP TABLE chæ roõ baûng naøo caàn xoaù,
neáu xoaù nhieàu baûng thì baïn caàn duøng daáu phaåy (,) */
DROP TABLE tblCustomers, tblSuppliers
Ngoaøi ra, baïn cuõng coù theå duøng MySQl-Front ñeå xoaù baûng hay caùc ñoái töôïng Table trong cô sôû
döõ lieäu chæ ñònh. Neáu choïn nhieàu baûng cuøng moät luùc baïn söû duïng phím Control hay Shift nhö sau:
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 8-12: Choïn ñoái töôïng ñeå xoaù baûng trong MySQL-Front
7. TAÏO KÒCH BAÛN SQL- SQL SCRIPTS
Thoâng thöôøng khi xaây döïng cô sôû döõ lieäu ñeå phaùt trieån öùng duïng, ñoâi khi baïn caàn chuyeån cô sôû
döõ lieäu töø maùy naøy sang maùy khaùc, hay töø khu vöïc naøy hay ñeán khu vöïc khaùc.
Coù raát nhieàu caùch ñeå laøm ñieàu naøy, ôû ñaây chuùng toâi giôùi thieäu ñeán caùc baïn moät coâng cuï taùi taïo
laïi cô sôû döõ lieäu môùi töø kòch baûn cuûa cô sôû döõ lieäu goác.
Kòch baûn SQL (SQL Script) laø toång hôïp taát caû caùc phaùt bieåu SQL duøng ñeå taïo ra cô sôû döõ lieäu
trong quaù trình xaây döïng chuùng, chuùng löu tröõ döôùi daïng vaên baûn coù teân môû roäng .sql (cautruc.sql).
Coâng cuï naøy taïo kòch baûn cho taát caû caùc ñoái töôïng cuûa cô sôû döõ lieäu vôùi nhöõng thuoäc tính caên
baûn. Tuy nhieân, neáu baïn choïn vaøo tuyø choïn Data, SQL Script bao goàm caùc phaùt bieåu SQL daïng Insert
cuøng vôùi döõ lieäu trong baûng.
Tröôùc tieân baïn coù theå nhaän thaáy cöûa soå coâng cuï naøy trong MySQL-Front, baèng caùch choïn teân cô
sôû döõ lieäu Test, sau ñoù choïn Tools / Im-Export / Export Table, cöûa soå xuaát hieän nhö hình 8-13 sau:
Giaùo vieân: Phaïm Höõu Khang
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 8-13: Taïo kòch baûn trong MySQl-Front
KEÁT CHÖÔNG
Trong chöông naøy, chuùng toâi ñaõ giôùi thieäu vôùi baïn haàu heát caùc phaùt bieåu SQL thuoäc loaïi ñònh
nghóa cô sôû döõ lieäu, thao taùc döõ lieäu nhö Select, Insert, Delete vaø Update.
Phaùt bieåu SQL daïng Select vôùi caùc meänh ñeà nhö JOIN cuøng pheùp toaùn giöõa hai hay nhieàu baûng
trong phaùt bieåu SQL daïng SELECT.
Ngoaøi ra, chuùng toâi cuõng trình baøy hai loaïi phaùt bieåu SQL daïng ñònh nghóa vaø thay ñoå cô sôû döõ
lieäu taïo nhö CREATE vaø ALTER, DROP.
Giaùo vieân: Phaïm Höõu Khang
PHP VAØ DATABASE 9-1
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moân hoïc: PHP
BAØI 9: PHP VAØ DATABASE
Ñeå keát noái cô sôû döõ lieäu mySQL trong PHP, chuùng ta coù nhieàu caùch
öùng vôùi nhieàu phöông thöùc keát noái cô sôû döõ lieäu, trong phaàn naøy chuùng ta
taäp trung tìm hieåu caùch keát noái cô sôû döõ lieäu mySQL töø PHP baèng chính
goùi cuûa noù.
Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy
Khai baùo keát noái cô sôû döõ lieäu
Theâm maåu tin
Caäp nhaät maåu tin.
Xoaù maåu tin
Truy vaán döõ lieäu
1. KEÁT NOÁI CÔ SÔÛ DÖÕ LIEÄU
Ñeå keát noái cô sôû döõ lieäu mySQL baïn söû duïng khai baùp nhö sau:
<?php
$link = mysql_connect ("localhost", "root", "")
or die ("Could not connect to MySQL Database");
mysql_select_db("TestDB", $link);
?>
Trong ñoù khai baùo sau laø keát noái cô sôû döõ lieäu mySQL vôùi teân server/ip cuøng vôùi username vaù
password:
mysql_connect ("localhost", "root", "")
Vaø mysql_select_db("TestDB", $link); ñeå choïn teân cô sôû döõ lieäu sau khi môû keát noái cô sôû döõ lieäu, neáu
bieán $link coù giaù trò laø false thì keát noái cô sôû döõ lieäu khoâng thaønh coâng.
Sau khi môû keát noái cô sôû döõ lieäu maø khoâng söû duïng tìh baïn coù theå ñoùng keát noái cô sôû döõ lieäu vôùi cuù
phaùp nhö sau:
mysql_close($link);
Chaúng haïn, baïn khai baùo trang connection.php ñeå keát noái cô sôû döõ lieäu vaø ñoùng keát noái ngay
sau khi môû thaønh coâng.
<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);
PHP VAØ DATABASE 9-2
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
?>
</BODY>
</HTML>
2. THEÂM MAÅU TIN
Ñeå theâm maåu tin, baïn söû duïng haøm mysql_query(chuoãi Insert). Chaúng haïn, chuùng ta khai baùo
trang insert.php ñeå theâm maåu tin vaøo baûng tblships coù hai coät döõ lieäu laø ShipID vaø ShipName nhö ví
duï trong trang insert.php.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
<BODY>
<h3>Them mau tin</h3>
<?php
require("dbcon.php");
$sql="insert into tblships values('A01','Testing')";
$result = mysql_query($sql,$link);
$affectrow=0;
if($result)
$affectrow=mysql_affected_rows();
mysql_close($link);
?>
So mau tin them vao<?= $affectrow?>
</BODY>
</HTML>
Trong ñoù, baïn söû duïng haøm mysql_query vôùi hai tham soá laø $sql vaø $link. Keát quaû traû veà laø soá
maåu tin thöïc thi. Ngoaøi ra, baïn coù theå söû duïng ñoaïn keát noái cô sôû döõ lieäu trong taäp 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 tröôøng hôïp cho pheùp ngöôøi söû duïng theâm maåu tin thì baïn thieát keá form yeâu caàu ngöôøi söû
duïng nhaäp hai giaù trò sau ñoù submit ñeán trang keá tieáp ñeå thöïc thi vieäc theâm gt sau ñoù submit ñeán
trang keá tieáp ñeå thöïc thi vieäc theâm giaù trò vöøa nhaäp vaøo cô sôû döõ lieäu nhö hình 9-1.
PHP VAØ DATABASE 9-3
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 9-1: Theâm maåu tin
Ñeå laøm ñieàu naøy, tröôùc tieân baïn khai baùo trang them.php, trong ñoù khai baùo ñoaïn javascript ñeå
kieåm tra döõ lieäu nhaäp nhö sau:
<SCRIPT language=JavaScript>
function checkInput()
{
if (document.frmPHP.txtID.value=="")
{
alert("Invalid ID, Please enter ID");
document.frmPHP.txtID.focus();
return false;
}
if (document.frmPHP.txtName.value=="")
{
alert("Please enter Name");
document.frmPHP.txtName.focus();
return false;
}
return true;
}
</script>
Keá ñeán khai baùo theå form vaø hai theû input laïi text yeâu caàu ngöôøi söû duïng nnaäp ID vaø Name nhö
sau:
<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>
PHP VAØ DATABASE 9-4
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
</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>
Löu yù raèng, baïn khai baùo soá kyù töï lôùn nhaát cho pheùp nhaäp baèng vôùi kích thöôùc ñaõ khai baùo
trong cô sôû döõ lieäu öùng vôùi thuoäc tính maxlength.
Khi ngöôøi söû duïng nhaäp hai giaù trò vaø nhaán nuùt submit, trang keá tieáp ñöïôc trieäu goïi. Trang naøy
laáy giaù trò nhaäp baèng caùch söû duïng bieán form hay $HTTP_POST_VARS. Ñoái vôùi tröôøng hôïp naøy
chuùng ta söû duïng bieán 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>
3. CAÄP NHAÄT MAÅU TIN
Ñoái vôùi tröôøng hôïp caäp nhaät maåu tin, baïn cuõng söû duïng haøm mysql_query vôùi phaùt bieåu Update
thay ví Insert nhö treân, ví duï chuùng ta khai baùo trang update.php ñeå caäp nhaät maåu tin trong baûng
tblShips vôùi teân laø UpdateTesting khi maõ coù giaù trò laø A01.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
<BODY>
<h3>Cap nhat mau tin</h3>
<?php
require("dbcon.php");
$sql="Update tblships set ShipName='UpdateTesting' ";
$sql.=" where ShipID='A01'";
$result = mysql_query($sql,$link);
$affectrow=0;
if($result)
PHP VAØ DATABASE 9-5
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
$affectrow=mysql_affected_rows();
mysql_close($link);
?>
So mau tin cap nhat <?= $affectrow?>
</BODY>
</HTML>
Löu yù raèng, ñeå bieát soá maåu tin ñaõ thöïc thi bôûi phaùt bieåu SQL baïn söû duïng haøm
mysql_affected_rows.
if($result)
$affectrow=mysql_affected_rows();
Töông töï nhö treân, baïn coù theå thieát keá form cho pheùp ngöôøi söû duïng caäp nhaät döõ lieäu baèng caùch
thieát keá form yeâu caàu ngöôøi söû duïng nhaäp maõ vaø teân caäp nhaän.
Tröôùc tieân thieát keá from cho pheùp nhaäp döõ lieäu ñeå caäp nhaät nhö ví duï trang capnhat.php, sau
khi hoïc phaàn truy vaán xong, thaqy vì nhaäp maõ baïn cho pheùp ngöôøi söû duïng choïn trong danh saùch ñaõ
coù nhö hình 9-2.
Hình 9-2: Caäp nhaät döõ lieäu
Sau khi ngöôøi söû duïng nhaán nuùt submit, trang doupdate.php seõ trieäu goïi, keát quaû traû veà 1 hay 0
maåu tin.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
<BODY>
<h3>Cap nhat mau tin</h3>
<?php
$affectrow=0;
require("dbcon.php");
$sql="update tblships set ShipName='";
$sql .=$txtName."' where ShipID='".$txtID."'";
$result = mysql_query($sql,$link);
if($result)
$affectrow=mysql_affected_rows();
mysql_close($link);
?>
PHP VAØ DATABASE 9-6
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
So mau tin cap nhat <?= $affectrow?>
</BODY>
</HTML>
4. XOAÙ MAÅU TIN
Töông töï nhö vaäy khi xoaù maåu tin, baïn chæ thay ñoåi phaùt bieåu SQL daïng Delete nhö ví duï trong
taäp tin delete.php.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
<BODY>
<h3>Xoa mau tin</h3>
<?php
require("dbcon.php");
$sql="Delete From tblships where ShipID='A01'";
$result = mysql_query($sql,$link);
$affectrow=0;
if($result)
$affectrow=mysql_affected_rows();
mysql_close($link);
?>
So mau tin da xoa <?= $affectrow?>
</BODY>
</HTML>
Ñoái vôùi tröôøng hôïp xoaù thì ñôn giaûn hôn, baïn cæh caàn bieát ñöôïc maõ caàn xoaù, chính vì vaäy trong
tröôøng hôïp naøy chuùng ta chæ caàn thieát keá trang cho pheùp nhaäp maõ nhö hình 9-3.
Hình 9-3: Xoaù 1 maåu tin
Sau khi nhaäp maõ caàn xoaù, neáu ngöôøi söû duïng nhaán nuùt Delete laäp töùc trang dodelete.php seõ
trieäu goïi vaø xoaù maåu tin töông öùng.
<HTML>
<HEAD>
<TITLE>::Welcome to PHP and mySQL</TITLE>
</HEAD>
PHP VAØ DATABASE 9-7
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
<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>
5. TRUY VAÁN DÖÕ LIEÄU
Ñeå truy vaán döõ lieäu baïn söû duïng haøm mysql_num_rows ñeå bieát ñöôïc soá maåu tin traû veà vaø haøm
mysql_fetch_array ñeå ñoïc töøng maåu tin vaø maûng sau ñoù trình baøy giaù trò töø maûng naøy. Chaúng haïn,
chuùng ta taïo moät taäp tin lietke.php duøng ñeå lieät keâ danh saùch maåu tin trong baûng tblShips nhö hình
9-4.
Hình 9-4: Lieät keâ maåu tin
Ñeå laøm ñieàu naøy, baïn khai baùo ñoaïn chöông trình ñoïc baûng döõ lieäu töông töï nhö ví duï sau:
<?php
require("dbcon.php");
$totalRows = 0;
$stSQL ="select * from tblShips";
$result = mysql_query($stSQL, $link);
$totalRows=mysql_num_rows($result);
?>
Sau ñoù, duøng haøm mysql_fetch_array ñeå ñoïc töøng maåu tin vaø in ra nhö sau:
<?php
if($totalRows>0)
{
$i=0;
while ($row = mysql_fetch_array ($result))
{
$i+=1;
PHP VAØ DATABASE 9-8
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
?>
<tr valign="top">
<td>
<?=$row["ShipID"]?> </td>
<td ><?=$row["ShipName"]?></td>
</tr>
Trong tröôøng hôïp soá maåu tin traû veà laø 0 thì in ra caâu thoâng baùo khoâng tìm thaáy nhö sau:
<?php
}
}else{
?>
<tr valign="top">
<td >&nbsp;</td>
<td > <b><font face="Arial" color="#FF0000">
Oop! Ship not found!</font></b></td>
</tr>
<?php
}
?>
6. KEÁT LUAÄN
Trong baøi naøy, chuùng ta taäp trung tìm hieåu caùch keát noái cô sôû döõ lieäu, theâm, xoaù caäp nhaät vaø
lieät keâ maåu tin. Trong baøi keá tieáp chuùng ta tìm hieåu nhieàu caùc trình baøy döõ lieäu, xoaù maåu tin theo
daïng maûng.
PHP VAØ DATABASE 9-1
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Moân hoïc: PHP
BAØI 10: XOAÙ, CAÄP NHAÄT DÖÕ LIEÄU DAÏNG MAÛNG
Trong baøi tröôùc chuùng ta ñaõ laøm quen vôùi caùch xoaù maåu tin trong cô
sôû döõ lieäu mySQL. Ñoái vôùi tröôøng hôïp xoaù moät luùc nhieàu maåu tin, chuùng ta
phaûi xaây döïng trang PHP coù söû duïng theû input daïng checkbox.
Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy
Lieät keâ döõ lieäu daïng danh saùch
Xoaù nhieàu maåu tin
Caäp nhaät nhieàu maåu tin
1. LIEÄT KEÂ DÖÕ LIEÄU
Ñeå xoaù nhieàu maåu tin cuøng moät luùc, tröôùc tieân baïn khai baùo trang PHP ñeå lieät keâ danh saùch maåu
tin trong maûng döõ lieäu chaèng haïn, moãi maåu tin xuaát hieän moät checkbox töông öùng. Checkbox naøy
coù giaù trò laø maõ nhaän daïng cuûa maåu tin ñoù. Trong tröôøng hôïp naøy chuùng ta duøng coät khoaù cuûa
maõ chuyeån haøng (SubCateID) trong baûng tblSubCategories ñònh nghóa trong trang lietke.php nhö
hình 10-1.
PHP VAØ DATABASE 9-2
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 10-1: Lieät keâ danh saùch laïi saûn phaåm
Ñeå cho pheùp laáy ñöôïc nhieàu giaù trò choïn cuûa saûn phaåm nhö hình tren, baïn khai baùo caùc checkbox
naøy cuøng teân (giaû söû teân laø chkid) vaø giaù trò trò laø SubCateID cuûa moãi saûn phaåm nhö ví duï 10-1
trong trang lietke.php.
<?php
if($totalRows>0)
{
$i=0;
while ($row = mysql_fetch_array ($result))
{
$i+=1;
?>
<tr valign="top">
<td><input type=checkbox name=chkid
value="<?=$row["SubCateID"]?>"> </td>
<td><?=$row["CateID"]?> </td>
<td><?=$row["SubCateID"]?> </td>
<td ><a href="capnhat.php?id=<?=$row["SubCateID"]?>">
<?=$row["SubCateName"]?></a></td>
</tr>
<?php
}
?>
<tr valign="top">
<td colspan="4" align="middle">
<hr noshade size="1">
</td>
</tr>
<tr valign="top">
<td colspan=3><input type=submit value="Delete">
<input type=hidden name=from_ value="subcategories">
<input type=hidden name=type value="0">
<input type=hidden name=chon value="">
<input type=button value="New"
onclick="window.open('them.php',target='_main')"></td>
<td >Tong so mau tin <?=$i?></td>
</tr>
<?php
}else{
?>
<tr valign="top">
<td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td>
<td > <b><font face="Arial" color="#FF0000">
Oop! Ship not found!</font></b></td>
</tr>
<?php
}
?>
Trong ñoù, hai khai baùo sau:
<input type=hidden name=from_ value="subcategories">
<input type=hidden name=type value="0">
<input type=hidden name=chon value="">
Cho bieát baïn submit töø trang naøo vaø loaïi xoaù nhieàu maåu tin hay moät maåu tin ñoái vôùi baûng töông
öùng. Muïc ñích cuûa vaán ñeà naøy laø trang delete söû duïng chung cho nhieàu baûng khaùc nhau vaø töø trang
lieät keâ (xoaù nhieàu) hoaëc töø trang edit (1 maåu tin cuï theå).
Ngoaøi ra, chuùng ta khai baùo <input type=hidden name=chon value=""> ñeå nhaän giaù trò choïn treân
caùch checkbox baèng caùch khai baùo ñoaïn javascript nhö sau:
<script>
function calculatechon()
PHP VAØ DATABASE 9-3
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
{
var strchon="";
var alen=document.frmList.elements.length;
var buttons=1;
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 nhieân, do nhieàu loaïi saûn phaåm thuoäc caùc nhoùm saûn phaåm khaùc nhau, chính vì vaäy baïn khai baùo
danh saùch nhoùm saûn phaåm treân theû select cho pheùp ngöôøi söû duïng lieät keâ saùch theo nhoùm saûn
phaåm nhö hình 10-2.
Hình 10-2: Lieät keâ danh saùch loaïi saùch
Ñeå lieät keâ danh saùch nhoùm trong baûng tblCategories, baèng caùch khai baùo phöông thöùc nhaän chuoãi
SQL daïng Select vaø giaù trò maëc ñònh traû veà nhieàu phaàn töû theû option trong taäp tin database.php
nhö ví duï 10-2.
PHP VAØ DATABASE 9-4
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
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;
}
Sau ñoù, goïi phöông thöùc naøy trong trang lietketheonhom.php nhö ví duï 10-3.
<?php
require("dbcon.php");
require("database.php");
$id="";
if (isset($cateid))
$id=$cateid;
$stSQL ="select CateID As ID, CateName as Name from tblCategories ";
$result = mysql_query($stSQL, $link);
$totalRows=mysql_num_rows($result);
$strOption=optionselected($stSQL,$id,$link);
?>
<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>&nbsp;</td>
</tr>
</form>
Laàn ñaàu tieân baïn coù theå choïn maëc ñònh moät nhoùm hoaëc lieät keâ taát caû, khi ngöôøi söû duïng choïn nhoùm
saûn phaåm naøo ñoù thì trang lietketheonhom.php seõ lieät keâ danh saùch loaïi saùch cuûa nhoùm saùch ñoù.
Ñeå laøm ñieàu naøy, baïn khai baùo theû form vôùi 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>&nbsp;</td>
</tr>
</form>
Khi ngöôøi söû duïng choïn caùc maåu tin nhö hình 10-2 vaø nhaán nuùt Delete, döïa vaøo giaù trò cuûa nuùt coù
teân action (trong tröôøng hôïp naøy laø Delete), baïn coù theå khai baùo bieán ñeå laáy giaù trò choïn baèng caùch
khai baùo nhö ví duï 10-5.
$strid=$chon;
PHP VAØ DATABASE 9-5
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
$strid=str_replace(",","','",$strid);
Döïa vaøo theû hidden khai baùo trong caùc trang trình baøy danh saùch (chaúng aïn lietketheonhom.php)
maåu tin nhö sau:
<input name="from" type=hidden value="subcategories">
Baïn coù theå bieát töø trang naøo goïi ñeán trang dodelete.php ñeå quay trôû veà khi thöïc hieän xong taùc vuï xöû
lyù.
Ngoaøi ra, döïa vaøo giaù trò cuûa nuùt action ñeå thöïc hieän phaùt bieåu SQL. Chaúng haïn, trong tröôøng hôïp
naøy neáu ngöôøi söû duïng nhaán huùt Delete thì baïn khai baùo 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ù, baïn coù theå thöïc thi phaùt bieåu SQL vöøa khai baùo ôû treân nhö ví duï 10-7.
if($stSQL!="")
{
$result = mysql_query($stSQL, $link);
}
Löu yù raèng, baïn cuõng neân khai baùo try catch trong khi laøm vieäc vôùi cô sôû döõ lieäu. Ngoaøi ra, baïn
cuõng phaûi xaùc nhaän tröôùc khi thöïc thi haønh ñoäng xoaù maåu tin choïn baèng caùch khai baùo ñoaïn
Javascript nhö sau:
<script>
function isok()
{
return confirm('Are you sure to delete?');
}
</script>
Sau ñoù goïi trong bieán coá onsubmit cuûa form nhö sau:
<form action=dosql.php method=post onsubmit="return calculatechon();">
2. CAÄP NHAÄT NHIEÀU MAÅU TIN
Töông töï nhö tröôøng hôïp Delete, khi baïn duyeät (approval) moät soá maåu tin theo moät coät döõ lieäu naøo
ñoù, chaúng haïn, trong tröôøng hôïp naøy chuùng ta cho pheùp söû duïng nhöõng saûn phaåm ñaõ qua söï ñoàng yù
cuûa nhaø quaûn lyù thì coät döõ lieäu Activate cuûa baûng tbltems coù giaù trò laø 1.
Ñeå laøm ñieàu naøy, tröôùc tieân baïn lieät keâ danh saùch saûn phaåm nhö hình 10-3.
PHP VAØ DATABASE 9-6
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 10-3: Lieät keâ danh saùch saûn phaåm duyeät hay chöa
Töông töï nhö trong tröôøng hôïp delete, baïn khai baùo 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."')";
PHP VAØ DATABASE 9-7
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
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>
3. KEÁT LUAÄN
Trong baøi naøy, chuùng ta tìm hieåu chöùc naêng xoaù, caäp nhaät nhieàu maåu tin baèng caùch söû duïng theû
input loaïi checkbox cuøng teân vaø khaùc giaù trò, baøi keá tieáp chuùng ta tieáp tuïc tìm hieåu veà chöùc naêng
ñaêng nhaäp trong PHP.

More Related Content

PDF
Can ban php[bookbooming.com]
PDF
8234 tai lieu_ve_lap_trinh_web
PDF
Căn bản jsp phạm hữu khang[bookbooming.com]
PDF
PPT
Trabajo sobre vietnam
PPTX
Dunia seni visual thn 3
PPT
miss the forest : bringing together multiple taxonomies
PPTX
презентация Microsoft office power point
Can ban php[bookbooming.com]
8234 tai lieu_ve_lap_trinh_web
Căn bản jsp phạm hữu khang[bookbooming.com]
Trabajo sobre vietnam
Dunia seni visual thn 3
miss the forest : bringing together multiple taxonomies
презентация Microsoft office power point

Viewers also liked (20)

PDF
ordenamiento
PPTX
Transformational online and hybrid teaching%28 sjc%29 (1)
PDF
In-Memory Fuzzing with Java (Publication from High-Tech Bridge)
PPT
Amenorrea. CMC.
PPT
Price vs. Absorbency
PDF
Зарипов А.Р. Практика коммуникационного взаимодействия между государственными...
PPTX
Larraitz
PPT
Improving
PPT
Youth Perspectives 1999
ODP
аравтын бут 3
PDF
How the hell do I run my microservices in production, and will it scale?
PDF
Company profile-Jworks Ext (Eyecandy)
PDF
Daftarhadir&nilai evaluasi pai
PDF
Spontaneous intracerebral hemorrhage in Mexico: results from a Multicenter Na...
PDF
Kelompok kkn x. 2013
PDF
Kontrak transaksi perkuliahan1314
PDF
Towards processing and reasoning streams of events in knowledge driven manufa...
PPTX
Housing and Finance Presentation
PPTX
Ветрова А., ЛаринаА., Гонцова В. Проект для "КонсультантПлюс Илан"
PPTX
production log continued
ordenamiento
Transformational online and hybrid teaching%28 sjc%29 (1)
In-Memory Fuzzing with Java (Publication from High-Tech Bridge)
Amenorrea. CMC.
Price vs. Absorbency
Зарипов А.Р. Практика коммуникационного взаимодействия между государственными...
Larraitz
Improving
Youth Perspectives 1999
аравтын бут 3
How the hell do I run my microservices in production, and will it scale?
Company profile-Jworks Ext (Eyecandy)
Daftarhadir&nilai evaluasi pai
Spontaneous intracerebral hemorrhage in Mexico: results from a Multicenter Na...
Kelompok kkn x. 2013
Kontrak transaksi perkuliahan1314
Towards processing and reasoning streams of events in knowledge driven manufa...
Housing and Finance Presentation
Ветрова А., ЛаринаА., Гонцова В. Проект для "КонсультантПлюс Илан"
production log continued
Ad

More from hieusy (20)

PPTX
Thảo luận logic học
PPTX
Tcs p2
PPTX
Tcs p1
DOC
Ngan hang de thi (du thao)
PPT
Logic tl(01 k5)
PPT
Logic chuong5
PPT
Logic chuong4
PPT
Logic chuong3
PPT
Logic chuong2
PPT
Logic chuong1
DOC
Logic hoc dai cuong (vuong tat dat)
DOC
Giao trinh logic dc(trần văn toàn)
DOC
Giao trinh logic dc(trần väƒn toă n)
DOC
Giao trinh logic (bui thanh quat)
PDF
Giai thuat va lap trinh
DOC
De cuong on tap (form)
DOC
Ctdl1
PPTX
Thảo luận logic học
DOC
Ngan hang de thi (du thao)
PPT
Logic tl(01 k5)
Thảo luận logic học
Tcs p2
Tcs p1
Ngan hang de thi (du thao)
Logic tl(01 k5)
Logic chuong5
Logic chuong4
Logic chuong3
Logic chuong2
Logic chuong1
Logic hoc dai cuong (vuong tat dat)
Giao trinh logic dc(trần văn toàn)
Giao trinh logic dc(trần väƒn toă n)
Giao trinh logic (bui thanh quat)
Giai thuat va lap trinh
De cuong on tap (form)
Ctdl1
Thảo luận logic học
Ngan hang de thi (du thao)
Logic tl(01 k5)
Ad

Giao trinh php can ban

  • 1. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Moân hoïc: PHP Baøi 1 Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc: Giôùi thieäu PHP Caáu hình IIS, Apache Web Server Caøi ñaët PHP. o Caøi ñaët PHP. o Caáu hình öùng duïng PHP Giôùi thieäu PHP. o PHP Script. o Ghi chuù trong PHP o In noäi dung baèng PHP 1. GIÔÙI THIEÄU PHP PHP vieát taét cuûa chöõ Personal Home Page ra ñôøi naêm 1994 do phaùt minh cuûa Rasmus Lerdorf, vaø noù tieáp tuïc ñöôïc phaùt trieån bôûi nhieàu caù nhaân vaø taäp theå khaùc, do ñoù PHP ñöôïc xem nhö moät saûn phaåm cuûa maõ nguoàn môû. PHP laø kòch baûn trình chuû (server script) chaïy treân phía server (server side) nhö caùch server script khaùc (asp, jsp, cold fusion). PHP laø kòch baûn cho pheùp chuùng ta xaây döïng öùng duïng web treân maïng internet hay intranet töông taùc vôùi moïi cô sôû döõ lieäu nhö mySQL, PostgreSQL, Oracle, SQL Server vaø Access. Löu yù raèng, töø phieân baûn 4.0 trôû veà sau môùi hoã trôï session, ngoaøi ra PHP cuõng nhö Perl laø kòch baûng xöû lyù chuoãi raát maïnh chính vì vaäy baïn coù theå söû duïng PHP trong nhöõng coù yeâu caàu veà xöû lyù chuoãi. 2. CAØI ÑAËT PHP Caøi ñaët PHP treân neàn Windows thì söû duïng php-4.0.6-Win32.zip, sau khi caøi ñaët öùng duïng naøy treân ñóa cöùng seõ xuaát hieän thö muïc PHP, trong thöï muïc naøy seõ coù taäp tin php4ts.dll vaø php.exe cuøng vôùi thö muïc sessiondata. Ngoaøi ra, trong thö muïc WINDOW hoaëc WINNT seõ xuaát hieän taäp tin php.ini, taäp tin naøy cho pheùp baïn caáu hình cho öùng duïng PHP. Chaúng haïn, khi söû duïng session, PHP caàn moät nôi ñeå löu tröõ chuùng, trong taäp tin naøy maëc ñònh laø session.save_path = C:PHPsessiondata, neáu baïn caøi ñaët PHP vôùi thö muïc PHP treân ñóa D thì baïn caàn thay ñoåi ñöôøng daãn trong khai baùo naøy. Töông töï nhö vaäy, khi coù loãi trong trangPHP thì loãi thöôøng xuaát hieän khi trieäu goïi chuùng, ñeå che daáu caùc loãi naøy thì baïn caàn khai baùo display_errors = Off thay vì chuùng ôû traïng thaùi display_errors = On. Ngoaøi ra, trang PHP cuõng coù theå trình baøy moät soá warning khi chuùng phaùt hieän cuù phaùp khoâng hôïp lyù, chính vì vaäy ñeå che daáu caùc warning naøy thì baïn cuõng caàn khai baùo traïng thaùi Off thay vì On nhö assert.warning = Off. 3. CAÁU HÌNH ÖÙNG DUÏNG PHP 3.1. Caáu hình IIS Sau khi caøi ñaët heä ñieàu haønh Windows NT hay 2000 trôû veà sau, baèng caùch khai baùo môùi moät web site hay virtual site trong moät site ñang coù theo caùc böôùc nhö sau: 1. Taïo moät thö muïc coù teân myPHP ñeà löu tröõ caùc taäp tin PHP 2. Khôûi ñoäng IIS (töï ñoäng khôûi ñoäng neáu Windows NT/2000) Giaùo vieân: Phaïm Höõu Khang
  • 2. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 3. Choïn Start | Programs | Administrative Tools | Internet Information Server 4. Neáu taïo virtual site thì choïn Default Web Ste | R-Click | New | Virtual Site 5. Trong tröôøng hôïp taïo môùi Site thì Default Web Ste | R-Click | New | Site 6. Neáu choïn tröôøng hôïp 4 thì baïn cung taáp dieãn giaûi cuûa site nhö hình 1-1 Hình 1-1: Khai baùo dieãn giaûi 7. Choïn nuùt Next vaø khai baùo IP vaø port, trong tröôøng hôïp baïn khoâng söû duïng port 80 cho öùng site khaùc thì choïn giaù trò maëc ñònh. Tuy nhieân neáu coù nhieàu öùng duïng tröôùc ñoù ñaõ caáu hình trong IIS thì baïn coù theå thay ñoåi port khaùc, ví duï choïn port 85 nhö hình 1-2. Hình 1-2: Khai baùo IP vaø Port Löu yù raèng, port 80 laø port chuaån ñieàu naøy coù nghóa laø khi trieäu goïi treân trình duyeät baïn khoâng caàn goõ port, ví duï http://localhost/. Ñoái vôùi tröôøng hôïp port khaùc thì baïn phaûi goõ töông töï nhö http://localhost:85/ Giaùo vieân: Phaïm Höõu Khang
  • 3. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 8. Choïn Next, baïn choïn thö muïc cuûa öùng duïng, ñoái vôùi tröôøng hôïp naøy chuùng ta choïn vaøo thö muïc myPHP, chaúng haïn trong tröôøng hôïp naøy chuùng ta choïn htö muïc myPHP nhö hình 1-3. Hình 1-3: Choïn thö muïc myPHP 9. Keá ñeán choïn quyeàn truy caäp web site, trong tröôøng hôïp ñang thieát keá thì baïn choïn vaøo Browse. Ngoaøi ra, neáu baïn cho pheùp ngöôøi söû duïng internet coù theå thöïc thi taäp tin thöïc thi töø xa thì choïn vaøo tuyø choïn execute. Hình 1-4: Quyeàn truy caäp 10.Choïn Next vaø Finish, trong cöûa soå IIS xuaát hieän öùng duïng coù teân myPHP (khai baùo trong phaàn dieãn giaûi) nhö hình 1-5. Giaùo vieân: Phaïm Höõu Khang
  • 4. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 1-5: Taïo thaønh coâng öùng duïng PHP trong IIS 11.Sau khi taïo öùng duïng xong, baïn choïn teân öùng duïng myPHP | R-Click } Properties | cöûa soå xuaát hieän nhö hình 1-5. Hình 1-5: Caáu hình PHP trong IIS 12.Baèng caùch choïn vaøo nuùt Configuration, cöûa soå seõ xuaát hieän nhö hình 1-6. Giaùo vieân: Phaïm Höõu Khang
  • 5. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 1-6: Theâm PHP Engine 13.Choïn nuùt Add, vaø khai baùo nhö hình 1-7. Hình 1-7: Khai baùo PHP Engine 14.Ñeå kieåm tra uùng duïng, baïn môû cöûa soå IE vaø goõ treân thanh ñòa chæ chuoãi nhö sau: http://localhost:85/ , keát quaû xuaát hieän nhö hình 1-8. Giaùo vieân: Phaïm Höõu Khang
  • 6. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 1-8: ÖÙng duïng PHP ñaõ ñöôïc khôûi ñoäng 3.2. 4. Caøi ñaët Apache Web Servr Ñeå caøi ñaët Apache Web Server, baïn theo caùc böôùc sau 1. Chep tap tin apache_1.3.22-win32-x86.exe xuong dia cung 2. Chay tap tin nay va cai dat len dia C:Program Files, sau khi ket thuc thanh cong phan cai dat Apache, baïn baét ñaàu caáu hình öùng duïng PHP. 3. Cheùp ba doøng leänh töø taäp tin install.txt trong thö muïc C:PHP ScriptAlias /php/ "c:/php/" AddType application/x-httpd-php .php Action application/x-httpd-php "/php/php.exe" 4. Paste vaøo taäp tin httpd.conf trong thö muïc C:Program FilesApache GroupApacheConf 5. Chon Start | Programs | Apache HTTP Server | Control Apache Server | Start 6. Viet trang test.php voi noi dung <?echo "hello";?> 7. Chep tap tin test.php vao thu muc C:Program FilesApache GroupApachehtdocs 8. Sau ñoù goõ treân trình duyeät http://localhost/test.php GIÔÙI THIEÄU PHP 4.1. Yeâu caàu PHP döïa treân cuù phaùp cuûa ngoân ngöõ laäp trình C, chính vì vaäy khi laøm vieäc vôùi PHP baïn phaûi laø ngöôøi coù kieán thöùc veà ngoân ngöõ C, C++, Visual C. Neáu baïn xaây döïng öùng duïng PHP coù keát noái cô sôû döõ lieäu thì kieán thöùc veà cô sôû döõ lieäu MySQL, SQL Server hay Oracle laø ñieàu caàn thieát. Giaùo vieân: Phaïm Höõu Khang
  • 7. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 4.2. 4.3. 4.4. Giôùi thieäu PHP laø kòch baûn trình chuû (Server Script) ñöôïc chaïy treân neàn PHP Engine, cuøng vôùi öùng duïng Web Server ñeå quaûn lyù chuùng. Web Server thöôøng söû duïng laø IIS, Apache Web Server, ... Thoâng dòch trang PHP Khi ngöôøi söû duïng goïi trang PHP, Web Server trieäu goïi PHP Engine ñeå thoâng dòch (töông töï nhö ASP 3.0 chæ thoâng dòch chöù khoâng phaûi bieân dòch) dòch trang PHP vaø traû veà keát quaû cho ngöôøi söû duïng nhö hình 1-9. Hình 1-9: Quaù trình thoâng dòch trang PHP Taäp tin PHP Web Server PHP Engine P Parse Response Request Parse Request Response Kòch baûn (script) Noäi dung cuûa PHP coù theå khai baùo laãn loän vôùi HTML, chính vì vaäy baïn söû duïng caëp daáu giaù <?=trò/bieåu thöùc/bieán?> ñeå khai baùo maõ PHP. Chaúng haïn, chuùng ta khai baùo: <br> 1-Giaù trò bieán Str: <?=$groupid?> 2-Giaù trò bieán i: <?=$i?> 3-Giaù trò cuõ theå: <?=10?> Chaúng haïn baïn khai baùo trang hello.php vôùi noäi 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> Keát quaû traû veà nhö hình 1-10 khi trieäu goïi trang naøy treân trình duyeät. Giaùo vieân: Phaïm Höõu Khang
  • 8. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 1-10: Keát quaû trang hello.php Trong tröôøng hôïp coù nhieàu khai baùo, baïn söû duïng Scriptlet, ñeàu naøy coù nghóa laø söû duïng caëp daáu treân nhö <?php Khai baùo ?> vôùi caùc khai baùo PHP vôùi cuù phaùp cuûa C nhö sau: <?php $sotrang=$pagenumber; $record=$rownumber; $totalRows = 0; $paging=""; ?> -Khai baùo treân laø Scriptlet Giaù trò cuûa paging: <br> <?= $paging ?> -Khai baùo naøy laø Script Löu yù raèng, keát thuùc moãi caâu leänh phaûi duøng daáu ; Ví duï, baïn khai baùo ñoaïn PHP treân trong taäp tin script.php nhö ví duï 1-2 Ví duï 1-2: Trang script.php <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <?php $sotrang=$pagenumber; $record=$rownumber; $totalRows = 0; $paging="Go to 1 2 3 4 5 Next"; ?> Giaù trò cuûa paging: <?= $paging ?> </BODY> </HTML> Keát quaû traû veà nhö hình 1-11 khi trieäu goïi trang naøy treân trình duyeät. Giaùo vieân: Phaïm Höõu Khang
  • 9. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 1-11: Keát quaû trang hello.php Löu yù raèng, neáu baïn muoán söû duïng script hay scriptlet nhö ASP thì baïn khai baùo trong taäp tin php.ini nhö sau: asp_tags = On ; Allow ASP-style <% %> tags. maëc ñònh laø Off Khi ñoù trong trang PHP, thay vì baïn khai baùo <?php $sotrang=$pagenumber; $record=$rownumber; $totalRows = 0; $paging=""; ?> Thì baïn coù theå khai baùo nhö sau: <% $sotrang=$pagenumber; $record=$rownumber; $totalRows = 0; $paging=""; %> 4.5. Ghi chuù trong PHP Ghi chuù trong kòch baûn PHP töông töï ngoân ngöõ laäp trình C, ñeå ghi chuù moät doøng thì baïn söû duïng caëp daáu /. Chaúng haïn khai baùo sau laø ghi chuù: <?php // Khai baùo bieán ñeå paging $sotrang=$pagenumber; $record=$rownumber; $totalRows = 0; $paging=""; ?> Trong tröôøng hôïp coù nhieàu doøng caàn ghi chuù baïn söû duïng caëp daáu /* vaø */, ví duï khai baùo ghi chuù nhö sau: Giaùo vieân: Phaïm Höõu Khang
  • 10. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM /* Khai baùo bieán ñeå ñoïc döõ lieäu trong ñoù totalRows laø bieán traû veà toång soá maåu tin */ $result = mysql_query($stSQL, $link); $totalRows=mysql_num_rows($result); Ngoaøi ra, baïn cuõng coù theå söû duïng daáu # ñeå khai baùo ghi chuù cho töøng doøng, ví duï khai baùo sau laø ghi chuù: <?php # Khai baùo bieán ñeå paging $sotrang=$pagenumber; $record=$rownumber; $totalRows = 0; $paging=""; ?> 4.6. In keát quaû treân trang PHP Khaùc vôù caùc kòch baûn nhö ASP, JSP, Perl, ñoái vôùi PHP ñeå in ra giaù trò töø bieán, bieåu thöùc, haøm, giaù trò cuï theå thæ baïn coù theå söû duïng script nhö treân: Giaù trò cuûa paging: <%= $paging %> Tuy nhieân, ñeå söû duïng cuù phaùp cuûa PHP khi in ra giaù trò töø bieán, bieåu thöùc, haøm, giaù trò cuï theå thì söû duïng khai baùo echo nhö sau: <?php $stSQLs=”select * from Customers”; echo $stSQLs; ?> Chaúng haïn, khai baùo echo nhö ví duï 1-3. Ví duï 1-2: Trang echo.php <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <?php $sotrang=$pagenumber; $record=$rownumber; $totalRows = 0; $paging="Go to 1 2 3 4 5 Next"; /*duøng phaùt bieåu echo */ echo “Giaù trò cuûa paging: “; echo $paging; ?> </BODY> </HTML> Keát quaû traû veà nhö hình 1-12 khi trieäu goïi trang naøy treân trình duyeät. Giaùo vieân: Phaïm Höõu Khang
  • 11. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 1-11: Keát quaû trang hello.php 5. KEÁT LUAÄN Trong baøi naøy, chuùng ta taäp trung tìm hieåu caùch caøi ñaët PHP vaø Apache Web Server, sau ñoù caáu hình öùng duïng PHP trong IIS hay söû duïng caáu hình maëc ñònh cuûa chuùng. Ngoaøi ra, baïn laøm quen caùch khai baùo maõ PHP trong trang .php cuøng vôùi script hay scriptlet. Giaùo vieân: Phaïm Höõu Khang
  • 12. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Moân hoïc: PHP Baøi 2 Baøi hoïc naøy chuùng ta seõ laøm quen vaø tìm hieåu cuù phaùp vaø moät soá phöông thöùc cô baûn cuûa PHP: Caâu leänh. Kieåu döõ lieäu vaø bieán Khai baùo vaø söû duïng haèng. Döõ lieäu maûng Chuyeån ñoåi kieåu döõ lieäu 1. KHAÙI NIEÄM VEÀ CUÙ PHAÙP PHP Cuù phaùp PHP chính laø cuù phaùp trong ngoân ngöõ C, caùc baïn laøm quen vôùi ngoân ngöõ C thì coù lôïi theá trong laäp trình PHP. Ñeå laäp trình baèng ngoân ngöõ PHP caàn chuù yù nhöõng ñieåm sau: Cuoái caâu leänh coù daáu ; Bieán trong PHP coù tieàn toá laø $ Moãi phöông thöùc ñeàu baét ñaàu { vaø ñoùng baèng daáu } Khi khai baùo bieán thì khoâng coù kieãu döõ lieäu Neân coù giaù trò khôûi ñaàu cho bieán khai baùo Phaûi coù chi chuù (comment) cho moãi feature môùi Söû duïng daáu // hoaëc # ñeå giaûi thích cho moãi caâu ghi chuù Söû duïng /* vaø */ cho moãi ñoaïn ghi chuù Khai baùo bieán coù phaân bieät chöõ hoa hay thöôøng 2. KHAI BAÙO BIEÁN Khi thöïc hieän khai baùo bieán trong C, baïn caàn phaûi bieát tuaân thuû quy ñònh nhö: kieãu döõ lieäu tröôùc teân bieán vaø coù giaù trò khôûi ñaàu, tuy nhieân khi laøm vieäc vôùi PHP thì khoâng caàn khai baùo kieåu döõ lieäu nhöng söû duïng tieàn toá $ tröôùc bieán. Xuaát phaùt töø nhöõng ñieàu ôû treân, khai baùo bieán trong PHP nhö sau: $variablename [=initial value]; $licount=0; $lsSQL=”Select * from tblusers where active=1”; $nameTypes = array("first", "last", "company"); $checkerror=false; Chaúng haïn, khai baùo nhö ví duï 2-1 (variables.php) <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> Giaùo vieân: Phaïm Höõu Khang
  • 13. COMPUTER LEARNING CENTER 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. KIEÅU DÖÕ LIEÄU Baûng caùc kieåu döõ lieäu thoâng thöôøng Boolean True hay false Integer giaù trò lôùn nhaát xaáp xæ 2 tyû Float ~1.8e308 goàm 14 soá leõ String Löu chuoãi kyù töï chieàu daøi voâ haïn Object Kieåu ñoái töôïng Array Maûng vôùi nhieàu kieåu döõ lieäu 3.1. Thay ñoåi kieåu döõ lieäu Ñeå thay ñoåi kieåu döõ lieäu, baïn coù theå söû duïng caùch eùp kieåu nhö trong caùc ngoân ngöõ laäp trình C hay Java. Chaúng haïn, khai baùo eùp kieåu nhö ví duï 2-2 (box.php): <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Variable</h4> <?php $i="S10A"; echo $i+10; echo "<br>"; $i="10A"; $j=(float)$i; $j+=10; echo $i; echo "<br>"; echo $j; echo "<br>"; $q=12;$p=5; echo "Amount: ".(float)$q/$p; ?> </BODY> </HTML> Giaùo vieân: Phaïm Höõu Khang
  • 14. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Löu yù raèng, PHP töï ñoäng nhaän bieát giaù trò chuoãi ñaèng sau soá seõ khoâng ñöôïc chuyeån sang kieåu döõ lieäu soá nhö tröôøng hôïp treân. Ngoaøi ra, baïn coù theå söû duïng haøm settype ñeå chuyeån ñoåi döõ lieäu naøy sag döõ lieäu khaùc, ví duï chuùng ta khai baùo 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> 3.2. Kieåm tra kieåu döõ lieäu cuûa bieán Ñeå kieåm tra kieåu döõ lieäu cuûa bieán, baïn söû duïng caùc haøm nhö sau: is_int ñeå kieåm tra bieán coù kieåu integer, neáu bieán coù kieåu integer thì haøm seõ traû veà giaù trò laø true (1). Töông töï, baïn coù theå söû duïng caùc haøm kieåm tra töông öùng vôùi kieåu döõ lieäu laø is_array, is_bool, is_callable, is_double, is_float, is_int, is_integer, is_long, is_null, is_numeric, is_object, is_real, is_string. Chaúng haïn, baïn khai baùo caùc haøm naøy nhö ví duï 2-4 (check.php). <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Check DataType of 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 is_array($myarr); echo "<br>"; echo is_bool($record); ?> </BODY> Giaùo vieân: Phaïm Höõu Khang
  • 15. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM </HTML> 3.3. 3.4. Thay ñoåi kieåu döõ lieäu bieán Khi khai baùo bieán vaø khôûi taïo giaù trò cho bieán vôùi kieåu döõ lieäu, sau ñoù baïn muoán söû duïng giaù trò cuûa bieán ñoù thaønh teân bieán vaø coù giaù trò chính laø giaù trò cuûa bieán tröôùc ñoù thì söû duïng caëp daáu $$. Ví duï, bieán $var coù giaù trò laø "total", sau ñoù muoán söû duïng bieán laø total thì khai baùo nhö ví duï 2-5 (change.php). <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Change DataType of Variable</h4> <?php $var="total"; echo $var; echo "<br>"; $$var=10; echo $total; ?> </BODY> </HTML> Kieåu Array Kieãu maûng laø moät maûng soá lieäu do ngöôøi duøng ñònh nghóa, chuùng coù cuù phaùp nhö sau: $myarrs=array("first", "last", "company"); // maûng bao goàm caùc kieåu chuoãi hay coù theå khai baùo nhö sau $myarr[]=array(3); $myarr[0]="Number 0"; $myarr[1]="Number 1"; $myarr[2]="Number 2"; Thöù töï index trong maûng baét ñaàu töø vò trí 0. Chaúng haïn, baïn khai baùo maûng moät chieàu theo hai caùch treân nhö ví duï 2-6 (array.php). <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Array on demenssion</h4> <?php $myarr[]=array(3); $myarr[0]="Number 0"; $myarr[1]="Number 1"; $myarr[2]="Number 2"; echo $myarr[0]; echo $myarr[1]; Giaùo vieân: Phaïm Höõu Khang
  • 16. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM echo $myarr[2]; echo "<br>"; $myarrs=array("first", "last", "company"); echo $myarrs[2]; ?> </BODY> </HTML> Neáu nhö baïn khai baùo maûng hai chieàu, thì cuù phaùp khai baùo nhö sau: $myarrs[][]=array(2,3); Chaúng haïn khai baùo nhö ví duï 2-7 (arrays.php): <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Array two demenssions</h4> <?php $myarrs[][]=array(2,3); $myarrs[0][0]="Number 00"; $myarrs[1][0]="Number 10"; $myarrs[0][1]="Number 01"; $myarrs[1][1]="Number 11"; $myarrs[0][2]="Number 02"; $myarrs[1][2]="Number 13"; echo $myarrs[0][2]; echo "<br>"; ?> </BODY> </HTML> 3.5. Kieåu ñoái töôïng Ñeå khai baùo ñoái töôïng, baïn söû duïng khaùi nieäm class nhö trong ngoân ngöõ laäp trình C hay java, ngoaøi ra phöông thöùc trong PHP ñöôïc bieát ñeán nhö moät haøm. Ñieàu naøy coù nghóa laø töø khoaù laø function. Neáu haøm coù teân truøng vôùi teân cuûa class thì haøm ñoù ñöôïc goïi laø constructor. Chaúng haïn, chuùng ta khai baùo class vaø khôûi taïo chuùng thì töï ñoäng constructor ñöôïc goïi moãi khi ñoái töôïng khôûi taïo, sau ñoù goïi haøm trong class ñoù nhö ví duï 2-8 (object.php). <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Object</h4> <?php class clsA { function clsA() { echo "I am the constructor of A.<br />n"; } function B() Giaùo vieân: Phaïm Höõu Khang
  • 17. COMPUTER LEARNING CENTER 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"; } } // Goïi phöông thöùc clsA() nhö constructor. $b = new clsA(); echo "<br>"; // Goïi phöông thöùc B(). $b->B(); ?> </BODY> </HTML> 3.6. Taàm vöïc cuûa bieán Taàm vöïc cuûa bieán phuï thuoäc vaøo nôi khai baùo bieán, neáu bieán khai baùo beân ngoaøi haøm thì seõ coù taàm vöïc trong trang PHP, trong tröôøng hôïp bieán khai baùo trong haøm thì chæ coù hieäu löïc trong haøm ñoù. Ví duï, chuùng ta coù bieán $a khai baùo beân ngoaøi haøm nhöng khi vaøo trong haøm thì bieán $ ñöôïc khai baùo laïi, bieán naøy coùtaàm vöïec beân trong haøm. Töông töï nhö vaäy, khi bieán $i khai baùo trong haøm thì chæ coù taàm vöïc beân trong haøm cho duø chuùng ñöôïc khai baùo laïi beân ngoaøi nhö ví duï 2-9 (scope.php). <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Scope of Variable</h4> <?php $a = 100; /* global scope */ function Test() { $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> Ngoaøi ra, ñeå söû duïng bieán toaøn cuïc trong haøm, baïn söû duïng töø khoa global, khi ñoù bieán toaøn cuïc seõ coù hieäu löïc beân trong haøm. Ví duï khai baùo bieán $a beân ngoaøi haøm, sau ñoù beân trong haøm Test baïn söû duïng töø khoaù global cho bieán $a, khi ñoù bieán $a seõ ñöôïc söû duïng vaø giaù trò ñoù coù hieäu löïc sau khi ra khoûi haøm chöù khoâng goáng nhö tröôøng hôïp trong ví duï scope.php nhö ví duï 2-10 (global.php). <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> Giaùo vieân: Phaïm Höõu Khang
  • 18. COMPUTER LEARNING CENTER 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. HAÈNG TRONG PHP 4.1. 4.2. Khai baùo vaø söû duïng haèng Haèng laø giaù trò khoâng thay ñoåi keå töø sau khi khai baùo, baïn coù theå söû duïng phaùt bieåu Define ñeå khai baùo haèng nhö sau: define("MAXSIZE", 100); Ñeå söû duïng haèng, baïn khai baùo nhö ví duï 2-11 (constant.php) <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Constant</h4> <?php define("pi",3.14); function Test() { echo "<br>pi:=".pi; echo "<br>pi:=".constant("pi"); } Test(); echo "<br>pi:=".pi; echo "<br>pi:=".constant("pi"); ?> </BODY> </HTML> Kieåm tra haèng Khi söû duïng haèng, maø haèng chöa toàn taïi thì baïn söû duïng haøm defined nhö ví duï 2- 12 sau (defained.php): <HTML> Giaùo vieân: Phaïm Höõu Khang
  • 19. COMPUTER LEARNING CENTER 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. KEÁT LUAÄN Trong baøi naøy, chuùng ta tìm hieåu caùch khai baùo haèng, bieán vaø söû duïng haèng bieán. Ngoaøi ra, baïn cuõng tìm hieåu caùch chuyeån ñoåi kieåu döõ lieäu, kieåm tra kieåu döõ lieäu, taàm vöïec cuûa bieán. Giaùo vieân: Phaïm Höõu Khang
  • 20. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Baøi 3 PHEÙP TOAÙN VAØ PHAÙT BIEÅU COÙ ÑIEÀU KIEÄN TRONG PHP Chöông naøy chuùng ta seõ laøm quen vaø tìm hieåu toaùn töû, phaùt bieåu coù ñieàu kieän vaø voøng laëp cuûa PHP. Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy Toaùn töû. Pheùp gaùn trong PHP Phaùt bieåu coù ñieàu khieån. Voøng laëp. 1. KHAÙI NIEÄM VEÀ CAÙC TOAÙN TÖÛ TRONG PHP Khi baïn laäp trình treân PHP laø söû duïng cuù phaùp cuûa ngoân ngöõ C, C++. Töông töï nhö nhöõng ngoân ngöõ laäp trình khaùc, toaùn töû giuùp cho baïn thöïc hieän nhöõng pheùp toaùn nhö soá hoïc hay treân chuoãi. Baûng sau ñaây giuùp cho baïn hình dung ñöôïc nhöõng toaùn töû söû duïng trong PHP, PHP ñònh nghóa toaù töû toaùn hoïc, quan heä, soá hoïc, bit vaø noät soá pheùp toaùn gaùn. Loaïi toaùn töû Toaùn töû Dieãn giaûi Ví duï Arithmetic + - * / % Addition Subtraction Multiplication Division Modulus a + b a - b a * b a / b a % b Relational > < >= <= != == Greater than Less than Greater than or equal Less than or equal Not equal Equal a > b a < b a >= b a <= b a != b a == b Logical ! && || Not AND OR !a a && b a || b huukhang@yahoo.com 3-1
  • 21. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Assignment = ++ -- += -= *= /= %= |= &= ^= .= Increment and assign Decrement and assign Add and assign Subtract and assign Multiply and assign Divide and assign Take modulus and assign OR and assign AND and assign XOR and assign Concat and assign a = b a++ a-- a += b a -= b a *= b a /= b a %= b a |= b a &= b a ^= b a .= b Allocation new Create a new object of a class new A() Selection ? : If...Then selection a ? b : c 2. GIÔÙI THIEÄU TOAÙN TÖÛ Khi noùi ñeán toaùn töû, chuùng ta luoân lieân töôûng ñeán thöù töï xöû lyù, cuõng nhö trong toaùn hoïc, toaùn töû trong PHP cuõng co ñoä öu tieân add-subtract-multi-divide. 2.1. Toaùn töû AND Khi thöïc hieän moät vieäc taêng leân giaù trò thì baïn söû duïng cuù phaùp nhö sau: $ i=0;$j=0; j=i++;// i taêng sau khi gaùn i vaøo j, chính vì vaäy sau khi gaùn i vaøo j, j vaãn khoâng thay ñoåi j=++i;// i taêng tröôùc khi gaùn i vaøo j, chính vì vaäy sau khi gaùn i vaøo j, j thay ñoåi. Ví duï 3.1: Pheùp toaùn AND. <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>AND Operator</h4> <?php huukhang@yahoo.com 3-2
  • 22. COMPUTER LEARNING CENTER 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. Toaùn töû Not: ~ And ! Toaùn töû ~ ñaûo nghòch taát caû caùc bit cuûa tham soá, coøn toaùn töû ! ñaûo nghòch giaù trò cuûa giaù trò tröôùc ñoù. Chaúng haïn trong tröôøng hôïp naøy chuùng ta söû duïng cho bieåu thöùc hay bieán coù giaù trò boolean. Ví duï 3.2: Pheùp toaùn ~ 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. Toaùn töû nhaân vaø chia: * and / Baïn coù theå tham khaûo ví duï sau Ví duï 3.3: Pheùp toaùn * vaø /, + vaø - <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> huukhang@yahoo.com 3-3
  • 23. COMPUTER LEARNING CENTER 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. Toaùn töû modulus: % Khi chia moät soá cho moät soá, baïn caàn keát quaû laø soá dö cuûa pheùp chia ñoù thì duøng toaùn töû modulus Ví duï 3.4: Pheùp toaùn % <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. Toaùn töû quan heä: >=,>,<,<=,==,!= Khi caàn so saùnh keát quaû giöõa hai toaùn haïn vôùi nhau, thoâng thöôøng baïn nghó ñeán pheùp toaùn so saùnh nhö laø baèng, lôùn hôn, nhoû hôn, ví duï sau dieãn giaûi cho baïn caùc toaùn töû treân: Ví duï 3.5: Pheùp toaùn >,>=,<,<=,==,!= <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Comparation Operators</h4> <?php huukhang@yahoo.com 3-4
  • 24. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM $i=10; $j=9; echo $i<$j; echo "<br>"; echo $i!=$j; ?> </BODY> </HTML> 2.6. Toaùn töû && vaø || && laø toaù töû and trong soù hoïc, || laø toaùn töû or trong soá hoïc. Hai toaùn töû naøy raát thöôøng duøng trong khi laäp trình treân PHP, ví duï döôùi ñaây dieãn giaûi cho baïn ñaày ñuû hai toaùn töû naøy. Chuù yù raèng khi söû duïng toaùn töû ñeàu coù keøm phaùt bieåu coù ñieàu kieän. Ví duï 3.6: Pheùp toaùn && 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. Toaùn töû ?: Toaùn töû naøy thay theá cho phaùt bieåu coù ñieàu kieän if...else, khi baïn caàn laáy keát quaû theo ñieàu kieän naøo ñoù, neáu coù theå khoâng caàn phaùt bieåu if-else, thì haõy thay theá baèng toaùn töû ?:, cuù phaùp cuûa chuùng nhö sau: str1=str2.equals(”khang”)?”Welcome to PHP”:”Good bye PHP”; Ví duï 3.7: Pheùp toaùn ?: <HTML> huukhang@yahoo.com 3-5
  • 25. COMPUTER LEARNING CENTER 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. PHEÙP GAÙN Khi gaùn moät giaù trò hay bieán vaøo moät bieán trong PHP, baïn phaûi duøng ñeán pheùp gaùn, nhöng trong PHP cuõng gioáng nhö trong C thì coù nhöõng pheùp gaùn ñöôïc ñôn giaûn hoaù hay noùi ñuùng hôn laø chuaån hoaù ñeå ruùt goïn laïi trong khi vieát. 3.1. 3.2. 3.3. 3.4. 4. Pheùp gaùn thoâng thöôøng nhaát nhö sau: $j=i; $str1 =” Hello!”; $b=true; Pheùp gaùn theâm moät giaù trò laø 1 $k=0; $k++; Pheùp gaùn chuoãi $strX="Hello"; $strX.=” world”; $strX.=”ABCc”.$x; Pheùp gaùn theâm moät vôùi chính noù giaù trò $k=0;$j=1; $k+=$j; töông töï nhö vaäy chuùng ta coù $k*=2, nghóa laø $k=$k*2 PHAÙT BIEÅU COÙ ÑIEÀU KIEÄN Caùc phat bieåu coù ñieàu kieän nhö : IF (ñieàu kieän) { caâu leänh; } IF (ñieàu kieän) { caâu leänh; }ELSE { caâu leänh; } huukhang@yahoo.com 3-6
  • 26. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM IF (ñieàu kieän) { caâu leänh; }ELSEIF { caâu leänh; } switch (ñieàu kieän) { case Value1 caâu leänh1; break; } While (ñieàu kieän) Do - While (ñieàu kieän) Break Continue 4.1. Phaùt bieåu IF (ñieàu kieän) { caâu leänh; } Söû duïng phaùt bieåu if ñeå choïn loïc keát quaû khi ñieàu kieän ñuùng, ví duï nhö sau: Ví duï 3.8: Phaùt bieåu 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. Phaùt bieåu IF (ñieàu kieän) { caâu leänh; }ELSE { caâu leänh; } Söû duïng phaùt bieåu if ñeå choïn loïc keát quaû khi ñieàu kieän ñuùng, vaø xuaát ra keát quaû khi ñieàu kieän sai, ví duï nhö sau: Ví duï 3.9: Phaùt bieåu IF - ELSE <HTML> <HEAD> huukhang@yahoo.com 3-7
  • 27. COMPUTER LEARNING CENTER 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. 4.4. Phaùt bieåu ELSEIF Phaùt bieåu elseif laø phaàn cuûa phaùt bieåu if else nhieàu nhaùnh, khi coù nhieàu ñieàu kieän choïn löïa thì baïn söû duïng elseif, cuù phaùp cuûa chuùng 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> Phaùt bieåu Switch (ñieàu kieän) Phaùt bieåu switch laø phaàn cuûa phaùt bieåu elseif nhieàu nhaùnh, khi coù nhieàu ñieàu kieän choïn löïa thì baïn söû duïng switch, cuù phaùp cuûa chuùng nhö sau: huukhang@yahoo.com 3-8
  • 28. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Switch(ñieàu kieän) { case Value1 caâu leänh1; break; case Value2 caâu leänh2; break; … default: caâu leänh default; } Break: duøng ñeå thoaùt ra khoûi switch khi thoaû moät case naøo ñoù trong switch, default: khi khoâng coù baát kyø giaù trò naøo thoaûn trong caùc case thì giaù trò cuoái cuøng laø defaule statement Ví duï 3.10: Phaùt bieåu 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
  • 29. COMPUTER LEARNING CENTER 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. Phaùt bieåu While(ñieàu kieän) Phaùt bieåu while thöïc thi nhöõng caâu leänh trong while khi ñieàu kieän coù giaù trò true. Ví duï 3.11: Phaùt bieåu While <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>While Statement</h4> <?php $j=10; while($j>0) { echo $j."<br>"; $j--; } ?> </BODY> </HTML> 4.6. Phaùt bieåu For Phaùt bieåu for duøng cho voøng laëp coù giôùi haïn cho tröôùc, cuù phaùp coù daïng nhö sau: Ví duï 3.12: Phaùt bieåu For <HTML> <HEAD> huukhang@yahoo.com 3-10
  • 30. COMPUTER LEARNING CENTER 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. Phaùt bieåu do while Phaùt bieåu do while cho pheùp duyeät vaø kieåm tra ñieàu kieän sau phaùt bieåu thöù nhaát, ñieàu naøy coù nghóa laø ít nhaát moät phaùt bieåu ñöôïc thöïc hieän. Ví duï 3.13: Phaùt bieåu 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> Phaùt bieåu exit cho pheùp thoùat ra khoûi phaùt bieåu ñieàu kieän khi thoaû ñieàu kieän naøo ñoù. Ví duï 3.14: Phaùt bieåu exit <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Exit Statement</h4> <?php $j=10; do huukhang@yahoo.com 3-11
  • 31. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM { if($j==3) exit; echo $j."<br>"; $j--; }while($j>0) ?> </BODY> </HTML> TOÙM TAÉT5. Trong baøi hoïc naøy chuùng toâi giôùi thieäu ñeán cho caùc baïn caùc pheùp gaùn, caùc toaùn töû, ñoàng thôøi giuùp cho caùc baïn hieåu theâm vaøo caùc phaùt bieåu coù ñieàu kieän nhö while, for, switch, …. huukhang@yahoo.com 3-12
  • 32. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Moân hoïc: PHP Baøi 4 Baøi hoïc naøy chuùng ta seõ laøm quen vôùi bieán form vaø hai phöông thöùc $HTTP_POST_VARS vaø $HTTP_GET_VARS cuûa PHP: Bieán form. Phöông thöùc $HTTP_GET_VARS Phöông thöùc $HTTP_POST_VARS BIEÁN FORM Bieán form trong PHP ñöôïc bieát ñeán nhö moät loaïi bieán, thay vì khai baùo thì bieán ñoù chính laø teân cuûa theû nhaäp lieäu trong trang submit hay tham soá treân querystring. 1. 1.1. Bieán form töø form ñöôïc submit vôùi phöông thöùc POST Trong trang baïn submit ñeán, neáu khai baùo teân cuûa theû naèm trong theû form coù teân laø xyz thì bieán form ñöôïc ñònh nghóa laø $xyz. Chaúng haïn, baïn khai baùo baùo theû form trong trang submit.php nhö ví duï 4-1. Ví duï 4-1: Khai baùo theû form ... <form action=ex1-1.php method=post> <tr> <td>Name</td><td>:<input type=text name=fullname></td> </tr> <tr><td>Gender</td> <td>:<input type=radio value=M name=gender> Male <input type=radio value=F name=gender> Female</td> </tr> <tr><td>&nbsp</td> <td><input type=submit value=Submit></td> </tr> </form> ... Khi ngöôøi söû duïng nhaäp giaù trò vaøo phaàn Name vaø choïn giôùi tính Male hay Female nhö hình 4-1, neáu nhaán nuùt submit thì trang ex1-1.php seõ trieäu goïi, trong trang naøy baïn coù theå laáy giaù trò nhaäp töø trang ex1.php baèng caùch söû duïng bieán form nhö ví duï 4-1-1. Ví duï 4-2: Duøng bieán form <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Form variable</h4> <table> <tr><td>Name</td> <td> :<?=$fullname?> Giaùo vieân: Phaïm Höõu Khang
  • 33. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM </td></tr> <tr><td>Gender</td> <td> :<?=$gender?> </td></tr> </table> </BODY> </HTML> Trong ñoù, $fullname vaø $gender laø teân cuûa hai theû input trong trang ex1.php, trong tröôøng hôïp naøy chuùng ta söû duïng phöông thöùc POST cho form. Hình 4-1: Nhaäp lieäu Keát quaû traû veà nhö hình 4-1-1. Hình 4-1-1: Keát quaû laáy töø trang submit baèng bieán form Giaùo vieân: Phaïm Höõu Khang
  • 34. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 1.2. Bieán form töø form ñöôïc submit vôùi phöông thöùc GET Neáu baïn söû duïng phöông thöùc GET trong theû form, baïn coù theå laáy giaù trò cuûa caùc tham soá treân chuoãi QueryString baèng bieán form. Ví duï khai baùo theû form coù hai tuyø choïn nhö ví duï 4-2 vôùi phöông thöùc GET trong theû form. Ví duï 4-2: Khai baùo theû form ... <form action=ex2-1.php method=get> <tr><td>Province</td> <td> :<select name=province> <option value=HAN>Ha Noi</option> <option value=HCM>Ho Chi Minh</option> <option value=HUE>Hue</option> </select> </td></tr> <tr><td>Industry</td> <td> :<select name=industry multiple> <option value=AUT>Automobile</option> <option value=FOO>Foods</option> <option value=ENG>Enginering</option> <option value=GAR>Garment</option> </select> </td></tr> <tr><td>&nbsp</td> <td><input type=submit value=Submit></td></tr> </form> ... Khi trieäu goïi trang ex2.php treân trình duyeät, ngöôøi söû duïng choïn giaù trò trong hai tuyø choïn Province vaø Industry nhö hình 4-2. Hình 4-2: Phöông thöùc GET Giaùo vieân: Phaïm Höõu Khang
  • 35. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Neáu nhaán Submit thì hai giaù trò choïn seõ ñöôïc truyeàn leân treân QueryString vôùi hai tham soá laø teân cuûa theû select. Ví duï trong tröôøng hôïp naøy keát quaû traû veà nhö hình 4- 2-1. Hình 4-2-1: Bieán form vôùi phöông thöùc GET Trong ñoù, hai tham soá vaø giaù trò töông öùng laø ex2- 1.php?province=HAN&industry=FOO, baèng caùch söû duïng bieán form baïn coù theå laáy ñöôïc giaù trò naøy nhö ví duï 4-2-1. Ví duï 4-2-1: Khai baùo theû form <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Form variable</h4> <table> <tr><td>Province</td> <td> :<?=$province?> </td></tr> <tr><td>Industry</td> <td> :<?=$industry?> </td></tr> </table> </BODY> </HTML> Ñoái vôùi tröôøng hôïp baïn khoâng söû duïng theû form nhö hai tröôøng hôïp treân, chuùng ta cuõng coù theå laáy giaù trò töø chuoãi QueryString baèng bieán form. Chaúng haïn, baïn khai baùo trang chop pheùp ngöôøi söû duïng choïn kyù töï ñeå lieät keâ danh saùch khaùch haøng theo kyù töï ñoù nhö hình 4-3. Giaùo vieân: Phaïm Höõu Khang
  • 36. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 4-3: Choïn kyù töï Baèng caùch khai baùo caùc theû <a> baïn ñònh nghóa 24 kyù töï nhö hình treân vôùi tham soá al coù giaù trò töông öùng: <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> Khi ngöôøi söû duïng choïn moät kyù töï thì söû duïng bieán form laø teân cuûa tham soá (al), baïn coù theå laáy ñöôïc giaù trò cuûa kyù töï ñang choïn: <tr><td>Select:<?=$al?></td></tr> Tuy nhieân, laán ñaàu tieân trieäu goïi trang naøy maø khoâng coù tham soá treân QueryString, khai baùo bieán form seõ phun ra loãi nhö hình 4-3-1. Ñeå traùnh tröôøng hôïp naøy, baïn söû duïng haøm isset ñeå kieåm tra bieán toàn taïi hay khoâng, neáu toàn taïi thì baïn söû duïng bieán form naøy. Ví duï ñoái vôùi tröôøng hôïp naøy chuùng ta khai baùo nhö ví duï 4-3. Ví duï 4-3: Söû duïng bieán form <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Form variable</h4> <table> <tr><td>List by Alphabet</td></tr> <tr><td> Giaùo vieân: Phaïm Höõu Khang
  • 37. COMPUTER LEARNING CENTER 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> Hình 4-3-1: Loãi phaùt sinh Chuù yù raèng, khi söû duïng bieán form baïn khoâng neân khai baùo bieán cuøng teân vôùi caùc tham soá hay teân cuûa theû nhaäp lieäu trong trang trieäu goïi tröôùc ñoù. Neáu khoâng thì giaù trò traû veà laø giaù trò cuûa bieán thöôøng thay vì bieán form. 2. PHÖÔNG THÖÙC $HTTP_GET_VARS Ngoaøi caùch söû duïng bieán form trong tröôøng hôïp laáy giaù trò töø tham soá cuûa QueryString, baïn coù theå söû duïng haøm $HTTP_GET_VARS. Ví duï, chuùng ta khai baùo trang PHP nhö ví duï 4-4. Ví duï 4-4: Söû duïng $HTTP_GET_VARS <HTML> Giaùo vieân: Phaïm Höõu Khang
  • 38. COMPUTER LEARNING CENTER 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> Löu yù raèng, neáu baïn khoâng söû duïng haøm isset ñeå kieåm tra province toàn taïi hay khoâng thì trang php seõ phun loãi trong tröôøng hôïp laàn ñaàu tieân goïi ñeán trang ex4.php maø khoâng submit. Tuy nhieân, neáu baïn submit trang naøy thì keát quaû traû veà nhö hình 4-4. Hình 4-4: Duøng $HTTP_GET_VARS Töông töï nhö vaäy trong tröôøng hôïp baïn khoâng söû duïng theû form maø giaù trò laáy töû chuoãi QueryString baèng caùch söû duïng $HTTP_GET_VARS nhö ví duï 4-5. Ví duï 4-5: Söû duïng $HTTP_GET_VARS <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> Giaùo vieân: Phaïm Höõu Khang
  • 39. COMPUTER LEARNING CENTER 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> Keát quaû traû veà nhö hình 4-5. Hình 4-5: Söû duïng $HTTP_GET_VARS 3. PHÖÔNG THÖÙC $HTTP_POST_VARS Töông töï nhö $HTTP_GET_VARS nhöng $HTTP_POST_VARS cho pheùp baïn laáy giaù trò laáy töø caùc theû nhaäp lieäu cuûa theû form trong traang submit tröôùc ñoù. Ví duï, baïn khai baùo trang nhaäp lieäu nhö ví duï 4-6. Ví duï 4-5: Khai baùo form vôùi phöông thöùc POST <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> Giaùo vieân: Phaïm Höõu Khang
  • 40. COMPUTER LEARNING CENTER 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>&nbsp</td> <td><input type=submit value=Login></td></tr> </table> </form> </BODY> </HTML> Khi ngöôøi söû duïng nhaäp username vaø password nhö hình 4-6 vaø nhaán nuùt Login. Hình 4-6: Ñaêng nhaäp Baèng caùch söû duïng $HTTP_POST_VARS ñeå laáy giaù trò username vaø password nhö ví duï 4-7. Ví duï 4-5: Söû duïng $HTTP_POST_VARS <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Form variable</h4> <?php if(isset($HTTP_POST_VARS["username"])) { ?> Giaùo vieân: Phaïm Höõu Khang
  • 41. COMPUTER LEARNING CENTER 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> Keát quaû trình baøy nhö hình 4-7. Hình 4-7: Duøng $HTTP_POST_VARS 4. KEÁT LUAÄN Trong baøi naøy, chuùng ta tìm hieåu caùch söû duïng bieán form vaø hai phöông thöùc $HTTP_POST_VARS, $HTTP_GET_VARS. Ngoaøi ra, baïn cuõng tìm hieåu caùch kieåm tra bieán toàn taïi hay khoâng baèng haøm isset(). Chuù yù raèng, khi söû duïng bieán form baïn traùnh tröôøng hôïp khai baùo bieán cuïc boä hay toaøn cuïc trong tang PHP cuøng teân vôùi theû nhaäp lieäu cuûa form tröôùc ñoù submit ñeán hay tham soá treân querystring. Giaùo vieân: Phaïm Höõu Khang
  • 42. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Moân hoïc: PHP Baøi 5 Baøi hoïc naøy chuùng ta seõ laøm quen vôùi ñoái töôïng Session vaø moät soá ñoái töôïng khaùc: Ñoái töôïng Session. Ñoái töôïng khaùc ÑOÁI TÖÔÏNG SESSION Trong PHP4.0 ñoái töôïng Session ñöôïc xem nhö moät ñoái töôïng cho pheùp baïn truyeàn giaù trò töø trang PHP naøy sang PHP khaùc. Ñeå söû duïng Session, baïn khai baùo thö muïc ñöôïc löu tröõ döõ lieäu do ñoái töôïng nay ghi ra. Session ñöôïc sinh ra vaø ñöôïc bieán maát khi ngöôøi söû duïng huyû chuùng, thôøi gian soáng cuûa chuùng ñaõ heát hoaëc ngöôøi söû duïng ñoùng trình duyeät. Chaúng haïn, trong tröôøng hôïp naøy chuùng ta söû duïng thö muïc C:PHPsessiondata ñöôïc khai baùo trong taäp tin php.ini. 1. session.save_path = C:PHPsessiondata Ngoaøi ra, khi muoán söû duïng Sessoin thì baïn phaûi khôûi taïo chuùng. Ñeå khôûi taïo Session baïn coù theå khôûi taïo trong trang PHP moãi khi truy caäp hay gaùn giaù trò cho Session. session_start(); Tuy nhieân, baïn coù theå caáu hình trong trang php.ini (1 laø start). session.auto_start = 0 1.1. Nhaän daïng Session Moãi phieân laøm vieäc ñöôïc taïo ra töø Web Server thì seõ coù moät nhaän daïng duy nhaát coù giaù trò laø chuoãi do trình chuû Web taïo ra. Ñieàu naøy coù nghóa laø moãi khi ngöôøi söû duïng trieäu goïi trang Web cuûa Web Site laàn ñaàu tieân thì phieân laøm vieäc seõ ñöôïc taïo ra, khi ñoù moät nhaän daïng ñöôïc caáp cho phieân laøm vieäc ñoù. Ñeå laán giaù trò nhaän daïng cuûa Session do trình chuû Web caáp phaùt baïn söû duïng cuù phaùp: $x= session_id(); Chaúng haïn, baïn khai baùo baùo ñeå laáy giaù trò session_id trong trang sessionid.php nhö ví duï 5-1. Ví duï 5-1: Nhaän daïng session <?php session_start(); ?> <HTML> Giaùo vieân: Phaïm Höõu Khang
  • 43. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Session_ID</h4> <?php $sessionid=session_id(); echo $sessionid; ?> </BODY> </HTML> Moãi ngöôøi söû duïng truy caäp ñeán Web Site seõ coù moät nhaän daïng khaùc nhö nhö hình 5- 1. Hình 5-1: Nhaän daïng duy nhaát 1.2. Khai baùo Session Khi muoán khai baùo bieán session, baïn phaûi söû duïng haøm session_register coù cuù phaùp nhö sau: session_register("sessioname"); Khi muoán khôûi taïo session, baïn coù theå gaùn giaù trò cho session naøy nhö gaùn giaù trò cho bieán trong PHP, sau ñoù söû duïng haøm treân ñeå ñaéng kyù. $sessioname=value; session_register("sessioname"); Trong tröôøng hôïp coù nhieàu session, baïn coù theå söû duïng haøm session_register ñeå ñaêng kyù cuøng moät luùc nhieàu session nhö sau: $sessioname1=value1; $sessioname2=value2; Giaùo vieân: Phaïm Höõu Khang
  • 44. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM $sessioname3=value3; session_register("sessioname1","sessioname2","sessioname3"); Chaúng haïn, trong tröôøng hôïp naøy chuùng ta khai baùo trang sessionregister.php vaø ñaêng kyù 3 sessoin coù teân userid, email vaø fullname nhö ví duï 5-2 sau: Ví duï 5-2: Ñaêng 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> Keát quaû traû veà nhö hình 5-2. Hình 5-2: Ñaêng kyù Session 1.3. Laáy giaù trò töø session Sau khi khai baùo khôûi aïo moät soá session vôùi giaù trò töông öùng cuûa session ñoù, baïn coù theå truy caäp caùc bieán session naøy ñeå laáy giaù trò torng trang PHP khaùc. Chaúng haïn, chuùng ta khai baùo trang getsession.php ñeå laáy caùc session cuûa PHP vöøa khai baùo trong ví duï treân nhö ví duï 5-3. Ví duï 5-3: Laáy giaù trò töø session Giaùo vieân: Phaïm Höõu Khang
  • 45. COMPUTER LEARNING CENTER 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 trieäu goïi trang getsession.php treân trình duyeät baïn trình baøy giaù trò cuûa session userid, email vaø fullname nhö hình 5-3. Hình 5-3: Laáy giaù trò cuûa session Tuy nhieân, trong tröôøng hôïp baïn truy caäp moät bieán session chöa khôûi taïo tröôùc ñoù thì l64i seõ phaùt sinh. Ví duï trong tröôøng hôïp naøy chuùng ta truy caäp bieán session coù teân $address nhö ví duï 5-4. Ví duï 5-4: Truy caäp session chöa toàn taïi <?php session_start(); ?> <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> Giaùo vieân: Phaïm Höõu Khang
  • 46. COMPUTER LEARNING CENTER 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 trieäu goïi trang unregistersession.php treân trình duyeät thì loãi phaùt sinh nhö hình 5-4. Hình 5-4: Loãi phaùt sinh Ñeå kieåm tra session ñoù coù toàn taïi hay chöa baïn söû duïng haøm session_is_register trong trang checksession.php. Ñoái vôùi tröôøng hôïp naøy chuùng ta caàn kieåm tra 4 session tröôùc khi truy caäp ñeán chuùng nhö ví duï 5-5. Ví duï 5-5: Kieåm tra session <?php session_start(); ?> <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Get Session</h4> Giaùo vieân: Phaïm Höõu Khang
  • 47. COMPUTER LEARNING CENTER 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 trieäu goïi trang checksession.php thì keát quaû seõ trình baøy nhö hình 5-5. Hình 5-5: Khoâng coù loãi phaùt sinh Chuù yù raèng, khi söû duïng ñeán session, baïn phai khôûi ñoäng chuùng baèng session_start() neáu khoâng thì phaûi khai baùo trong php.ini. 1.4. Huyû session Khi khoâng coù nhu caàu söû duïng session nöõa thì baïn söû duïng haøm session_unregister ñeå loaïi session ñoù. Chaúng haïn, trong tröôøng hôïp naøy chuùng ta muoán loaïi boû session coù teân laø fullname baïn khai baùo trong trang sessionunregister.php nhö ví duï 5-6. Ví duï 5-6: Loaïi boû moät Session <?php session_start(); ?> <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> Giaùo vieân: Phaïm Höõu Khang
  • 48. COMPUTER LEARNING CENTER 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 trieäu goïi trang sessionunregister.php treân trình duyeät thìkeát quaû traû veà nhö hình 5- 6. Hình 5-6: Loaïi boû session Trong tröôøng hôïp loaïi boû taát caùc session ñang toàn taïi thì söû duïng haøm session_unset(). Ví duï duøng haøm naøy ñeå laïoi boû session vaø duøng haøm sessin_destroy ñeå huyû taát caû session ñoù khai baùo trong trang unset.php nhö ví duï 5-7. Ví duï 5-7: Xoaù taát caû session <?php session_start(); ?> <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>UnSet Session</h4> <?php session_unset(); session_destroy(); if(session_is_registered("userid")) Giaùo vieân: Phaïm Höõu Khang
  • 49. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 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> Keát quaû traû veà nhö hình 5-7. Hình 5-7: Huyû session 2. COOKIE Cookie ñöôïc xem nhö session, tuy nhieân chuùng löu tröõ thoâng tin treân trình khaùch. Ñeå söû duïng Cookie, baïn söû duïng haøm setcookie ñeå gaùn giaù trò nhö ví duï 5-8. Ví duï 5-8: Gaùn 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 ngöôøi söû duïng trieäu goïi trang setcookie.php keát quaû traû veà nhö hình 5-8. Giaùo vieân: Phaïm Höõu Khang
  • 50. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 5-8: Ñaéng kyù cookie Ngaøi ra, baïn coù theå gaùn giaù trò cookie baèng session. Chaúng haïn, chuùng ta söû duïng haøm session_set_cookie_params ñeå gaùn cookie nhö ví duï 5-9. Ví duï 5-9: Gaùn cookie baèng session <?php session_start(); $myvalue="Online Recruitment"; session_set_cookie_params($myvalue); ?> <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Session-Cookie</h4> </BODY> </HTML> Baèng caùch söû duïng $HTTP_COOKIE_VARS ñeå laáy giaù trò cuûa cookie tröôùc ñoù trong trang httpcookievar.php nhö ví duï 5-10. Ví duï 5-10: Söû duïng $HTTP_COOKIE_VARS <?php echo $HTTP_COOKIE_VARS["huukhang"]; ?> <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Get Cookie</h4> </BODY> </HTML> Keát quaû trình baøy nhö hình 5-10. Giaùo vieân: Phaïm Höõu Khang
  • 51. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 5-10: Duøng $HTTP_COOKIE_VARS Baèng caùch söû duïng haøm session_get_cookie_params ñeå laáy giaù trò cuûa cookie tröôùc ñoù trong trang sessiongetcookie.php nhö ví duï 5-11. Ví duï 5-11: Söû duïng session_get_cookie_params <?php session_start(); $myvalue= session_get_cookie_params(); echo $myvalue[1]; ?> <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Get Cookie</h4> </BODY> </HTML> 3. KEÁT LUAÄN Trong baøi naøy, chuùng ta tìm hieåu caùch söû duïng bieán session vaø cookie. Giaùo vieân: Phaïm Höõu Khang
  • 52. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Moân hoïc: PHP Baøi 6 Baøi hoïc naøy chuùng ta seõ laøm quen caùch khai baùo haøm, cheøn taäp tin vaø taäp tin duøng chung: Caùch khai baùo haøm. Xaây döïng taäp tin ñònh daïng noäi dung Taäp tin duøng chung KHAI BAÙO HAØM TRONG PHP Haøm do ngöôøi söû duïng ñònh nghóa cho pheùp baïn xöû lyù nhöõng taùc vuï thöôøng laëp ñi laëp laïi trong öùng duïng. Ñeå khai bao haøm, baïn söû duïng töø khoaù function vôùi cuù phaùp töông töï nhö sau: 1. function functioname($parameter) { return value; } Trong tröôøng hôïp haøm khoâng coù giaù trò traû veà thì haøm ñöôïc xem nhö thuû tuïc. Ngoaøi ra, baïn coù theå khai baùo tham soá tuyø choïn baèng caùch gaùn giaù trò maëc ñònh cho tham soá. Ví duï chuùng ta khai baùo: function functioname($parameter1, $parameter2=10 ) { return value; } Ñoái vôùi tröôøng hôïp naøy thì tham soá $parameter1 laø tham soá baét buoäc vaø tham soá $parameter2 laø tham soá tuyø choïn, khi goïi haøm neáu khoâng cung caáp tham soá cho $parameter2 thì tham soá naøy coù giaù trò laø 10. Ví duï, baïn khai baùo trang function.php coù haøm getResult nhaän hai soá vaø pheùp toaùn sau ñoù tuyø thuoäc vaøo pheùp toaùn haøm traû veà keát quaû. Neáu ngöôøi söû duïng khoâng cung vaáp pheùp toaùn thì maëc ñònh laø pheùp toaùn +. <HTML> <HEAD> <TITLE>::Welcome to PHP</TITLE> </HEAD> <BODY> <h4>Function</h4> <?php function getResult($number1, $number2,$operator="+") { $result=0; switch($operator) { case "+": $result=$number1+$number2; break; case "-": Giaùo vieân: Phaïm Höõu Khang
  • 53. COMPUTER LEARNING CENTER 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> Neáu muoán ñònh nghóa function khoâng coù giaù trò traû veà, baïn coù theå khai baùo 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 tröôøng hôïp truyeàn tham soá nhö tham bieán, baïn söû duïng kyù hieäu & tröôùc tham soá, chaúng haïn chuùng ta khai baùo haøm coù tham bieán coù teân 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>"; Giaùo vieân: Phaïm Höõu Khang
  • 54. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM echo "result of Average is : ".$bq; echo "<br>"; function getAmounts($quantity, $price,$average) { $result=0; $result=$quantity*$price; $average=$result*6/12; return $result; } $bq=0; echo "result is : ".getAmounts(10,20,$bq); echo "<br>"; echo "result of Average is : ".$bq; ?> </BODY> </HTML> Trong tröôøng hôïp treân thì haøm getAmount coù tham soá $average laø tham bieán coøn haøm getAmounts coù tham soá $average laø tham trò, vaø keát quaû traû veà cuûa bieán $bq khi goïi haøm getAmount laø 100 trong khi ñoù giaù trò cuûa bieán naøy trong haøm getAmounts laø 0. 2. XAÂY DÖÏNG TAÄP TIN ÑÒNH DAÏNG NOÄI DUNG Khi trình baøy noäi dung treân trang HTML hay trang PHP, ñeå thoáng nhaát ñònh daïng chuoãi trong theû body hay theû div chaúng haïn baïn caàn khai baùo theû style trong theû <head>. <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 } .text{ FONT: 11px Arial, Helvetica, sans-serif } </style> Trong ñoù, A töông öùng vôùi lieân keát (chuoãi trong theû <a>) coù ñònh daïng öùng vôùi tröôøng hôïp lieân keát, di chuyeån con chuoät, choïn lieân keát. A { COLOR: #003063; TEXT-DECORATION: none } A:hover { Giaùo vieân: Phaïm Höõu Khang
  • 55. COMPUTER LEARNING CENTER 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 } Chaúng haïn, chuùng ta khai baùo trang PHP vôùi noäi dung ñöôïc aùp duïng vôùi kieåu ñònh daïng khai baùo trong theû style nhö vuù duï 6-1. Ví duï 6-1: Khai baùo 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> *** Quaûn Trò SQL Server 2000 *** </TD> </TR> <TR> <TD class=text> <div align=justify> Tìm hieåu caùch caøi ñaët, caáu hình, quaûn trò, backup & restore, import & export, thieát Giaùo vieân: Phaïm Höõu Khang
  • 56. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM keá, laäp trình, töï ñoäng hoaù taùc vuï quaûn trò, baûn sao döõ lieäu, baûo maät vaø choáng thaâm nhaäp döõ lieäu baèng. <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> Khi trieäu goïi trang style.PHP treân trình duyeät, noäi dung cuûa trang web ñöôïc ñònh daïng theo theû style nhö hình 6-1. Hình 6-1: AÙp duïng theû style Töông töï nhö vaäy khi baïn muoán thoáng nhaát noäi dung trong nhöõng theû khaùc cuûa moät trang web thì khai baùo moät ñònh daïng trong theû style. Tuy nhieân, khi ñaët teân truøng vôùi theû HTML, moïi theû ñoù trong trang seõ cuøng chung moät ñònh daïng. Chaúng haïn, baïn khai baùo ñònh daïng cho theû td nhö sau: TD { FONT: 10px Arial, Helvetica, sans-serif } Moïi noäi dung trình baøy trong theû td seõ coù ñònh daïng nhö treân. Neáu baïn muoán coù ñònh daïng khaùc thì khai baùo thuoäc tính class cho theû td ñoù, ví duï söû duïng ñònh daïng khaùc cho theû td: <td class=text>ABC</td> Giaùo vieân: Phaïm Höõu Khang
  • 57. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Thay vì chuoãi ABC seõ coù ñònh daïng laø FONT: 10px Arial, Helvetica, sans-serif thì chuùng seõ coù ñònh daïng cuûa FONT: 11px Arial, Helvetica, sans-serif. Chuù yù raèng, trong moãi trang web baïn phaûi khai baùo theû style vaø ñònh nghóa thoáng nhaát cho caùc theû. Khi coù söï thay ñoåi baïn phaûi thay ñoåi trong moïi trang web. Ñeå söû duïng chung cho moïi trang web trong öùng duïng, baïn caàn xaây döïng moät taäp tin style, taäp tin ñöôïc bieát ñeán vôùi teân goïi custom style sheet (css). Baát kyø trang web naøo trong öùng duïng, muoán aùp duïng kieåu ñònh daïng trong taäp tin css thì khai baùo lieân keát taäp tin css baèng theû link. Ví duï, chuùng ta khai baùo taäp tin style.css bao goàm caùc ñònh daïng nhö ví duï 6-2. Ví duï 6-2: Khai baùo taäp 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, baïn khai baùo lieân keát taäp tin naøy baèng theû link, neáu muoán aùp duïng ñònh daïng naøy trong moãi theû HTML baïn söû duïng thuoäc tính class nhö khai baùo ñònh daïng cuûa theû style ngay trong trang ñoù nhö ví duï 6-3. Ví duï 6-3: Khai baùo söû duïng taäp 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> Giaùo vieân: Phaïm Höõu Khang
  • 58. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM <TR> <TD vAlign=top class=title> *** Quaûn Trò SQL Server 2000 *** </TD> </TR> <TR> <TD class=text> <div align=justify> Tìm hieåu caùch caøi ñaët, caáu hình, quaûn trò, backup & restore, import & export, thieát keá, laäp trình, töï ñoäng hoaù taùc vuï quaûn trò, baûn sao döõ lieäu, baûo maät vaø choáng thaâm nhaäp döõ lieäu baèng. <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> Trieäu goïi trang includestyle.php treân trình duyeät nhö hình 6-3, maøu vaø kích thöôùc font cuøng vôùi kieåu chöõa cuûa noäi dung khoâng thay ñoåi so vôùi style.php, bôûi vì phaàn theû style ñöôïc taùch ra thaønh taäp tin style.css, sau ñoù duøng theû link ñeå lieân keát taäp tin css naøy vaøo trang PHP trôû laïi. Hình 6-3: Lieân keát taäp tin css Giaùo vieân: Phaïm Höõu Khang
  • 59. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Chuù yù raèng, neáu khai baùo thuoäc tính class trong theû <table> thì nhöõng noäi dung trong theû <table> seõ coù ñònh daïng theo ñònh daïng khai baùo trong thuoäc tính class. Töông töï, neáu khai baùo thuoäc tính class trong theû <tr> thì noäi dung trong theû <tr> seõ coù ñònh daïng gioáng nhö ñònh daïng khai baùo trong thoâng tin class. 3. THOÁNG NHAÁT KÍCH THÖÔÙC CUÛA MOÏI TRANG PHP Khi xaây döïng öùng duïng web chuyeân nghieäp, ñieàu ñaàu tieân baïn neân quan taâm laø söï thoáng nhaát veà kích thöôùc cuûa caùc phaàn treân trang web. Ñieàu naøy coù nghóa laø khi ngöôøi söû duïng thay ñoåi trang web khi duyeät, phaàn top, left, right, bottom coù kích thöôùc nhö nhau. Ñeå laøm ñieàu naøy, baïn chia trang web ra thaønh 5 phaàn: top, left, right, body vaø bottom. Phaàn top thöôøng trình baøy caùc thuoäc tính nhö quaûn caùo (baner), logo (bieåu töôïng cuûa coâng ty), menu (thöïc ñôn cuûa öùng duïng) vaø moät soá thoâng tin khaùc. Phaàn left laø thoâng tin veà caùc menu phuï hay coøn goïi laø menu cuûa menu chính, beân caïnh menu con naøy trang web thöôøng coù caùc lieân keát veà lieân heä, quaûng caùo, mailing list (ñaêng kyù email), gôûi ñeán baïn beø (send to friend), .... Ñoái vôùi phaàn right, thöôøng laø phaàn giôùi thieäu veà caùc thoâng ñaëc bieät vaø quaûng caùo, chaúng haïn ñoái vôùi öùng duïng baùn saùch, phaàn right thöôøng laø danh saùch caùc nhoùm saùch baùn chaïy, saép phaùt haønh, ... Phaàn bottom thöôøng thoâng tin lieân laïc cuûa coâng ty, chuû nhaân cuûa web site vaø baûn quyeàn. Ngoaøi ra, phaàn bottom ñoâi khi laø danh saùch caùc menu con khaùc. Toùm laïi, tuyø thuoäc vaøo yù töôûng thieát keá moãi phaàn nhö treân bao goàm caùc thuoäc tính maø nhaø thieát keá caàn trình baøy sao cho phuø hôïp. Tuy nhieân, phaàn body laø phaàn trình baøy noäi dung chính cuûa moãi trang web. Ngoaøi ra, tuyø vaøo töøng tröôøng hôïp cuï theå, trang web coù theå khoâng coù phaàn left vaø right. Nhö vaäy, chuùng ta seõ chia trang web ra thaønh 5 phaàn, phaàn body chính laø phaàn chính cuûa trang web ñoù, coøn 4 phaàn coøn laïi ñöôïc cheøn vaøo khi coù nhu caàu. Chaúng haïn, coù nhöõng trang web do thoâng tin trình baøy trong phaàn body nhieàu, neân caàn khoâng gia lôùn hôn, baïn coù theå khoâng caàn söû duïng hai phaàn left vaø right. Ñeå laøm ñieàu naøy, tröôùc tieân chuùng ta thieát keá trang sample.php coù 5 phaàn nhö hình 6-3. Giaùo vieân: Phaïm Höõu Khang
  • 60. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 6-3: Trang sample.php ------------------------------------------------------------------------------------------- Löu yù: Taïo moät table goàm 3 haøng 3 coät vaø khai baùo border=1 ñeå ñeã canh leà sau ñoù baïn coù theå khai baùo laïi thuoäc tính naøy baèng 0. • • • • • Phaàn top vaø bottom laø moät haøng vaø merge 3 coät thaønh 1. Beân trong moãi phaàn coù theå coù moät hay nhieàu theû table khaùc. Coù theå khoâng coù phaàn left vaø right nhöng baét buoäc phaàn top vaø bottom phaûi coù. Baïn coù theå söû duïng chieàu roäng cuûa table theo kích thöôùc töông ñoái (%) hay soá chæ ñònh, ñoái vôùi maøn hình 600*800 thì chieàu roäng thöôøng söû duïng laø 780, khi ngöôøi söû duïng choïn ñoä phaân giaûi cuûa maøn hình lôùn hôn thì kích thöôùc cuûa table naøy khoâng thay ñoåi, trong khi ñoù noäi dung seõ phuû ñaày maøn hình khi baïn khai baùo kích thöôùc theo 100%. ------------------------------------------------------------------------------------------- Ñeå coù giao dieän nhö trang sample.php nhö treân, baïn coù theå khai baùo nhö ví duï 6-3. Ví duï 6-3: Noäi 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> Giaùo vieân: Phaïm Höõu Khang
  • 61. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM <TABLE cellSpacing=2 cellPadding=2 width="778" border=1 align=center> <TR HEIGHT="100"> <TD Align=center colspan=3> TOP </TD> </TR> <TR HEIGHT="280"> <TD vAlign=top width="20%"> LEFT </TD> <TD vAlign=top width="60%"> BODY </TD> <TD vAlign=top width="20%"> RIGHT </TD> </TR> <TR HEIGHT="50"> <TD colspan=3 align=center> BOTTOM </TD </TR> </TABLE> </body> </html> Trong tröôøng hôïp baïn muoán coù ñöôøng phaân caùch giöõa moãi phaàn baèng image, baïn coù theå khai baùo laïi trang sample.php coù 5 haøng vaø 5 coät nhö template.php nhö hình 6-4. Giaùo vieân: Phaïm Höõu Khang
  • 62. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 2-4: Phaân caùch coù vieàng Ñeå trình baøy trang tempale.PHP nhö hình 6-4, baïn khai baùo noäi dung trang naøy nhö ví duï 6-4. Ví duï 6-4: Khai baùo template.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> <TABLE width="778" border=0 cellSpacing=0 cellPadding=0 align=center> <TR HEIGHT="100"> <TD Align=center colspan=5> TOP </TD> </TR> <!---Khai baùo ñöôøng phaân caùch---> <TR HEIGHT="1"> <TD colspan=5 bgcolor=gray></TD> </TR> <TR HEIGHT="280"> <TD vAlign=top width="150">LEFT</TD> <!---Khai baùo ñöôøng phaân caùch---> Giaùo vieân: Phaïm Höõu Khang
  • 63. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM <TD bgcolor=gray width="1"></TD> <TD vAlign=top width="476">BODY</TD> <!---Khai baùo ñöôøng phaân caùch---> <TD bgcolor=gray width="1"></TD> <TD vAlign=top width="150">RIGHT</TD> </TR> <!---Khai baùo ñöôøng phaân caùch---> <TR HEIGHT="1"> <TD colspan=5 bgcolor=gray></TD> </TR> <TR HEIGHT="50"> <TD colspan=5 align=center> BOTTOM </TD </TR> </TABLE> </body> </html> Sau ñoù taùch trang template.php naøy thaønh 5 trang khaùc nhau ñöôïc ñaët teân töông öùng laø top.htm, left.htm, right.htm vaø bottom.htm, trong ñoù phaàn body töông öùng vôùi trang templates.php. Ñeå khai baùo cheøn taäp tin trong trang PHP, baïn söû duïng cuù phaùp nhö sau: <?php include(”filename”); ?> Hay <?php require(”filename”); ?> Trong ñoù trang templates.PHP khai baùo cheøn top.htm, left.htm, right.htm vaø bottom.htm nhö ví duï 6-5. Ví duï 6-5: Khai baùo cheøn taäp 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 baùo ñöôøng phaân caùch---> <TR HEIGHT="1"> <TD colspan=5 bgcolor=gray></TD> </TR> Giaùo vieân: Phaïm Höõu Khang
  • 64. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM <TR HEIGHT="280"> <TD vAlign=top width="150"> <?php include(“left.htm")?> </TD> <!---Khai baùo ñöôøng phaân caùch---> <TD bgcolor=gray width="1"></TD> <TD vAlign=top width="476">BODY</TD> <!---Khai baùo ñöôøng phaân caùch---> <TD bgcolor=gray width="1"></TD> <TD vAlign=top width="150"> <?php include ("right.htm")?> </TD> </TR> <!---Khai baùo ñöôøng phaân caùch---> <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 trieäu goïi trang templates.php, noäi dung cuûa 4 tang left.htm, right.htm, top.htm, bottom.htm cheøn vaøo trang templates.php nhö hình 6-5. Giaùo vieân: Phaïm Höõu Khang
  • 65. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 6-5: Trang templates.php sau khi cheøn Trong ñoù, noäi dung cuûa trang top.htm ñònh nghóa töông töï nhö ví duï 6-5-1. Ví duï 6-5-1: Noäi dung trang top.htm <TABLE width="100%" border=0 cellSpacing=0 cellPadding=0 HEIGHT="100%" align=center> <TR > <TD width="150" Align=center> LOGO </TD> <TD Align=center> BANNER </TD> </TR> <TR HEIGHT="1"> <TD colspan=2 bgcolor=gray></TD> </TR> <TR HEIGHT="20%" bgcolor=black class=menu> <TD width="150" > Welcome </TD> <TD> Home | Search | Contact | Help </TD> </TR> </TABLE> Noäi dung cuûa taäp tin left.htm ñöôïc ñònh nghóa töông töï nhö ví duï 6-5-2. Ví duï 6-5-2: Noäi dung trang left.htm Giaùo vieân: Phaïm Höõu Khang
  • 66. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM <TABLE width="100%" border=0 cellSpacing=0 cellPadding=0 HEIGHT="100%" align=center> <TR > <TD width="150" Align=center> LEFT </TD> </TR> </TABLE> Neáu coù söû duïng trang right.htm thì noäi dung cuûa taäp tin naøy ñöôïc ñònh nghóa töông töï nhö ví duï 6-5-3. Ví duï 6-5-3: Noäi 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> Töông töï nhö vaäy, trang bottom.htm coù noäi dung nhö ví duï 6-5-4. Ví duï 6-5-4: Noäi dung trang bottom.htm <TABLE width="100%" border=0 cellSpacing=0 cellPadding=0 HEIGHT="100%" align=center> <TR class=text> <TD Align=center> HUUKHANG.COM<br> Copyright ©2000-2005. All Rights Reserved. </TD> </TR> </TABLE> Chuù yù raèng, trong moãi trang khai baùo cheøn khoâng coù caùc theû ñoùng vaø môû html, body bôûi khi cheøn thì noäi dung cuûa taäp tin ñöôïc cheøn seõ ñöôïc cheøn vaøo taäp tin bò cheøn vaø trong taäp tin bò cheøn ñaõ coù hai theû naøy. Kòch baûn trình chuû PHP hoã trôï caùc taäp tin ñöôïc cheøn vôùi caùc teân môû roäng nhö htm, PHP, inc, lib, html. Do thöïc chaát cuûa vieäc khai baùo cheøn laø cheøn ñoaïn maõ trong taäp tin cheøn vaøo taäp tin boï cheøn, trong tröôøng hôïp naøy trang cheøn htm hay PHP ñeàu gioáng nhau ñoù laø lyù do taïi sao caùc trang cheøn ôû treân ñeàu coù teân môû roäng laø htm. Tuy nhieân, khi baïn goïi trang cheøn naøy moät mình ví duï tom.htm, neáu beân trong coù maõ PHP thì maõ ñoù khoâng ñöôïc thoâng dòch. Neáu nhöõng trang cheøn naøy coù nhu caàu goïi moät mình thì baïn coù theå chuyeån chuùng thaønh trang PHP thay vì htm nhö ñaõ trình baøy. Sau khi coù ñöôïc trang templates.php, baïn coù theå söû duïng trang naøy laø maãu cho caùc trang khaùc baèng caùch save as thaønh caùc trang PHP khaùc khi laäp trình. Khi khai baùo cheøn taäp tin, baïn coù theå söû duïng ñöôøng daãn töông ñoái hoaëc tuyeät ñoái cuûa taäp tin cheøn so vôùi aäp tin bò cheøn. Giaùo vieân: Phaïm Höõu Khang
  • 67. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 4. TAÄP TIN DUØNG CHUNG Ngoaøi caùch cheøn ôû treân, neáu baïn coù nhöõng haøm söû duïng chung cho caùc trang PHP khaùc thì baïn khai baùo thaønh moät trang PHP khaùc sau ñoù duøng cuù phaùp cheøn taäp tin ñeå cheøn chuùng vaøo khi coù nhu caàu. Ví duï trong tröôøng hôïp naøy chuùng ta muoán söû duïng chung haøm coù teân getPaging nhaän 5 tham soá $totalRows (toång soá maåu tin), $curPg (soá trang hieän haønh), $pg (soá trang trình baøy), $re (soá maåu tin treân 1 trang), $file (trang php caàn goïi) trong taäp tin paging.php. <?php function paging($totalRows,$curPg,$pg,$re,$file) { $paging=""; $mxR = $re; $mxP = $pg; if($totalRows%$mxR==0) $totalPages = (int)($totalRows/$mxR); else $totalPages = (int)($totalRows/$mxR+1); $curRow = ($curPg-1)*$mxR+1; if($totalRows>$mxR) { $start=1; $end=1; $paging1 =""; for($i=1;$i<=$totalPages;$i++) { if(($i>((int)(($curPg-1)/$mxP))* $mxP) && ($i<=((int)(($curPg- 1)/$mxP+1))* $mxP)) { if($start==1) $start=$i; if($i==$curPg) $paging1 .= $i."&nbsp;&nbsp;"; else { $paging1 .= "<a class=lslink href='$file"; $paging1 .="&page=".$i."'>".$i; $paging1 .="</a>&nbsp;&nbsp;"; } $end=$i; } } $paging.= "Trang :&nbsp;&nbsp;" ; if($curPg>$mxP) { $paging .="<a class=lslink href='$file"; $paging .="&page=".($start-1); $paging .="'>Previous</a>&nbsp;&nbsp;"; } $paging.=$paging1; if(((($curPg-1)/$mxP+1)*$mxP) < $totalPages) { $paging .= "<a class=lslink href='$file"; $paging .="&page=".($end+1); $paging .="'>Next</a>&nbsp;&nbsp;"; } } return $paging; } ?> Giaùo vieân: Phaïm Höõu Khang
  • 68. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Sau ñoù khai baùo trang result.php, cheøn taäp tin paging.php vaø goïi haøm getPaging nhöu 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> Keát quaû traû veà nhö hình 6-6 sau Hình 6-6: Haøm duøng chung 5. KEÁT LUAÄN Trong baøi naøy, chuùng ta tìm hieåu caùch khai baùo haøm, trang php vaø khai baùo cheøn taäp tin. Giaùo vieân: Phaïm Höõu Khang
  • 69. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Moân hoïc: PHP Baøi 7 Baøi hoïc naøy chuùng ta seõ laøm quen caùch xöû lyù chuoãi, maûng, kieåu DataTime trong PHP: Xöû lyù chuoãi Laøm vieäc vôùi maûng döõ lieäu Kieåu DateTime XÖÛ LYÙ CHUOÃI PHP laø kòch baûn ñöôïc xem laø toát nhaát cho xöû lyù chuoãi, baèng caùch söû duïng caùc haøm xöû lyù chuoãi, baïn coù theå thöïc hieän caùc yù ñònh cuûa mình khi töông taùc cô sôû döõ lieäu, taäp tin hay döõ lieäu khaùc. 1. 1.1. Ñònh daïng chuoãi Khi xuaát keát quaû ra trình duyeät, baïn coù theå söû duïng caùc ñònh daïng chuoãi töông töï nhö ngoân ngöõ laäp trình C. Chaúng haïn, chuùng ta in giaù trò cuûa bieán $i trong trang dinhdang.php nhö ví duï 7-1. <html> <head> <title>String Functions</title> </head> <body> <h4>Dinh dang</h4> <?php $i=12.55; $j=100; echo "Total amount of order: $i<br>"; printf("Total amount of order: %.1f", $i); echo "<br>"; printf("Total amount of order: %.2f", $i); echo "<br>"; printf("Total amount of order: i=%.2f, j=%.0f", $i,$j); ?> </body> </html> Keát quaû xuaát hieän nhö hình 7-1 Giaùo vieân: Phaïm Höõu Khang
  • 70. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 7-1: Ñònh daïng chuoãi in Trong ñoù caùc ñònh daïng ñöôïc chia ra nhieâu loaïi tuyø thuïoâc vaøo caùc kyù töï baïn söû duïng. % - Koâng yeâu caàu tham soá. b – Trình baøy daïng soá integer vaø hieän thöïc döôùi daïng binary. c - Trình baøy daïng soá integer vaø hieän thöïc döôùi daïng maõ ASCII. d - Trình baøy daïng soá integer vaø hieän thöïc döôùi daïng decimal. e - Trình baøy daïng soá logic vaø hieän thöïc döôùi daïng 1.2e+2. u - Trình baøy daïng soá integer vaø hieän thöïc döôùi daïng decimal khoâng daáu. f - Trình baøy daïng soá float vaø hieän thöïc döôùi daïng soá chaám ñoäng. o - Trình baøy daïng soá integer vaø hieän thöïc döôùi daïng heä soá 10. s - Trình baøy daïng chuoãi. x - Trình baøy daïng soá integer vaø hieän thöïc döôùi daïng heä soá 16 vôùi kyù töï thöôøng. X - Trình baøy daïng soá integer vaø hieän thöïc döôùi daïng heä soá 16 vôùi kyù töï hoa. 1.2. Haøm chuyeån ñoåi chuoãi Ñeå chuyeån ñoåi chuoãi ra kyù töï hoa thöôøng baïn söû duïng moät trong 4 haøm nhö ví duï 7-2 trong trang chuyendoi.php: <html> <head> <title>String Functions</title> </head> <body> <h4>Chuyen doi</h4> <?php $str="Welcome to huukhang.com"; echo $str; echo "<br>"; echo strtoupper($str); echo "<br>"; echo strtolower($str); echo "<br>"; echo ucfirst($str); echo "<br>"; echo ucwords($str); echo "<br>"; ?> Giaùo vieân: Phaïm Höõu Khang
  • 71. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM </body> </html> Keát quaû trình baøy nhö hình 7-2. Hình 7-2: Chuyeån ñoåi chuoãi 1.3. Haøm taùch hay keát hôïp chuoãi Ñeå taùch hay keát hôïp chuoãi, baïn söû duïng moät trong caùc haøm thöôøng söû duïng nhö strtok, explode hay substr. Chaúng haïn, chuùng ta söû duïng 4 haøm naøy trong ví duï 7-4 trong trang tachchuoi.php. <html> <head> <title>String Functions</title> </head> <body> <h4>Tach hop chuoi</h4> <?php $string = "Xin chao ban da den voi huukhang.com"; $str = $string; echo $string."<br>"; $tok = strtok($string, " "); while ($tok) { echo "Word= $tok<br />"; $tok = strtok(" nt"); } echo $str."<br>"; echo substr($str,24)."<br>"; $a[]=array(); $a=explode(" ",$str); while($i=each($a)) { Giaùo vieân: Phaïm Höõu Khang
  • 72. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM echo $i["value"]."<br>"; } ?> </body> </html> Keát quaû trình baøy nhö hình 7-4. Hình 7-4: Haøm taùch chuoãi Trong tröôøng hôïp keát hôïp giaù trò cuûa caùc phaàn töû cuûa maûng thaønh chuoãi, baïn söû duïng haøm implode nhö ví duï 7-5 trong trang kethop.php: <html> <head> <title>String Functions</title> </head> <body> <h4>Ket hop chuoi</h4> <?php $str = "Xin chao ban da den voi huukhang.com"; $a[]=array(); $a=explode(" ",$str); while($i=each($a)) { echo $i["value"]."<br>"; } $str=implode(" ",$a); echo $str; Giaùo vieân: Phaïm Höõu Khang
  • 73. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM ?> </body> </html> Keát quaû trình baøy nhö hình 7-5. Hình 7-5: Haøm keát hôïp chuoãi 1.4. Tìm kieám vaø thay theá chuoãi Ñeå thay theá chuoãi, baïn söû duïng haøm str_replace, chaúng haïn trong tröôøng hôïp hôïp baïn laáy giaù trò töø theû nhaäp lieäu, sau ñoù tìm kieám neáu phaùt hieän daáu ‘ thì thay theá thaønh hai daáu nhaùy nhö trang replace.php. <html> <head> <title>String Functions</title> </head> <body> <h4>That the chuoi</h4> <?php $str=""; if (isset($txtfullname)) $str = $txtfullname; if($str != ""); $str=str_replace("o","a",$str); echo $str."<br>"; ?> <form action=replace.php method=post> fullname: <input name=txtfullname value="<?=$str?>"><br> <input type=submit value=Submit> </form> Giaùo vieân: Phaïm Höõu Khang
  • 74. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM </body> </html> Khi trieäu goïi trang replace.php treân trình duyeät, baïn seõ coù keát quaû nhö sau: Hình 7-6: Haøm thay theá chuoãi Ngoaøi ra, baïn coù theå söû duïng caùc haøm nhö strpos (traû veà vò trí chuoãi con trong chuoãi meï), ... 2. LAØM VIEÄC VÔÙI MAÛNG DÖÕ LIEÄU Nhö trong baøi kieåu döõ lieäu chuùng ta ñaõ laøm quen vôùi kieåu döõ lieäu maûng, trong phaàn naøy chuùng ta tieáp tuïc tìm hieåu caùc khai baùo, truy caäp vaø töông taùc vôùi taäp tin töø maûng moät chieàu, hai chieàu. 2.1. Maûng moät chieàu Ñeå khai baùo maûng moät chieàu, baïn coù theå söû duïng cuù phaùp nhö sau: $arr=array(); $arrs=array(5); Truy caäp vaøo phaàn töû maûng, baïn coù theå söû duïng chæ muïc cuûa phaàn töû nhö sau: $arr[0]=1; $arrs[1]=12; Laáy giaù trò cuûa phaàn töû maûng, baïn cuõng thöïc hieän töông töï nhö tröôøng hôïp truy caäp maûng phaàn töû. echo $arr[0]; $x=$arrs[5]; Chaúng haïn, chuùng ta khai baùo maûng ñoäng vaø maûng coù soá phaàn töû cho tröôùc, sau ñoù truy caäp vaø laáy giaù trò cuûa chuùng nhö ví duï trong trang arrayone.php sau: Giaùo vieân: Phaïm Höõu Khang
  • 75. COMPUTER LEARNING CENTER 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> Keát quaû trình baøy nhö hình 7-7 khi trieäu goïi trang arrayone.php. Giaùo vieân: Phaïm Höõu Khang
  • 76. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 7-7: Khai baùo vaø söû duïng maûng moät chieàu 2.2. Maûng hai chieàu Töông töï nhö maûng moät chieàu, trong tröôøng hôïp laøm vieäc maûng hai chieàu baïn khai baùo töông töï nhö trang arraytwo.php. <html> <head> <title>Array</title> </head> <body> <h4>Mang hai chieu</h4> <?php $i=0;$j=0; $arr=array(); $arr[0][0]=10; $arr[0][1]=11; $arr[0][2]=12; $arr[1][0]=13; $arr[1][1]=14; $arr[1][2]=15; $arr[2][0]=16; $arr[2][1]=17; $arr[2][2]=18; for($i=0;$i<sizeof($arr);$i++) { for($j=0;$j<sizeof($arr);$j++) { echo $arr[$i][$j]." "; } echo "<br>"; } echo "<br>"; $arrs=array(array(1,2,3,4,5,6,7), array(11,12,13,14,15,16,17)); Giaùo vieân: Phaïm Höõu Khang
  • 77. COMPUTER LEARNING CENTER 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 trieäu goïi trang naøy treân trình duyeät, keát quaû trình baøy nhö hình 7-8. Hình 7-8: Maûng hai chieàu Giaùo vieân: Phaïm Höõu Khang
  • 78. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 3. KIEÅU DATETIME Ñeå laøm vieäc vôùi kieåu döõ lieäu Date vaø Time, baïn söû duïng haøm cuûa PHP coù saün. Chaúng haïn, muoán trình baøy chuoãi ngaøy thaùng, baïn duøng haøm date vôùi caùc 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> Keát quaû traû veà nhö hình 7-9. Hình 7-9: Söû duïng haøm Date Löu yù raèng, than soá trong haøm date ñöôïc trình baøy trong baûng sau ----------------------------------------------------------------------- Code Dieãn giaûi ----------------------------------------------------------------------- a Buoåi saùng/Chieàu baèng hai kyù töï thöôøng am/pm. A Buoåi saùng/Chieàu baèng hai kyù töï hoa AM/PM. B Ñònh daïng thôøi gian Swatch Internet, baïn coù theå tham khaûo http://swatch.com/internettime/internettime.php3. d Day (01-31) trong thaùng vôùi hai soá, neáu ngaøy 1-9 seõ coù keøm soá 0. D Day (Mon-Sun) trong tuaàn vôùi 3 kyù töï. Giaùo vieân: Phaïm Höõu Khang
  • 79. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM F Thaùng (January-December) trong naêm vôùi teân thaùng ñaày ñuû daïng text. g Hour (1-12) trong ngaøy 1 hoaëc 2 soá (khoâng keøm 0 neáu giôø töø 1-9). G Hour (0-23) trong ngaøy 1 hoaëc 2 soá (khoâng keøm 0 neáu giôø töø 0-9). h Hour (01-12) trong ngaøy 2 soá (keøm 0 neáu giôø töø 01-09). H Hour (00-23) trong ngaøy 2 soá (keøm 00 neáu giôø töø 00-09). i Minutes (01-59) ñaõ troâi qua (keøm 00 neáu phuùt töø 00-59). j Day (1-31) 1 hoaëc 2 soá (khoâng keøm 0 neáu ngaøy töø 1-9). l Day (Monday-Sunday) trong tuaàn daïng text. L Naêm nhuaàn traû veà 1, ngöôïc laïi haøm traû veà 0. m Month (01-12) trong naêm 2 soá (keøm 00 neáu thaùng töø 01-09). M Month (Jan-Dec) trong naêm 3 kyù töï. n Month (1-12) 1 hoaëc 2 soá (khoâng keøm 0 neáu thaùng töø 1-9). s Seconds (01-59) ñaõ troâi qua (keøm 00 neáu giaây töø 00-59). S Theâm hai kyù töï st, nd, rd hay th theo sau ngaøy daïng hai kyù töï soá (ví duï nhö 12th ). t Traû veà toång soá ngaøy trong thaùng (töø 28 -31). T Kyù töï Timezone cuûa server vôùi 3 kyù töï, chaúng haïn nhö EST. U Toång soá Seconds töù 1 January 1970 tôùi hoâm nay öùng vôùi UNIX Time Stamp. w Day (0-6) cuûa tuaàn, 0 öùng vôùi Sunday vaø 6 öùng vôùi Saturday. y Naêm ñònh daïng 2 con soá (03). Y Naêm ñònh daïng 4 con soá (2003). z Ngaøy trong naêm moät hoaëc 2 con soá (0-365). X Timezone hieän taïi tính baèng giaây töø –43200 ñeán 43200. ----------------------------------------------------------------------- 4. KEÁT LUAÄT Trong baøi naøy, chuùng ta taäp trung tìm hieåu xöû lyù chuoãi, maûng vaø haøm ngaøy thaùng. Trong baøi tieáp, chuùng ta tieáp tuïc tìm hieåu cô sôû döõ lieäu mySQL. Giaùo vieân: Phaïm Höõu Khang
  • 80. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Moân hoïc: MySQL Baøi 8 Baøi hoïc naøy chuùng ta seõ laøm quen caùch thao taùc treân cô sôû döõ lieäu MySQL: Giôùi thieäu cô sôû döõ lieäu MySQL Caøi ñaët MySQL Caáu hình Kieåu döõ lieäu Khai baùo caùc phaùt bieåu 1. GIÔÙI THIEÄU CÔ SÔÛ DÖÕ LIEÄU MYSQL MySQL laø cô sôû döõ lieäu ñöôïc söû duïng cho caùc öùng duïng Web coù quy moâ vöøa vaø nhoû. Tuy khoâng phaûi laø moät cô sôû döõ lieäu lôùn nhöng chuùng cuõng coù trình giao dieän treân Windows hay Linux, cho pheùp ngöôøi duøng coù theå thao taùc caùc haønh ñoäng lieân quan ñeán cô sôû döõ lieäu. Cuõng gioáng nhö caùc cô sôû döõ lieäu, khi laøm vieäc vôùi cô sôû döõ lieäu MySQL, baïn ñaêng kyù keát noái, taïo cô sôû döõ lieäu, quaûn lyù ngöôøi duøng, phaàn quyeàn söû duïng, thieát keá ñoái töôïng Table cuûa cô sôû döõ lieäu vaø xöû lyù döõ lieäu. Tuy nhieân, trong baát kyø öùng duïng cô sôû döõ lieäu naøo cuõng vaäy, neáu baûn thaân chuùng coù hoã trôï moät trình giao dieän ñoà hoaï, baïn coù theå söû duïng chuùng tieän lôïi hôn caùc söû duïng Command line. Bôûi vì, cho duø baïn ñieàu khieån MySQL döôùi baát kyø hình thöùc naøo, muïc ñích cuõng quaûn lyù vaø thao taùc cô sôû döõ lieäu. 2. CAØI ÑAËT MYSQL Ñeå caøi ñaët MySQL treân neàn Windows baïn theo caùc böôùc sau: Tröôùc tieân baïn cheùp taäp tin mysql-4.0.0a-alpha-win.zip vaøo ñóa cöùng hoaëc choïn chuùng töø ñóaq CD vaø giaûi neùn taäp tin Chaïy taäp tin Setup.exe, choïn ñóa C hay D Sau khi caøi ñaët thaønh coâng, baïn kieåm tra trong Windows Services xuaát hieän dòch vuï mySQL hay khoâng?. Ñeå söû duïng ñöôïc MySQL thì traïng thaùi cuûa dòch vuï naøy phaûi ôû cheá ñoä Started. Löu yù raèng, trong tröôøng hôïp MySQL khoâng theå chaïy ñöôïc, do dòch vuï cuûa MySQL chöa Started nhö , ñeå coù theå chaïy ñöôïc MySQL thì baïn caàn moät soá thay ñoåi trong taäp tin my.ini trong thö muïc 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 Giaùo vieân: Phaïm Höõu Khang
  • 81. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM [WinMySQLadmin] Server=C:/mysql/bin/mysqld-nt.exe user=root password= QueryInterval=10 3. TAÏO CÔ SÔÛ DÖÕ LIEÄU VAØ NGÖÔØI DUØNG Trong tröôøng hôïp baïn söû duïng giao dieän ñoà hoaï thì duøng ích quaûn trò cô sôû döõ lieäu MySQL, baïn coù theå chaïy taäp tin mysqlfront.exe trong thö muïc MySQL Control, baèng caùch chaïy taäp tin cöûa soå xuaát hieän nhö hình 8-1. Neáu laàn ñaàu tieân taïo keát noái cô sôû döõ lieäu, baïn caàn phaûi taïo moät Connection, cung caáp teân Server hay IP cuûa maùy chöùa MySQL. Tuy nhieân, trong tröôøng hôïp maùy chöùa cô sôû döõ lieäu MySQL laø maùy ñang söû duïng, baïn coù theå söû duïng localhost. Ngaøi ra, cuõng gioáng nhö caùc cô sôû döõ lieäu khaùc, Username maëc ñònh cuûa cô sôû döõ lieäu MySQl laø root vaø Password laø roãng. Neáu baïn ñaõ coù cô sôû döõ lieäu ñang toàn taïi, baïn coù theå goõ teân cô sôû döõ lieäu trong phaàn Databases ( neáu muoán môû nhieàu database, baïn coù theå duøng daáu ; ñeå phaân caùch). Trong tröôøng hôïp laàn ñaàu tieân, baïn khoâng caàn cung caáp teân cô sôû döõ lieäu, baïn coù theå taïo chuùng sau khi keát noái. Hình 8-1: Keát noái cô sôû döõ lieäu baèng MySQLFront Tool Sau keát noái cô sôû döõ lieäu thaønh coâng, trình ñieàu khieån cô sôû döõ lieäu MySQL coù giao dieän nhö hình 8-2, coäng vieäc ñaàu tieân baïn phaûi thöïc hieän laø taïo cô sôû döõ lieäu. Baét ñaàu töø menu coù teân Tools | Create Database hay choïn teân root@localhost | R-Click | Create Database, cöûa soå xuaát hieän nhö hình 8-3. Giaùo vieân: Phaïm Höõu Khang
  • 82. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 8-2: Giao dieän ñieàu khieån cô sôû döõ lieäu MySQL Cung caáp teân cô sôû döõ lieäu, trong tröôøng hôïp naøy baïn coù theå nhaäp Test, baám nuùt OK, cô sôû döõ lieäu xuaát hieän trong cöûa soå ñieàu khieån. Hình 8-3: Taïo cô sôû döõ lieäu coù teân Test Trong caû hai tröôøng hôïp taïo cô sôû döõ lieäu baèng MySQL thaønh coâng nhö treân, baïn coù theå tìm thaáy teân cô sôû döõ lieäu ñoù trong thö muïc mysql/data nhö hình 8-4 sau: Giaùo vieân: Phaïm Höõu Khang
  • 83. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 8-4: Thö muïc tin cô sôû döõ lieäu Test 3.1. Quaûn lyù ngöôøi duøng Laøm theá naøo ñeå ñaêng nhaäo vaøo cô sôû döõ lieäu MySQL, baïn coù theå söû duïng hai caùch nhö trình baøy ôû treân. Tuy nhieân, sau khi taïo ra caùc username khaùc, baïn coù theå söû duïng chuùng ñeå ñaêng nhaäp. Ñeå ñaêng nhaäp vaøo MySQL baèng Command line, baïn chæ caàn goõ >mysql – hostname –u username – p töø daáu nhaéc hay ñaêng nhaäp baèng caùch söû duïng trình giao dieän ñoà hoaï. Töø khoaù -h hæ ra raèng teân (computer name), IP, hay localhost cuûa maùy coù söû duïng cô sôû döõ lieäu MySQL, -u chæ ra raèng baïn söû duïng username, username laø teân username, -p ñöôïc chæ ñònh khi username naøy coù password. Trong tröôøng hôïp password laø roãng, baïn coù theå khoâng cung caáp tham soá –p. Ñeå taïo User trong cô sôû döõ lieäu MySQL, baïn coù theå söû duïng hai caùch treân. Neáu baïn thöïc hieän vieäc taïo moät Username baèng Command line, baïn coù theå goõ töø daáu nhaéc nhö phaùt bieåu sau: GRANT Select, Insert, Update, Delete, Index, Alter, Create, Drop, References ON *.* TO 'myis'@'%' IDENTIFIED BY '12345678' Trong phaùt bieåu treân, vöøa taïo ra User coù teân myis, vôùi hostname laø cô sôû döõ lieäu hieän haønh, password laø 1234 vaø ñöôïc caùc ñaët quyeàn Select, Insert, Update, Delete, Index, Alter, Create, Drop treân cô sôû döõ lieäu hieän haønh. Trong tröôøng hôïp baïn taïo ra moät Username khoâng cung caáp caùc ñaët quyeàn treân cô sôû döõ lieäu, baïn coù theå thöïc hieän nhö phaùt bieåu taïo username: test, password: 1234 sau: GRANT usage ON *.* TO 'test'@'%' Giaùo vieân: Phaïm Höõu Khang
  • 84. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM IDENTIFIED BY '1234' Neáu baïn söû duïng giao dieän ñoà hoaï, baïn coù theå taïo username vaø gaùn quyeàn nhö treân baèng caùch söû duïng menu coù teân Tools | User-Manager, cöûa soå xuaát hieän nhö hình 8-5. Hình 8-5: Taïo Username 3.2. Caáp quyeàn cho ngöôøi duøng Caùc ñaët quyeàn Select, Insert, Update, Delete, Index, Alter, Create, Drop treân cô sôû döõ lieäu, baïn coù theå tham khaûo chi tieát trong baûng 8-1. Baûng 8-1: Caùc ñaët quyeàn treân cô sôû döõ lieäu ---------------------------------------------- Loaïi aùp duïng Dieãn giaûi ---------------------------------------------- select tables, Cho pheùp user truy vaán maåu columns tin töø Table. insert tables, Cho pheùp user theâm môùi maåu columns tin vaøo Table. update tables, Cho pheùp user thay ñoåi giaù columns trò cuûa maåu tin toàn taïi trong Table. delete tables Cho pheùp user maåu tin toàn taïi trong Table. index tables Cho pheùp user theâm môùi hay xoaù chæ muïc cuûa Table. alter tables Cho pheùp user thay ñoåi caáu truùc cuûa ñoái töôïng Table Giaùo vieân: Phaïm Höõu Khang
  • 85. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM hay Database toàn taïi, nhö theâm coät vaøo trong Table toàn taïi, thay ñoåi kieåu döõ lieäu cuûa coät döõ lieäu, .. create databases Cho pheùp user taïo môùi ñoái tables töôïng Table hay Database. drop databases Cho pheùp user xoaù ñoái tables töôïng Table hay Database. ---------------------------------------------- Xuaát phaùt töø caùc quyeàn coù aûnh höôûng ñeán caáu truùc cô sôû döõ lieäu, caùc ñoái töôïng cuûa cô sôû döõ lieäu vaø döõ lieäu, baïn coù theå xem xeùt kyõ caøng tröôùc khi caáp quyeàn cho user aøm vieäc treân cô sôû döõ lieäu. Ngoaøi caùc quyeàn treân, trong MySQL coøn coù moät soá quyeàn khoâng gaùn maëc ñònh nhö trong baûng 8-2, baïn coù theå xem xeùt caùc ñaët quyeàn quaûn trò ñeå caáp cho ngöôøi duøng. Baûng 8-2: Caùc ñaët quyeàn quaûn trò treân cô sôû döõ lieäu ---------------------------------------------- Loaïi Dieãn giaûi ---------------------------------------------- reload Cho pheùp ngöôøi quaûn trò naïp laïi caùc Table, quyeàn, host, logs vaø Table. shutdown Cho pheùp ngöôøi quaûn trò chaám döùt hoaït ñoäng MySQL Server. process Cho pheùp ngöôøi quaûn trò xem quaù trình thöïc hieän cuûa trình chuû vaø coù theå chaám döùt moät soá quaù trình ñang thöïc thi. file Cho pheùp döõ lieäu ghi vaøo Table töø taäp tin. ---------------------------------------------- Löu yù: Nhöõng username bình thöôøng khoâng neân caáp quyeàn nhö trong baûng 8-2 cho hoï, trong tröôøng hôïp baïn muoán caàp taát caû caùc quyeàn trong baûng 8-1 vaø Baûng 8-2 cho username khi taïo ra hoï, baïn Table söû duïng töø khoaù All thay vì All Privileges trong phaùt bieåu taïo user nhö sau: GRANT ALL ON *.* TO 'ekhang'@'%' IDENTIFIED BY '12345678' Töông töï nhö vaäy, trong tröôøng hôïp baïn khoâng cung caáp baát kyø ñaët quyeàn naøo treân cô sôû döõ lieäu hieän haønh, baïn coù theå khai baùo phaùt bieåu caáp uyeàn nhö sau: GRANT usage ON *.* TO 'ekhang'@'%' IDENTIFIED BY '12345678' 3.3. Xoaù quyeàn cuûa user Ñeå xoaù caùc quyeàn cuûa user töø cô sôû döõ lieäu hieän haønh, baïn coù theå söû duïng phaùt bieåu SQL coù teân Revoke, phaùt bieåu Revoke ngöôïc laïi vôùi phaùt bieåu Grant. Neáu baïn xoaù moät soá quyeàn cuûa user, baïn coù theå söû duïng khai baùo nhö phaùt bieåu sau: Revoke privileges [(columns)] ON item From username Trong tröôøng hôïp xoaù taát caû caùc quyeàn cuûa user, baïn coù theå söû duïng phaùt bieåu nhö sau: Giaùo vieân: Phaïm Höõu Khang
  • 86. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Revoke All ON item From username Neáu user ñoù ñöôïc caáp quyeàn vôùi tuyø choïn Grant Option, ñeå xoaù caùc quyeàn ñoù cuûa user, baïn coù theå khai baùo nhö sau: Revoke Grant Option ON item From username Ñeå tham khaûo chi tieát quaù trình caáp vaø xoaù quyeàn cuûa moät user, baïn coù theå tham khaûo moät soá phaùt bieåu nhö sau: Gaùn quyeàn Administrator cho user coù teân fred treân moïi cô sôû döõ lieäu trong MySQL, password cuûa anh ta laø mnb123, baïn coù theå khai baùo nhö sau: Grant all On * To fred indetifyed by ‘mnb123’ With Grant Option; Neáu baïn khoâng muoán user coù teân fred trong heä thoáng, baïn coù theå xoaù anh ta baèng caùch khai baùo phaùt bieåu sau: Revoke all On * From fred; Taïo moät user coù teân ekhang vôùi password laø 12345678, ñöôïc laøm vieäc treân cô sôû döõ lieäu Test, khoâng caáp quyeàn cho user naøy, baïn coù theå khai baùo nhö sau: Grant usage On Test.* To ekhang identified by ‘12345678’; Töông töï nhö vaäy, trong tröôøng hôïp baïn muoán caáp moät soá quyeàn cho user coù teân ekhang treân cô sôû döõ lieäu Test, baïn coù theå khai baùo nhö sau: Grant select, insert, delete, update, index, drop On Test.* To ekhang; Neáu baïn muoán xoaù bôùt moät soá quyeàn cuûa user coù teân ekhang treân cô sôû döõ lieäu Test, baïn coù theå khai baùo nhö sau: Revoke update, delete, drop On Test.* From ekhang; Nhöng trong tröôøng hôïp xoaù taát caû caùc quyeàn cuûa user coù teân ekhang treân cô sôû döõ lieäu Test, baïn coù theå khai baùo: Revoke All On Test.* From ekhang; Giaùo vieân: Phaïm Höõu Khang
  • 87. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 4. KIEÅU DÖÕ LIEÄU CUÛA CÔ SÔÛ DÖÕ LIEÄU MYSQL Tröôùc khi thieát keá cô sôû döõ lieäu treân MySQL, baïn caàn phaûi tham khaûo moät soá kieåu döõ lieäu thöôøng duøng, chuùng bao goàm caùc nhoùm nhö: numeric, date and time vaø string. Ñeàu caàn löu yù trong khi thieát keá cô sôû döõ lieäu, baïn caàn phaûi xem xeùt kieåu döõ lieäu cho moât coät trong Table sao cho phuø hôïp vôùi döõ lieäu cuûa theá giôùi thöïc. Ñieàu naøy coù nghóa laø khi choïn döõ lieäu cho coät trong Table, baïn phaûi xem xeùt ñeán loaïi döõ lieäu caàn löu tröõ thuoäc nhoùm kieåu döõ lieäu naøo, chieàu daøi cuõng nhö caùc raøng buoäc khaùc, nhaèm khai baùo cho phuø hôïp. 4.1. Loaïi döõ lieäu numeric Kieåu döõ lieäu numeric bao goàm kieåu soá nguyeân trình baøy trong baûng 8-3 vaø kieåu soá chaám ñoäng, trong tröôøng hôïp döõ lieäu kieåu daáu chaám ñoäng baïn caàn phaûi chæ roõ bao nhieàu soá sau ñaáu phaàn leû nhö trong baûng 8-4. Baûng 8-3: Kieåu döõ lieäu soá nguyeân ---------------------------------------------- Loaïi Range Bytes Dieãn giaûi ---------------------------------------------- tinyint -127->128 1 Soá nguyeân raát nhoû. hay 0..255 smallint -32768 2 Soá nguyeân nhoû. ->32767 hay 0..65535 mediumint -8388608 3 Soá nguyeân vöøa. -> 838860 hay 0..16777215 int -231 ->231 -1 4 Soá nguyeân. hay 0..232 -1 bigint -263 ->263 -1 8 Soá nguyeân lôùn. hay 0..264 -1 ---------------------------------------------- Baûng 8-4: Kieåu döõ lieäu soá chaám ñoäng ---------------------------------------------- Loaïi Range Bytes Dieãn giaûi ---------------------------------------------- float phuï thuoäc Soá thaäp phaân Soá thaäp daïng Single hay Phaân Double. Float(M,D) 4 Soá thaäp phaân ±1.175494351E-38 daïng Single. ±3.40282346638 Double(M,D) 8 Soá thaäp phaân daïng Double. ±1.7976931348623157308 ±2.2250738585072014E-308 Giaùo vieân: Phaïm Höõu Khang
  • 88. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Float(M[,D]) Soá chaám ñoäng löu döôùi daïng char. ---------------------------------------------- 4.2. 4.3. Loaïi döõ lieäu Datet and Time Kieåu döõ lieäu Date and Time cho pheùp baïn nhaäp lieäu döôùi daïng chuoãi hay daïng soá nhö trong baûng 8-5. Baûng 8-5: Kieåu döõ lieäu soá nguyeân ---------------------------------------------- Loaïi Range Dieãn giaûi ---------------------------------------------- Date 1000-01-01 Date trình baøy döôùi daïng yyyy-mm-dd. Time -838:59:59 Time trình baøy döôùi 838:59:59 daïng hh:mm:ss. DateTime 1000-01-01 Date vaø Time trình baøy döôùi 00:00:00 daïng yyyy-mm-dd hh:mm:ss. 9999-12-31 23:59:59 TimeStamp[(M)] 1970-01-01 TimeStamp trình baøy döôùi 00:00:00 daïng yyyy-mm-dd hh:mm:ss. Year[(2|4)] 1970-2069 Year trình baøy döôùi 1901-2155 daïng 2 soá hay 4 soá. ---------------------------------------------- Ñoái vôùi kieåu döõ lieäu TimeStamp, baïn coù theå ñònh daïng nhieàu caùch nhö trình baøy trong baûng 8- 6. Baûng 8-6: Trình baøy ñaïi dieän cuûa TimeStamp ---------------------------------------------- Loaïi Hieån thò ---------------------------------------------- TimeStamp YYYYMMDDHHMMSS TimeStamp(14) YYYYMMDDHHMMSS TimeStamp(12) YYMMDDHHMMSS TimeStamp(10) YYMMDDHHMM TimeStamp(8) YYYYMMDD TimeStamp(6) YYMMDD TimeStamp(4) YYMM TimeStamp(2) YY ---------------------------------------------- Loaïi döõ lieäu String Kieåu döõ lieäu String chia laøm ba loaïi, loaïi thöù nhaát nhö char (chieàu daøi coá ñònh) vaø varchar (chieàu daøi bieán thieân). Char cho pheùp baïn nhaäp lieäu döôùi daïng chuoãi vôùi chieáu daøi lôùn nhaát baèng chieàu daøi baïn ñaõ ñònh nghóa, nhöng khi truy caäp döõ lieäu treân Field coù khai baùo daïng naøy, baïn caàn phaûi xöû lyù khoaûng traéng. Ñieàu naøy coù nghóa laø neáu khai baùo chieàu daøi laø 10, nhöng baïn chæ nhaäp hcuoãi 4 kyù töï, MySQL löu tröõ trong boä nhôù chieàu daøi 10. Giaùo vieân: Phaïm Höõu Khang
  • 89. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Ngöôïc laïi vôùi kieåu döõ lieäu Char laø Varchar, chieàu daøi lôùn haát ngöôøi duøng coù theå nhaäp vaøo baèng chieàu daøi baïn ñaõ ñònh nghóa cho Field naøy, boä nhôù chæ löu tröõ chieàu daøi ñuùng vôùi chieàu daøi cuûa chuoãi baïn ñaõ nhaäp. Nhö vaäy, coù nghóa laø neáu baïn khai baùo kieåu varchar 10 kyù töï, nhöng baïn hcæ nhaäp 5 kyù töï, MySQL chæ löu tröõ chieàu daøi 5 kyù töï, ngoaøi ra, khi baïn truy caäp ñeán Field coù kieåu döõ lieäu naøy, baïn khoâng caàn phaûi giaûi quyeát khoaûng traéng. Loaïi thöù hai laø Text hay Blob, Text cho pheùp löu chuoãi raát lôùn, Blob cho pheùp löu ñoái töôïng nhò phaân. Loaïi thöù 3 laø Enum vaø Set. Baïn coù theå tham khaûo caû ba loaïi treân trong baûng 8-7. Baûng 8-7: Kieåu döõ lieäu String ---------------------------------------------- Loaïi Range Dieãn giaûi ---------------------------------------------- char 1-255 Chieàu daøi cuûa chuoãi lôùn nhaát characters 255 kyù töï. varchar 1-255 Chieàu daøi cuûa chuoãi lôùn nhaát characters 255 kyù töï (characters). tinyblob 28 -1 Khai baùo cho Field chöùa kieåu ñoái töôïng nhò phaân côû 255 characters. tinytext 28 -1 Khai baùo cho Field chöùa kieåu chuoãi côû 255 characters. blob 216 -1 Khai baùo cho Field chöùa kieåu blob côû 65,535 characters.. text 216 -1 Khai baùo cho Field chöùa kieåu chuoãi daïng vaên baûn côû 65,535 characters. Mediumblob 224 -1 Khai baùo cho Field chöùa kieåu blob vöøa khoaûng 16,777,215 characters. Mediumtext 224 -1 Khai baùo cho Field chöùa kieåu chuoãi daïng vaên baûn vöøa khoaûng 16,777,215 characters. Longblob 232 -1 Khai baùo cho Field chöùa kieåu blob lôùn khoaûng 4,294,967,295 characters. Longtext 232 -1 Khai baùo cho Field chöùa kieåu chuoãi daïng vaên baûn lôùn khoaûng 4,294,967,295 characters. ---------------------------------------------- 5. PHAÙT BIEÅU SQL MySQL laø moät heä thoáng quaûn lyù cô sôû döõ lieäu quan heä (RDBMS) hay coøn ñöôïc goïi laø Relational Database Management System. RDBMS laø moät trong nhöõng moâ hình cô sôû döõ lieäu quan heä thoâng duïng hieän nay. Giaùo vieân: Phaïm Höõu Khang
  • 90. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 5.1. 5.2. 5.2.1. Nhoùm phaùt bieåu SQL Nhö ñaõ trình baøy trong chöông 3, haàu heát saûn phaåm cô sôû döõ lieäu quan heä hieän nay ñeàu döïa treân chuaån cuûa SQL vaø ANSI-SQL, chaúng haïn nhö SQL Server, Oracle, PostgreSQL vaø MySQL. Ñieàu naøy coù nghóa laø taát caû nhöõng cô sôû döõ lieäu quan heä ñeàu phaûi coù nhöõng tieâu chuaån theo cuù phaùp SQL vaø MySQL cuõng khoâng phaûi laø ngoaïi leä. Ngoân ngöõ SQL chia laøm 4 loaïi sau: DDL (Data Definition Language): Ngoân ngöõ ñònh nghóa döõ lieäu, duøng ñeå taïo cô sôû döõ lieäu, ñònh nghóa caùc ñoái töôïng cô sôû döõ lieäu nhö Table, Query, Views hay caùc ñoái töôïng khaùc. DML (Data Manipulation Language): Ngoân ngöõ thao taùc döõ lieäu, duøng ñeå thao taùc döõ lieäu, chaúng haïn nhö caùc phaùt bieåu: Select, Inert, Delete, Update, ... DCL: (Data Control Language): Ngoân ngöõ söû duïng truy caäp ñoái töôïng cô sôû döõ lieäu, duøng ñeå thay ñoåi caáu truùc, taïo ngöôøi duøng, gaùn quyeàn chaúng haïn nhö: Alter, Grant, Revoke, ... TCL: (Transaction Control Language): Ngoân söû duïng ñeå khai baùo chuyeån taùc chaúng haïn nhö: Begin Tran, Rollback, Commit, ... Phaùt bieåu SQL thao taùc döõ lieäu Phaùt bieåu SQL bao goàm caùc loaïi nhö sau: SELECT (Truy vaán maåu tin). INSERT (Theâm maåu tin). UPDATE (Caäp nhaät döõ lieäu). DELETE (Xoaù maåu tin). Khaùi nieäm cô baûn veà Select Phaùt bieåu Select duøng ñeå truy vaán döõ lieäu töø moät hay nhieàu baûng khaùc nhau, keát quaû traû veà laø moät taäp maåu tin thoaõ caùc ñieàu kieän cho tröôùc neáu coù, cuù phaùp cuûa phaùt bieåu SQL daïng SELECT: SELECT <danh saùch caùc coät> [FROM <danh saùch baûng>] [WHERE <caùc ñieàu kieän raøng buoäc>] [GROUP BY <teân coät / bieåu thöùc trong SELECT> ] [HAVING <ñieàu kieän baét buoäc cuûa GROUP BY>] [ORDER BY <danh saùch coät>] [LIMIT FromNumber | ToNumber] Danh saùch caùc coät: Khai baùo caùc teân coät, bieåu thöùc keát hôïp giöõa caùc coät cuûa Table baïn caàn truy luïc. Trong tröôøng hôïp coù hai coät cuøng teân cuûa hai Table trong phaùt bieåu, baïn caàn phaûi chæ ñònh teân Table ñi tröôùc. Chaúng haïn, nhö ví duï 8-1. Ví duï 8-1: Phaùt bieåu SELECT Select ItemID,ItemName From tblItems Where Cost>100; Select tblOrders.OrderID,OrderDate,ItemID,Qtty From tblOrders,tblOrderDetails Where tblOrders.OrderID = _ tblOrderDetail.OrderID; Giaùo vieân: Phaïm Höõu Khang
  • 91. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 5.2.2. Phaùt bieåu SELECT vôùi meänh ñeà FROM Phaùùt bieåu SQL daïng SELECT laø moät trong nhöõng phaùt bieåu yeâu caàu MySQL truy luïc döõ lieäu treân cô sôû döõ lieäu chæ ñònh. SELECT duøng ñeå ñoïc thoâng tin töø cô sôû döõ lieäu theo nhöõng tröôøng quy ñònh, hay nhöõng bieåu thöùc cho tröôøng ñoù. Meänh ñeà FROM chæ ra teân moät baûng hay nhöõng baûng coù quan heä caàn truy vaán thoâng tin. Thöôøng chuùng ta söû duïng coâng cuï MySQL-Front | Query ñeå thöïc thi phaùt bieåu SQL. Sau khi thöïc thi phaùt bieåu SQL, keát quaû traû veà soá maåu tin vaø toång soá maåu tin ñöôïc laáy ra töø baûng. Daáu * cho pheùp loïc maåu tin vôùi taát caû caùc tröôøng trong baûng, neáu muoán chæ roõ nhöõng tröôøng naøo caàn loïc baïn caàn neâu teân cuï theå nhöõng tröôøng ñoù. Ñeå tieän tham khaûo trong giaùo trình naøy chuùng toâi söû duïng moät phaàn cô sôû döõ lieäu coù saün cuûa MySQL, ñoàng thôøi boå sung theâm cô sôû döõ lieäu daønh cho öùng duïng baùn haøng qua maïng. Cô sôû döõ lieäu baùn haøng qua maïng coù teân laø Test, vaø bao goàm nhieàu baûng. Baèng phaùt bieåu SELECT chuùng ta coù theå bieát soá baûng hay ñoái töôïng khaùc ñang coù trong cô sôû döõ lieäu Test Ví duï 8-2: Thöïc thi phaùt bieåu SQL SELECT heä thoáng show tables from Test /* Hieån thò taát caû teân baûng cuûa cô sôû döõ lieäu hieän haønh */ Keát quaû traû veà danh saùch baûng nhö sau: TABLES_IN_TEST -------------------------------------- tblCountries tblProvinces tblAuthors tblPayment tblItemsion tblCustomers tblSoftware Ghi chuù: Baïn coù theå söû duïng phaùt bieåu SQL treân ñeå hieån thò nhöõng ñoái töôïng trong cô sôû döõ lieäu, baèng caùch thay theá caùc tham soá vaø ñieàu kieän. Cuù phaùp ñôn giaûn Select * From tablename /* Loïc taát caû soá lieäu cuûa taát caû caùc coät (field) cuûa tablename*/ Select field1,field2 From tablename /* Loïc taát caû soá lieäu cuûa 2 field: field1, field2 cuûa tablename*/ Select * From tablename Limit 0,10 /* Loïc top 10 maåu tin ñaàu tieân cuûa taát caû caùc field cuûa tablename*/ Select field1, field2 From tablename Limit 0,10 /* Loïc top 10 maåu tin ñaàu tieân cuûa 2 fields field1, field2 cuûa Giaùo vieân: Phaïm Höõu Khang
  • 92. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM tablename*/ Ví duï 8-3: phaùt bieåu phaùt bieåu SQL daïng Select Select * From tblCountries /* Lieät keâ taát caû caùc quoác gia trong baûng tblCountries hoaëc baïn coù theå lieät keâ teân nhö phaùt bieåu sau */ Select CountryName From tblCountries Keát quaû traû veà nhö sau: CountryCode CountryName -------- ---------- ------------ ------------- VNA Vietnam SNG Singapore USS United Stated UKD United Kingdom GER Germany CAM Cambodia THA Thai Land MAL Malaysia INC Indonesia CHN China 5.2.3. Phaùt bieåu SQL daïng SELECT vôùi meänh ñeà Where Khi baïn duøng meänh ñeà WHERE ñeå taïo neân tieâu chuaån caàn loïc maåu tin theo tieâu chuaån ñöôïc ñònh nghóa, thoâng thöôøng WHERE duøng coät (tröôøng) ñeå so saùnh vôùi giaù trò, coät khaùc, hay bieåu thöùc chöùa coät (tröôøng) baát kyø coù trong baûng. Phaùt bieåu SQL daïng Select vôùi meänh ñeà Where cuù phaùp coù daïng nhö sau: Select * from tablename where conditions Select field1, field2, field3 from tablename where conditions Vôùi conditions trong caû hai phaùt bieåu treân ñöôïc ñònh nghóa ñieàu kieän truy vaán nhö khai baùo sau: Select * From tablename where field1>10 select * from tblCountries where CountryCode in('VNA','CHN') Caùc pheùp toaùn so saùnh trong conditions bao goàm: ♦ > : lôùn hôn where Amount > 100000; ♦ < : nhoû hôn where Amount < 100000; ♦ >= : lôùn hôn hoaëc baèng where Amount >= 100000; ♦ >= : nhoû hôn hoaëc baèng where Amount <= 100000; ♦ = : baèng where CustID=’12'; Giaùo vieân: Phaïm Höõu Khang
  • 93. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM ♦ != : Khaùùc where CustID!='12'; ♦ <> : Khaùc where CustID<>'12'; Caùc pheùp toaùn logic coù theå söû duïng trong conditions ♦ and : Pheùp toaùn "and" SELECT * FROM tblOrders Where Amount!>100000 And CustID='12'; ♦ Or : Pheùp toaùn "or" SELECT * FROM tblOrderDetails Where Amount!>100000 Or CustID=‘12’; ♦ Not : Pheùp toaùn phuû ñònh (not) SELECT * FROM tblOrders where OrderDate is not null; ♦ Not in : Pheùp toaùn phuû ñònh (not in) SELECT * FROM tblOrders where OrderID not in (‘12’,’15’); ♦ Between: Keát quaû thuoäc trong mieàn giaù trò SELECT * FROM tblOrders Where Amount between 10 And 500; ♦ Like : Pheùp toaùn so saùnh gaàn gioáng, söû duïng daáu % ñeå theå hieän thay theá baèng kyù töï ñaïi dieän SELECT * FROM tblCustomers where CustName like '%A'; ♦ Not Like : Pheùp toaùn phuû ñònh so saùnh gaàn gioáng, söû duïng daáu % ñeå theå hieän thay theá baèng kyù töï ñaïi dieän SELECT * FROM tblCustomers where CustName not like '%A'; ♦ IN : Pheùp toaùn so saùnh trong moät taäp hôïp SELECT * FROM tblOrders Where OrderID in ('100','200','300'); Ví duï 8-5: Ví duï veà SQL daïng SELECT vaø Where Giaùo vieân: Phaïm Höõu Khang
  • 94. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM /* > : lôùn hôn */ Select * From tblOrders Where Amount > 100000; /* < : nhoû hôn */ Select * From tblOrders Where Amount < 100000; /* >=: lôùn hôn hoaëc baèng */ Select * From tblOrders Where Amount >= 100000; /* >=: nhoû hôn hoaëc baèng */ Select * From tblOrders Where Amount <= 100000; /* = : baèng */ Select * From tblOrders Where CustID=‘12’; /* != :Khaùùc */ Select * From tblOrders Where CustID !=‘12’; /* <>: Khaùc */ Select * From tblOrders Where CustID <>‘12’; /* !> : Khoâng lôùn hôn */ Select * From tblOrders Where Amount !> 100000; /* !< : Khoâng nhoû hôn */ Select * From tblOrders Where Amount !< 100000; -- Caùc pheùp toaùn logic /* and : Pheùp toaùn vaø */ Select * From tblOrders Giaùo vieân: Phaïm Höõu Khang
  • 95. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Where Amount !>100000 And CustID=‘12’; /* Or : Pheùp toaùn hoaëc */ Select * From tblOrders Where Amount !>100000 Or CustID=‘12’; /* Not : Pheùp toaùn phuû ñònh */ Select * From tblOrders Where OrderDate is NOT NULL; /* Between: giaù trò naèm trong mieàn */ Select * From tblOrders Where Amount Between 10 and 500; /* Like : Pheùp toaùn so saùnh gaàn gioáng, söû duïng daáu % ñeå theå hieän thay theá baát kyø kyù töï */ Select * From tblOrders Where Descriion like '%A' Or CustID ='152'; /* Not Like : Pheùp toaùn phuû ñònh so saùnh gaàn gioáng, söû duïng daáu % ñeå theå hieän thay theá baát kyø kyù töï */ Select * From tblOrders Where Descriion not like '%A' Or CustID ='152'; /* IN: Pheùp toaùn so saùnh trong moät taäp hôïp */ Select * From tblOrders Where OrderID in ('134','244','433'); /* Not IN : Pheùp toaùn phuû ñònh so saùnh trong moät taäp hôïp */ Select * From tblOrders Where OrderID not in ('134','244','433'); Giaùo vieân: Phaïm Höõu Khang
  • 96. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 5.2.4. Meänh ñeà Order by Thoâng thöôøng, trong khi truy vaán maåu tin töø baûng döõ lieäu, keát quaû hieån thò caàn saép xeáp theo chieàu taêng hay giaûm döïa treân kyù töï ALPHABET. Nhöng baïn cuõng coù theå saép xeáp theo moät tieâu chuaån baát kyø, chaúng haïn nhö bieåu thöùc. Khi saép xeáp döõ lieäu trình baøy trong keát quaû, caàn phaûi choïn tröôøng hay bieåu thöùc theo traät töï taêng daàn hoaëc giaûm daàn. Cuù phaùp cho meänh ñeà ORDER BY cuøng vôùi traïng thaùi taêng hay giaûm, öùng vôùi ASC saép xeáp taêng daàn, DESC giaûm daàn. Cuù phaùp coù daïng nhö sau: Order by columnname DESC Order by columnname1 + columnname2 DESC Order by columnname ASC Order by columnname1 ASC, columnname2 DESC Ví duï 8-6: SELECT vôùi meänh ñeà Order by DESC /*-- Giaûm daàn theo thôøi gian */ Select OrderID , OrderDate, CustID, Amount From tblOrders Where Amount >1000 Order by OrderDate DESC Keát quaû traû veà nhö sau: OrderID OrderDate CustID Amount ---------- ------------ ---------------------- 17 2001-09-20 12 178.243 18 2001-09-20 12 2.78534 16 2001-09-19 12 398.798 15 2001-09-18 12 5.758.876 14 2001-09-17 12 5.539.647 12 2001-09-16 12 1.330 13 2001-09-16 12 1.585.563 31 2001-09-16 13 459.525 11 2001-09-15 11 1.401.803 28 2001-09-15 13 1.45200 Ví duï 8-7: SQL daïng SELECT vôùi meänh ñeà Order by vaø ASC /*-- Taêng daàn theo thôøi gian */ Select OrderID , OrderDate, CustID, Amount From tblOrders Where Amount >1000 Order by OrderDate ASC Keát quaû traû veà nhö sau OrderID OrderDate CustID Amount ---------- --------------------------- -------- 01 2001-09-05 10 2.903.576 02 2001-09-05 10 48.168.567 03 2001-09-05 10 5.107.032 04 2001-09-08 10 2.355.537 05 2001-09-08 16 1.817.487 06 2001-09-10 16 26.000 19 2001-09-10 12 575.667 Giaùo vieân: Phaïm Höõu Khang
  • 97. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 29 2001-09-10 13 466.500 07 2001-09-11 16 186.782 23 2001-09-11 12 459.162 Neáu muoán saép xeáp theo nhieàu coät (tröôøng), chæ caàn söû duïng daáu phaåy (,) ñeå phaân caùch caùc coät. Ví duï 8-7: SELECT vôùi meänh ñeà Order by vôùi 2 coät döõ lieäu Select OrderID , OrderDate, CustID, Amount From tblOrders Where Amount >1000 Order by OrderID,CustID DESC Keát quaû traû veà nhö sau: OrderID OrderDate CustID Amount ---------- --------------------------- -------- 31 2001-09-16 13 459.525 30 2001-09-15 13 153.120 29 2001-09-10 13 466.500 28 2001-09-15 13 145.200 27 2001-09-14 13 603.033 26 2001-09-13 13 230.000 25 2001-09-11 13 244.904 24 2001-09-12 13 1.367.228 23 2001-09-11 12 459.162 19 2001-09-10 12 575.667 Neáu muoán saép xeáp theo nhieàu tröôøng keát hôïp, chæ caàn duøng thöù töï töøng coät caùch nhau baèng daáu +. Ví duï 8-8: SELECT vôùi meänh ñeà Order by hôïp 2 coät /*-- Giaûm daàn theo soá OrderID vaø CustID */ Select OrderID , OrderDate, CustID, Amount From tblOrders Where Amount >1000 Order by OrderID + CustID DESC Keát quaû traû veà nhö sau: OrderID OrderDate CustID Amount ---------- --------------------------- -------- 31 2001-09-16 13 459.525 30 2001-09-15 13 153.120 29 2001-09-10 13 466.500 28 2001-09-15 13 145.200 27 2001-09-14 13 603.033 26 2001-09-13 13 230.000 25 2001-09-11 13 244.904 24 2001-09-12 13 1.367.228 23 2001-09-11 12 459.162 19 2001-09-10 12 575.667 Neáu trong phaùt bieåu SQL daïng SELECT coù nhieàu baûng keát hôïp laïi vôùi nhau, baïn coù theå duøng theâm teân baûng öùng vôùi coät cuûa baûng ñoù. Phaàn naøy seõ ñöôïc dieãn giaûi cuï theå hôn trong phaàn keá tieáp (JOIN -Pheùp hôïp). Giaùo vieân: Phaïm Höõu Khang
  • 98. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 5.2.5. SQL daïng SELECT vôùi meänh ñeà GROUP BY Khi truy vaán maåu tin treân moät hay nhieàu baûng döõ lieäu, thoâng thöôøng coù nhöõng nghieäp vuï thuoäc tröôøng naøo ñoù coù cuøng giaù trò, ví duï khi hieån thò hôïp ñoàng phaùt sinh trong thaùng, keát quaû seõ coù nhieàu hôïp ñoàng cuûa khaùch haøng laëp ñi laëp laïi nhö ví duï 8-9. Ví duï 8-9: SQL daïng SELECT vôùi meänh ñeà Order by Select CustID, Amount from tblOrders Vôùi phaùt bieåu treân keát quaû traû veà nhö sau: CustID Amount ---------- ------------------------ 10 2.903.576 10 48.168.567 10 5.107.032 10 2.3555347 16 181.074.847 16 26.000 16 1.867.682 16 3.600.000 16 195.713.899 16 961.804.228 16 140.180.347 12 138 12 158.555.638 12 5.539.647 12 575.887.767 12 39.879.489 12 17.824.938 12 278.503.048 12 5.756.667 12 459.162 13 136.727.628 13 244.904 13 230.000 13 603.033 13 1.452.000 13 4.665.100 13 1.531.200 13 459.525 Trong baùo caùo chuùng ta laïi caàn phaûi bieát moãi khaùch haøng coù bao nhieâu laàn traû tieàn, toång soá tieàn cuûa moãi khaùch haøng ñaõ traû laø bao nhieâu? Ñeå laøm ñieàu naøy, chuùng ta söû duïng meänh ñeà GROUP BY trong phaùt bieåu SQL daïng SELECT cuøng vôùi moät soá haøm trong MySQL, baïn tham khaûo ví duï 8-10 ñöôïc trình baøy chi tieát töø ví duï 4-8 nhöng nhoùm maåu tin baèng meänh ñeà Group By. Ví duï 8-10: SQL daïng SELECT vôùi meänh ñeà Group By Select CustID, count (CustID), Sum(Amount) From tblOrders Group by CustID Order by CustID Keát quaû traû veà nhö sau: Giaùo vieân: Phaïm Höõu Khang
  • 99. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM CustID ---------- ---- ------------------- 16 7 2.956.562.368 12 9 3.843.022.604 13 8 145.913.378 10 4 72.382.804 5.3. 5.3.1. Caùc haøm thoâng duïng trong MySQL Caùc haøm trong phaùt bieåu GROUB BY Haøm AVG: Haøm traû veà giaù trò bình quaân cuûa coät hay tröôøng trong caâu truy vaán, ví duï nhö phaùt bieåu sau: Select AVG(Amount) From tblOrders Haøm MIN: Haøm traû veà giaù trò nhoû nhaát cuûa coät hay tröôøng trong caâu truy vaán, ví duï nhö phaùt bieåu sau: Select Min(Amount) From tblOrders Haøm MAX: Haøm traû veà giaù trò lôùn nhaát cuûa coät hay tröôøng trong caâu truy vaán, ví duï nhö caùc phaùt bieåu sau: Select Max(Amount) From tblOrders Haøm Count: Haøm traû veà soá löôïng maåu tin trong caâu truy vaán treân baûng, ví duï nhö caùc phaùt bieåu sau: Select count(*) From tblOrders Select count(CustID) From tblOrders Select count(*) From tblOrderDetails Haøm Sum: Haøm traû veà toång caùc giaù trò cuûa tröôøng, coät trong caâu truy vaán, ví duï nhö caùc phaùt bieåu sau: Select sum(Amount) From tblOrders Chaúng haïn, baïn coù theå tham khaûo dieãn giaûi toaøn boä caùc haøm duøng trong meänh ñeà GROUP BY. Ví duï 8-11: SQL daïng SELECT vôùi Group By vaø caùc haøm Select CustID, Count (CustID),Sum(Amount), Max(Amount), Min(Amount), Avg(Amount) From tblOrders Group by CustID Giaùo vieân: Phaïm Höõu Khang
  • 100. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Order by CustID Keát quaû traû veà nhö sau: CustID ---------- ----------- ------------------------- 16 7 2956562368 1.95713899 26000 422366052 12 9 3843022604 39879489 459162 427002511 13 8 145913378 1.36727628 230000 18239172.25 10 4 72382804 48168567 2903576 18095701 5.3.2. Caùc haøm xöû lyù chuoãi Haøm ASCII: Haøm traû veà giaù trò maõ ASCII cuûa kyù töï beân traùi cuûa chuoãi, ví duï nhö khai baùo: Select ASCII('TOI') Keát quaû traû veà nhö sau: 84 Haøm Char: Haøm naøy chuyeån ñoåi kieåu maõ ASCII töø soá nguyeân sang daïng chuoãi: Select char(35) Keát quaû traû veà nhö sau: # Haøm UPPER: Haøm naøy chuyeån ñoåi chuoãi sang kieåu chöõ hoaï: Select UPPER('Khang') Keát quaû traû veà nhö sau: KHANG Haøm LOWER: Haøm naøy chuyeån ñoåi chuoãi sang kieåu chöõ thöôøngï: Select LOWER('Khang') Keát quaû traû veà nhö sau: khang Haøm Len: Haøm naøy traû veà chieàu daøi cuûa chuoãi: Select len('I Love You') Keát quaû traû veà nhö sau: 10 Thuû tuïc LTRIM: Thuû tuïc loaïi boû khoaûng traéng beân traùi cuûa chuoãiï: Select ltrim(' Khang') Keát quaû traû veà nhö sau: 'khang' Giaùo vieân: Phaïm Höõu Khang
  • 101. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Thuû tuïc RTRIM: Thuû tuïc loaïi boû khoaûng traéng beân phaûi cuûa chuoãiï: Select ltrim('Khang ') Keát quaû traû veà nhö sau: 'khang' Haøm Left: Haøm traû veà chuoãi beân traùi tính töø ñaàu cho ñeán vò trí thöù n: Select left('Khang',3) Keát quaû traû veà nhö sau: 'Kha' Haøm Right: Haøm traû veà chuoãi beân phaûi tính töø cuoái cho ñeán vò trí thöù n: Select Right('KHang',4) Keát quaû traû veà nhö sau: 'Hang' Haøm Instr: Haøm traû veà vò trí chuoãi baét ñaàu cuûa chuoãi con trong chuoãi xeùt: Select INSTR ('Khang','Pham Huu Khang') Keát quaû traû veà nhö sau: 11 11 laø töông ñöông vò trí thöù 11 cuûa chöõ Khang trong chuoãi "Pham Huu Khang" 5.3.3. Caùc haøm veà xöû lyù thôøi gian Haøm CurDate(): Haøm traû veà ngaøy, thaùng vaø naêm hieän haønh cuûa heä thoáng: Select curdate() as 'Today is’ Keát quaû traû veà nhö sau Today is --------------------------- 2001-11-21 Haøm CurTime(): Haøm traû veà giôø, phuùt vaø giaây hieän haønh cuûa heä thoáng: Select curtime() as 'Time is’ Keát quaû traû veà nhö sau Time is --------------------------- 09:12:05 Haøm Period_Diff: Haøm traû veà soá ngaøy trong khoaûng thôøi gian giöõa 2 ngaøyï: Select Period_diff (OrderDate, getdate()) Giaùo vieân: Phaïm Höõu Khang
  • 102. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM as 'So ngay giua ngay thu tien ñen hom nay:' from tblOrders Keát quaû traû veà nhö sau So ngay giua ngay thu tien ñen hom nay: --------------------------------- 74 72 Haøm dayofmonth: Haøm dayofmonth traû veà ngaøy thöù maáy trong thaùng: Select dayofmonth(curdate()) as 'hom nay ngay Keát quaû traû veà nhö sau: 21 Ngoaøi caùc haøm trình baøy nhö treân, baïn coù theå tìm thaáy nhieàu haøm xöû lyù veà thôøi gian trong phaàn Funtions xuaát hieän beân phaûi maøn hình cuûa trình ñieàu khieån nhö hình 8-6. Hình 8-6: Söû duïng chöùc naêng Funcitons 5.3.4. Caùc haøm veà toaùn hoïc Haøm sqrt: Haøm traû veà laø caên baät hai cuûa moät bieåu thöùc: Select sqrt (4) Keát quaû traû veà laø Giaùo vieân: Phaïm Höõu Khang
  • 103. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 2 Haøm Round: Haøm traû veà laø soá laøm troøn cuûa moät bieåu thöùc: Select round (748.58,-1) Keát quaû traû veà laø 7500 Ñeå tham khaûo theâm moät soá haøm khaùc baïn coù theå tham khaûo trong phaàn Functions nhö hình 8-9. 5.4. Phaùt bieåu SQL daïng Select vôùi AS Khi caàn thieát phaûi thay ñoåi teân tröôøng naøo ñoù trong caâu truy vaán, baïn chæ caàn duøng phaùt bieåu AS. AS cho pheùp aùnh xaï teân cuõ, hay giaù trò chöa coù teân thaønh teân môùi (header). Ví duï, khi söû duïng GROUP BY ôû trong phaàn treân, nhöõng coät taïo ra töø caùc pheùp toaùn count, sum, max, min, ... cho ra keát quaû khoâng coù header, nghóa laø khoâng coù teân coät ñeå tham chieáu trong khi goïi ñeán chuùng. Chuùng ta phaûi caàn phaùt bieåu AS cho nhöõng tröôøng hôïp naøy. Ví duï 4-11: SQL daïng SELECT vôùi AS vaø caùc haøm Select CustID, Count (CustID) as No, Sum(Amount) as TIENHD, Max(Amount) as HDLONNHAT, Min(Amount) as HDNHONHAT, Avg(Amount) as TRUNGBINH From tblOrders Group by CustID Order by CustID Keát quaû hieån thò nhö sau: CustID No TIENHD HDLONNHAT HDNHONHAT TRUNGBINH ---------- ----------- ------------------------ 16 7 2956562368 1.95713899 26000 422366052 12 9 3843022604 39879489 459162 427002511 13 8 145913378 1.36727628 230000 18239172.25 10 4 72382804 48168567 2903576 18095701 5.5. Phaùt bieåu SQL daïng Select vôùi Limit N , M Phaùt bieåu SQL daïng SELECT cho pheùp truy luïc chæ moät soá maåu tin tính töø vò trí thöù n ñeán vò trí thöù m trong Table (theo moät tieâu chuaån hay saép xeáp naøo ñoù). Ñeå laøm ñieàu naøy, trong phaùt bieåu SQL daïng SELECT baïn duøng chæ ñònh töø khoaù LIMIT vôùi soá löôïng maåu tin caàn laáy töø vò trí thöù n ñeán m. Chaúng haïn, trong tröôøng hôïp baïn khai baùo Select * from tblOrders limit 0,10. Keát quaû seõ traû veà 10 maåu tin ñaàu tieân trong baûng tblOrders. Baïn cuõng coù theå söû duïng keát hôïp LIMIT vôùi caùc meänh ñeà nhö WHERE, ORDER BY nhaèm taïo ra keát quaû nhö yù muoán. Do yeâu caàu khaùc nhau thoâng qua phaùt bieåu SQL daïng SELECT coù söû duïng LIMIT, nghóa laø keát quaû traû veà soá löôïng 10 maåu tin ñaàu tieân vôùi taát caû caùc coät trong baûng tblOrders Ví duï 8-12: Phaùt bieåu SQL daïng SELECT vôùi Limit N,M Giaùo vieân: Phaïm Höõu Khang
  • 104. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Select * From tblOrders Limit 0,10 Keát quaû traû veà nhö sau: OrderID OrderDate CustID Amount ---------- --------------------------- ------- 01 2001-09-05 10 2903576 02 2001-09-05 10 48168567 03 2001-09-05 10 5107032 04 2001-09-08 10 2.3555347 05 2001-09-08 16 1.81074847 06 2001-09-10 16 26000 07 2001-09-11 16 1867682 08 2001-09-12 16 3600000 09 2001-09-13 16 1.95713899 10 2001-09-14 16 9.61804228 Neáu muoán loïc ra 10 hôïp ñoàng coù soá tieàn nhieàu nhaát, baïn chæ caàn söû duïng saép xeáp theo coät TotalAmount hay Amount trong baûng tblOrders. Ví duï 8-13: Phaùt bieåu SQL daïng SELECT vôùi Limit N,M Select OrderID,OrderDate,CustID,Amount From tblOrders Order by Amount Desc Limit 0,10 Keát quaû traû veà nhö sau: OrderID OrderDate CustID Amount ---------- --------------------------- ------- 06 2001-09-10 16 26000 26 2001-09-13 13 230000 25 2001-09-11 13 244904 23 2001-09-11 12 459162 31 2001-09-16 13 459525 27 2001-09-14 13 603033 28 2001-09-15 13 1452000 30 2001-09-15 13 1531200 07 2001-09-11 16 1867682 01 2001-09-05 10 2903576 Neáu muoán loïc ra 10 saûn phaåm coù soá löôïng baùn nhieàu nhaát, baïn chæ caàn söû duïng saép xeáp theo coät soá löôïng Qtty. Ví duï 8-14: Phaùt bieåu SQL daïng Select vôùi Limit N,M Select ItemID,Qtty,Price,Amount from tblOrderDetails Where Amount>10 order by Qtty Limit 0,10 Keát quaû traû veà nhö sau: ItemID Qtty Price Amount --------------------------------------------- 1 900 12000 12960000 Giaùo vieân: Phaïm Höõu Khang
  • 105. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 2 1000 12000 14400000 3 5000 12000 72000000 3 6000 12000 86400000 4 8000 12000 15200000 4 8000 12000 15200000 4 8000 10000 15200000 5 9000 12000 29600000 5 9000 12000 129600000 5 9000 12000 129600000 5.6. Phaùt bieåu SQL daïng SELECT vôùi DISTINCT Neáu coù moät hay nhieàu baûng keát noái vôùi nhau, seõ xaûy ra truøng laëp nhieàu maåu tin. Nhöng trong tröôøng hôïp naøy baïn chæ caàn laáy ra moät maåu tin trong taäp maåu tin truøng laëp, baïn söû duïng phaùt bieåu SQL daïng SELECT vôùi chæ ñònh DISTINCT. Ví duï 8-14: Phaùt bieåu SQL daïng SELECT Select ItemID,Qtty,Price,Amount from tblOrderDetails order by Qtty Keát quaû traû veà nhö sau: ItemID Qtty Price Amount ---------------------------------------------- 1 900 12000 12960000 2 1000 12000 14400000 3 5000 12000 72000000 3 6000 12000 86400000 4 8000 12000 115200000 4 8000 12000 115200000 4 8000 10000 115200000 5 9000 12000 129600000 5 9000 12000 129600000 5 9000 12000 129600000 ... ... Ví duï 8-15: Phaùt bieåu SQL daïng SELECT vôùi DISTINCT Select Distinct ItemID,Qtty,Price,Amount From tblOrderDetails Order by Qtty Keát quaû loaïi boû nhöõng maåu tin truøng laép nhö sau: ItemID Qtty Price Amount ---------------------------------------------- 1 900 12000 12960000 2 1000 12000 14400000 3 6000 12000 86400000 4 8000 12000 115200000 5 9000 12000 129600000 ... ... ... Giaùo vieân: Phaïm Höõu Khang
  • 106. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 5.7. 5.7.1. Nhaäp döõ lieäu baèng phaùt bieåu SQL daïng Insert Khi caàn theâm maåu tin vaøo baûng trong cô sôû döõ lieäu MySQL, baïn coù nhieàu caùch ñeå thöïc hieän coâng vieäc naøy. Trong Visual Basic 6.0, VB.NET, C Sharp hay Java coù nhöõng phöông thöùc ñeå theâm maåu tin vaøo baûng trong cô sôû döõ lieäu. Tuy nhieân, ñeå söû duïng caùc phaùt bieåu SQL mang tính chuyeân nghieäp trong MySQL, baïn caàn söû duïng phaùt bieåu INSERT. Baïn coù theå söû duïng phaùt bieåu Insert ngay treân öùng duïng keát noái vôùi MySQL. Trong tröôøng hôïp baïn söû duïng cô sôû döõ lieäu SQL Server hay Oracle, baïn coù theå taïo ra moät Stored Procedure vôùi muïc ñích INSERT döõ lieäu vaøo baûng chæ ñònh tröôùc. Khi theâm döõ lieäu, caàn chuù yù kieåu döõ lieäu gioáng hoaëc töông öùng kieåu döõ lieäu ñaõ khai baùo cuûa coät ñoù, neáu khoâng phuø hôïp thì loãi seõ phaùt sinh. Ngoaøi ra baïn caàn quan taâm ñeán quyeàn cuûa User ñang truy caäp cô sôû döõ lieäu. User phaûi ñöôïc caáp quyeàn Insert döõ lieäu vaøo töøng baûng cuï theå (quyeàn naøy do nhaø quaûn trò cô sôû döõ lieäu phaân quyeàn cho User ñoù). Trong phaùt bieåu INSERT INTO chuùng toâi thöïc hieän treân baûng tblOrderDetails vaø baûng tblOrderDetailsHist, hai baûng naøy coù caáu truùc nhö sau: /* Baûng tblOrderDetails*/ 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' ); /* Baûng tblOrderDetailsHist, duøng ñeå chöùa caùc thoâng tin hôïp ñoàng chi tieát khi hôïp ñoàng cuûa khaùch haøng naøy keát thuùc, chöông trình töï ñoäng xoaù trong tblOrderDetails vaø lö tröõ laïi trong baûng tblOrderDetailsHist.*/ CREATE TABLE tblorderdetailshist ( 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' ); Khi Insert döõ lieäu vaøo baûng, coù 3 tröôøng hôïp xaûy ra: insert döõ lieäu vaøo baûng töø caùc giaù trò cuï theå, insert vaøo baûng laáy giaù trò töø moät hay nhieàu baûng khaùc, vaø cuoái cuøng laø keát hôïp caû hai tröôøng hôïp treân. Insert vaøo baûng laáy giaù trò cuï theå: INSERT INTO <Tablename>[<columnname list>] Values (data_value) Ví duï 8-16: INSERT döõ lieäu vaøo baûng töø giaù trò cuï theå Giaùo vieân: Phaïm Höõu Khang
  • 107. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM /* Theâm maåu tin vôùi moät soá coät */ INSERT INTO TBLCUSTOMERS (CustName,Username,Password, Address,Tel,FaxNo,Email,Contact, CountryCode,ProvinceCode) Values ('Khach San CENTURY', ‘century’, ’1111’,’5 Le Loi’,’8676767’,’8767676’, ‘century@yahoo.com’,’Hoang Anh’, ‘VNA’,’HCM’) /* Theâm maåu tin vôùi moät soá coät */ INSERT INTO TBLORDERS(OrderID,OrderDate, CustID,Description,Amount) Values ('11',curdate(),’1', 'Dat hang qua mang', 20000) 5.7.2. Insert vaøo baûng laáy giaù trò töø baûng khaùc: INSERT INTO <Tablename1>[<columnname list>] Select [columnname list] From <Tablename2> Where <Conditions> Ví duï 8-17: INSERT vaøo baûng töø giaù trò cuûa baûng khaùc /* Theâm maåu tin vôùi caùc coät cuï theå */ /* Chuyeån taát caû nhöõng hôïp ñoàng chi tieát töø baûng tblOrderDetails vaøo baûng tblOrderDetailsHist */ INSERT INTO TBLORDERDETAILSHIST( ItemID, OrderID, No, Qtty, Price, Discount, Amount) SELECT ItemID, OrderID, No, Qtty, Price, Discount, Amount From tblOrderDetails ORDER BY OrderID ASC /* Coù theå vieát laïi theâm maåu tin vôùi taát caû caùc coät nhö sau Chuyeån taát caû nhöõng hôïp ñoàng chi tieát töø baûng tblOrderDetails vaøo baûng tblOrderDetailsHist vôùi ñieàu kieän soá coät töông öùng trong baûng tblOrderDetails baèng vôùi soá coät trong baûng tblOrderDetailsHist, baïn coù theå vieát laïi nhö sau */ Giaùo vieân: Phaïm Höõu Khang
  • 108. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM INSERT INTO TBLORDERDETAILSHIST SELECT * from tblOrderDetails ORDER BY OrderID ASC 5.7.3. Insert vaøo baûng laáy giaù trò cuï theå, baûng khaùc: INSERT INTO <Tablename1>[<columnname list>] Select [columnname list], valueslist From <Tablename2> Where <conditions> ORDER BY <column name> ASC/DESC Ví duï 8-18: INSERT vaøo baûng töø giaù trò cuï theå, baûng khaùc /* Theâm maåu tin vôùi caùc coät cuï theå */ /* Chuyeån taát caû nhöõng hôïp ñoàng chi tieát töø baûng tblOrderDetails vaøo baûng tblOrderDetailsHist. Giaû söû raèng, ngoaøi nhöõng coät gioáng nhö tblOrderDetails, baûng tblOrderDetailsHist coøn coù theâm coät Tranferdate. */ INSERT INTO TBLORDERSHIST( OrderID, OrderDate, ReceiveFolio, CustID, Descriion, Amount, Historydate) SELECT OrderID, OrderDate, ReceiveFolio, CustID, Descriion, Amount, getdate() as Historydate From tblOrders where Month(OrderDate)=12 Order by OrderDate,CustID /* Coù theå vieát laïi theâm maåu tin vôùi taát caû caùc coät nhö sau */ /* Chuyeån taát caû nhöõng phieáu thu trong thaùng 12 töø baûng tblOrders vaøo baûng tblOrdersHist vôùi ñieàu kieän soá coät töông öùng trong baûng tblOrders baèng vôùi soá coät trong baûng tblOrdersHist, baïn coù theå vieát laïi nhö sau */ INSERT INTO TBLORDERDETAILSHIST( ItemID, OrderID, No, Qtty, Price, Discount, Amount,TranferDate) SELECT ItemID, Giaùo vieân: Phaïm Höõu Khang
  • 109. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM OrderID, No, Qtty, Price, Discount, Amount,CurDate() From tblOrderDetails ORDER BY OrderID ASC 5.8. Phaùt bieåu SQL daïng UPDATE Phaùt bieåu SQL daïng UPDATE duøng caäp nhaät laïi döõ lieäu ñaõ toàn taïi trong baûng. Khi UPDATE duøng caäp nhaät döõ lieäu cho moät maåu tin chæ ñònh naøo ñoù thöôøng UPDATE söû duïng chung vôùi meänh ñeà WHERE. Neáu caàn caäp nhaät taát caû caùc maåu tin trong baûng baïn coù theå boû meänh ñeà WHERE. Phaùt bieåu naøy coù caáu truùc nhö sau: /* neáu caäp nhaát giaù trò cuï theå */ Update <table name> Set <column>=<value>,[<column>=<value>] [where <restrictive conditions>] /* neáu caäp nhaát giaù trò laø keát quaû traû veà töø phaùt bieåu select treân moät hay nhieàu baûng khaùc */ Update <table name> Set <column>=<select .. from tablename where ...> [where <restrictive conditions>] UPDATE coù theå aûnh höôûng ñeán nhieàu baûng, nhöng caäp nhaát giaù trò chæ coù hieäu löïc treân baûng ñoù, baïn coù theå tham khaûo phaàn naøy trong chöông keá tieáp JOIN TABLE. Caäp nhaät giaù trò cuï theå vaøo moät hay nhieàu coät minh hoaï trong ví duï 8-18 sau: Ví duï 8-18: UPDATE treân caùc coät döõ lieäu töø giaù trò cuï theå /* caäp nhaät coät vôùi giaù trò cuï theå */ Update tblCustomers Set CustName='Cong ty TNHH Coca cola Vietnam' Where CustID=‘12’ /* caäp nhaät moät coät vôùi giaù trò coät khaùc trong baûng tblOrderDetails*/ Update tblOrders Set Amount= Amount*.01, TotalAmount=Amount*0.1 Where Month(OrderDate)=12 /* caäp nhaät moät coät vôùi giaù trò töø baûng khaùc*/ /* caäp nhaät coät Price vôùi giaù trò töø coät Cost cuûa baûng tblItems, khai baùo sau chæ ñuùng trong MySQL 4.1 trôû veà sau*/ Update tblOrderDetails Giaùo vieân: Phaïm Höõu Khang
  • 110. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Set Price= (select distinct Cost] from tblItems where ItemID=tblOrderDetails.ItemID) Where Price<1000 /* caäp nhaät moät coät vôùi giaù trò cuï theå vôùi ñieàu kieän töø baûng khaùc, , khai baùo sau chæ ñuùng 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) 5.9. Phaùt bieåu SQL daïng DELETE Vôùi phaùt bieåu SQL daïng DELETE thì ñôn giaûn hôn. Khi thöïc hieän leänh xoaù maåu tin trong baûng chuùng ta chæ caàn quan taâm ñeán teân baûng, vaø meänh ñeà WHERE ñeå xoaù vôùi nhöõng maåu tin ñaõ choïn loïc neáu coù. Cuù phaùp cuûa Delete: Delete from <table name> Where <condition> Vôùi meänh ñeà WHERE gioáng nhö baát kyø meänh ñeà WHERE naøo trong phaùt bieåu SELECT hay UPDATE vaø INSERT cuûa baát kyø öùng duïng cô sôû döõ lieäu naøo coù söû duïng SQL. Conditions coù theå laø pheùp toaùn giöõa caùc coät vaø giaù trò, nhöng cuõng coù theå giaù trò laø keát quaû traû veà töø moät phaùt bieåu SELECT khaùc. Ghi chuù: Khoâng coù khaùi nieäm xoùa giaù trò trong moät coät, vì xoùa giaù trò moät coät ñoàng nghóa vôùi caäp nhaät coät ñoù baèng giaù trò roãng. Ví duï 8-19: Xoùa maåu tin vôùi phaùt bieåu SQL daïng DELETE /* Xoaù maåu tin töø baûng vôùi ñieàu kieän */ Delete from tblCustomers Where CustName is null Trong tröôøng hôïp coù raøng buoäc veà quan heä cuûa döõ lieäu, thì xoùa maåu tin phaûi tuaân thuû theo quy taéc: Xoaù maåu tin con tröôùc roài môùi xoaù maåu tin cha. Chaúng haïn, trong tröôøng hôïp ta coù 2 baûng: hôïp ñoàng baùn haøng (tblOrders) vaø hôïp ñoàng baùn haøng chi tieát (tblOrderDetails). Ñeå xoaù moät hôïp ñoàng baïn caàn xoùa maåu tin trong baûng tblOrders tröôùc roài môùi ñeán caùc maåu tin trong baûng tblOrderDetails. Ví duï 8-20: Xoaù maåu tin vôùi Delete /* Xoaù maåu tin töø baûng con */ Delete from tblOrderDetails where OrderID=123 /* Xoaù maåu tin töø baûng cha */ Delete from tblOrders where OrderID=123 Giaùo vieân: Phaïm Höõu Khang
  • 111. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Baïn coù theå thöïc hieän moät phaùt bieåu SQL daïng DELETE vôùi ñieàu kieän trong meänh ñeà WHERE laáy giaù trò traû veà töø phaùt bieåu SELECT töø baûng khaùc, khai baùo nhö vaäy chæ coù hieäu löïc trong cô sôû döõ lieäu MySQL phieân baûn 8.1 trôû veà sau hay trong cô sôû döõ lieäu SQL Server vaø Oracle. Ví duï 8-21: Xoaù maåu tin theo quy taéc coù raøng buoäc quan heä /* Xoaù maåu tin töø baûng vôùi ñieàu kieän laáy giaù trò töø baûng khaùc */ Delete from tblOrderDetails where ItemID in (select ItemID from tblItems where ItemName like 'IT%') 6. PHAÙT BIEÅU SQL DAÏNG JOIN Ngoaøi caùc phaùt bieåu SQL vôùi 4 daïng treân, trong phaàn keá tieáp, chuùng toâi trình baøy moät soá phaùt bieåu SQL daïng Select ñeåâ keát noái döõ lieäu giöõa caùc baûng coù quan heä vôùi nhau, nhöõng phaùt bieåu seõ trình baøy trong chöông 5 nhö: Khaùi nieäm JOIN Phaùt bieåu INNER JOIN Phaùt bieåu LEFTJOIN Phaùt bieåu RIGHT JOIN 6.1. Khaùi nieäm veà quan heä Ñeå phaùt trieån öùng duïng Web baèng baát kyø loaïi cô sôû döõ lieäu naøo, giai ñoaïn phaân tích thieát keá heä thoáng cöïc kyø quan troïng. Neáu keát quaû phaân tích khoâng toái öu thì öùng duïng ñoù khoâng theå ñaït ñöôïc giaù trò kyõ thuaät cuõng nhö giaù trò thöông maïi. Thieát keá cô sôû döõ lieäu khoâng toái öu, chuùng coù theå daãn ñeán vieäc chöông trình chaïy chaäm vaø khoâng beàn vöõng. Moät khi öùng duïng chaïy chaäm ñi do cô sôû döõ lieäu khoâng toái öu thì raát coù theå baïn phaûi thieát keá vaø xaây döïng laïi töø ñaàu toaøn boä caáu truùc cuûa chöông trình vaø cô sôû döõ lieäu. Xuaát phaùt töø lyù do naøy, khi xaây döïng moät öùng duïng thoâng tin quaûn lyù, chuùng ta caàn phaûi qua nhöõng böôùc phaân tích thieát keá heä thoáng kyõ löôõng ñeå coù ñöôïc moâ hình quan heä vaø ERD tröôùc khi ñeán caùc moâ hình chöùc naêng chi tieát. Tuy nhieân, trong lyù thuyeát moät soá kieán thöùc cô baûn baét buoäc baïn phaûi thöïc hieän theo moâ hình heä thoáng öùng vôùi nhöõng quan heä toaøn veïn, nhöng trong thöïc teá, do tính ñaëc thuø cuûa öùng duïng, thöôøng baïn phaûi thieát keá laïi moâ hình theo nhu caàu caân ñoái giöõa ñoä phöùc taïp vaø tính toái öu. Trong öùng duïng baùn haøng qua maïng Test ñaõ trình baøy trong chöông 3, khi quan taâm ñeán moät hôïp ñoàng treân maïng, ngoaøi nhöõng thoâng tin lieân laïc veà khaùch haøng, baïn caàn phaûi löu tröõ döõ lieäu khaùc nhö chieát haøng mua, phöông thöùc traû tieàn, phöông thöùc giao haøng,... Vaán ñeà ñöôïc thaûo luaän ôû ñaây, moãi hôïp ñoàng coù nhì6u maët haøng chi tieát. Trong tröôøng hôïp naøy, chuùng ta coù 6 thöïc theå lieân quan nhö sau, thöïc theå danh muïc Customers (thoâng tin lieân laïc cuûa khaùch haøng), Orders (hôïp ñoàng mua haøng), OrderDetails (chi tieát haøng mua), Items (danh muïc saûn phaåm). Giaùo vieân: Phaïm Höõu Khang
  • 112. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Sô ñoà 8-1: Moâ hình quan heä Giaû söû raèng khi nhaäp soá lieäu vaøo cô sôû döõ lieäu, öùng vôùi hôïp ñoàng coù maõ 101, cuûa khaùch haøng coù teân Nguyeãn Vaên A, ... coù hai saûn phaåm chi tieát: 11 (Nöôùc ngoït) vaø 32 (xaø phoøng Lux). Trong tröôøng hôïp naøy baïn ñang coù moät maåu tin hôïp ñoàng trong baûng tblCustomers, moät maåu tin hôïp ñoàng trong baûng tblOrders vaø hai maåu tin trong baûng tblOrderDetails. Neáu muoán bieát thoâng tin hôïp ñoàng cuûa khaùch haøng A, roõ raøng baïn caàn duøng phaùt bieåu SELECT vôùi meänh ñeà keát hôïp töø 3 baûng treân. Keát quaû traû veà 2 maåu tin laø söï keát hôïp thoâng tin töø hai baûng tblCustomers, tblOrders vaø tblOrderDetails. Khi thöïc thi phaùt bieåu SQL daïng SELECT öùng vôùi cô sôû döõ lieäu nhö treân baïn phaûi duyeät qua hai maåu tin. Taát nhieân, khi vieát öùng duïng thì ñieàu naøy chaáp nhaän ñöôïc, vaø coù theå coi laø toái öu. Giaû söû raèng, öùng duïng naøy ñöôïc phaùt trieån treân WEB caàn löu taâm ñeán vaán ñeà toái öu toác ñoä truy vaán thì sao? Ngöôøi thieát keá cô sôû döõ lieäu trong tröôøng hôïp naøy phaûi thay ñoåi laïi caáu truùc ñeå taêng toác ñoä truy caäp qua maïng khi xöû lyù treân cô sôû döõ lieäu cuûa ngöôøi duøng. 1 - n 1 - n 1 - n Items Order Details Orders Customers 6.2. Khaùi nieäm veà meänh ñeà JOIN Trong haàu heát phaùt bieåu SELECT, phaàn lôùn keát quaû maø baïn mong muoán laáy veà ñeàu coù lieân quan ñeán moät hoaëc nhieàu baûng khaùc nhau. Trong tröôøng hôïp nhö vaäy, khi truy vaán döõ lieäu baïn caàn söû duïng meänh ñeà JOIN ñeå keát hôïp döõ lieäu treân hai hay nhieàu baûng laïi vôùi nhau. Khi söû duïng JOIN, baïn caàn quan taâm ñeán tröôøng (coät) naøo trong baûng thöù nhaát coù quan heä vôùi tröôøng (coät) naøo trong baûng thöù hai. Neáu moâ hình quan heä cuûa baïn khoâng toái öu hay khoâng ñuùng, quaûn trình söû duïng JOIN seõ cho keát quaû traû veà khoâng nhö yù muoán. Trôû laïi öùng duïng baùn haøng qua maïng trong giaùo trình naøy, khi xuaát moät hôïp ñoàng baùn haøng cho khaùch haøng, theo thieát keá trong cô sôû döõ lieäu chuùng ta coù raát nhieàu baûng lieân quan ñeán nhau. Chaúng haïn, neáu quan taâm baùn haøng thì baùn cho ai. Suy ra, lieân quan ñeán thoâng tin khaùch haøng, baùn saûn phaåm gì cho hoï thì lieân quan ñeán maõ saûn phaåm, neáu khaùch haøng traû tieàn thì lieân quan ñeán phieáu thu, neáu khaùch haøng coù coâng nôï thì lieân quan ñeán nôï kyø tröôùc... Trong phaân naøy, chuùng toâi tieáp tuïc thieát keá moät soá baûng döõ lieäu cuøng vôùi kieåu döõ lieäu töông öùng vaø quan heä giöõa caùc baûng ñöôïc moâ taû nhö sau: Giaùo vieân: Phaïm Höõu Khang
  • 113. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM tblCustomers (danh saùch khaùch haøng) [CustID] int auto_increment Primary key, [CustName] [varchar] (50) NULL , [Address] [varchar] (100) NULL, [Tel] [varchar] (20) NULL, [FaxNo] [varchar] (20) NULL, [Email] [varchar] (50) NULL, [Contact] [varchar] (50) NULL [Country] [varchar] (3) NULL, [Province] [varchar] (3) NULL tblOrders (Hôïp ñoàng baùn haøng) [OrderID] [int] Not null auto_increment Primary Key, [OrderDate] [date] NULL , [CustID] int , [Description] [varchar] (200) NULL , [ShipCost] [float] NULL , [TranID] [tinyint] NULL , [PaymentID] [tinyint] NULL , [Amount] [float] NULL , [TotalAmount] [float] NULL , tblOrderDetails (Hôïp ñoàng baùn haøng chi tieát) [SubID] [int] auto_increment NOT NULL , [OrderID] int , [ItemID] int, [No] int, [Qtty] [int] NULL , [Price] int NULL , [Discount] [Float] NULL , [Amount] [Float] NULL tblItems (Danh saùch saûn phaåm) [ItemID] int auto_increment Primary key, [ItemName] [varchar] (200) NULL , [Unit] [nvarchar] (20) NULL , [Cost] [Float] NULL , [Active] [tinyint] NOT NULL , [Category] int Baïn coù theå tìm thaáy caùc baûng döõ lieäu coøn laïi trong döõ lieäu Test trong ñóa ñính keøm theo saùch. 6.3. Meänh ñeà INNER JOIN Phaùt bieåu SQL daïng SELECT coù söû duïng meänh ñeà INNER JOIN thöôøng duøng ñeå keát hôïp hai hay nhieàu baûng döõ lieäu laïi vôùi nhau, cuù phaùp cuûa SELECT coù söû duïng meänh ñeà INNER JOIN: SELECT [SELECT LIST] FROM <FIRST_TABLENAME> INNER JOIN <SECOND_TABLENAME> ON <JOIN CONDITION> WHERE <CRITERIANS> ORDER BY <COLUMN LIST> [ASC / DESC] Neáu baïn caàn laáy ra moät soá coät trong caùc baûng coù keát noái laïi vôùi nhau baèng meänh ñeà INNER JOIN thì cuù phaùp naøy vieát laïi nhö sau: SELECT [FIELD1,FIELD2, ...] FROM <FIRST_TABLENAME> INNER JOIN <SECOND_TABLENAME> Giaùo vieân: Phaïm Höõu Khang
  • 114. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM ON <JOIN CONDITION> WHERE <CRITERIANS> ORDER BY <COLUMN LIST> [ASC / DESC] Ví duï 8-23: INNER JOIN vôùi moät soá coät chæ ñònh /* in ra danh saùch khaùch haøng mua haøng trong thaùng 10 */ Select CustName,OrderID, OrderDate,Amount, TotalAmount from tblCustomers inner join tblOrders on tblCustomers.CustID = tblOrders.CustID where month (OrderDate) = 10 order by CustName Keát quaû traû veà nhö sau: CustName OrderID OrderDate .. TotalAmount --------------------------------------------- CENTURY Hotel 13 2001-10-17 388800000 CENTURY Hotel 14 2001-10-18 518400000 CENTURY Hotel 16 2001-10-17 388800000 CENTURY Hotel 17 2001-10-18 14400000 CENTURY Hotel 18 2001-10-18 12960000 CENTURY Hotel 110 2001-10-18 216000000 Plaza Hotel 12 2001-10-17 403200000 Plaza Hotel 19 2001-10-17 86400000 Plaza Hotel 11 2001-10-17 576000000 Plaza Hotel 15 2001-10-17 288000000 Neáu baïn caàn laáy ra taát caû caùc coät trong caùc baûng coù keát noái laïi vôùi nhau baèng meänh ñeà INNER JOIN, cuù phaùp treân coù theå vieát laïi 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] Ví duï 8-24: INNER JOIN vôùi taát caùc tröôøng lieân quan /* in ra danh saùch khaùch haøng mua haøng trong thaùng 10 */ Select CustID,CustName,OrderID, OrderDate,TotalAmount from tblCustomers inner join tblOrders On TblCustomers.CustID=tblOrders.CustID where month (OrderDate) = 10 order by CustName DESC Keát quaû traû veà nhö sau: Giaùo vieân: Phaïm Höõu Khang
  • 115. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM CustID CustName .. OrderID ..TotalAmount ------ --------------------------------------- 13 Plaza Hotel .. 11 .. 576000000 13 Plaza Hotel .. 15 .. 288000000 12 Plaza Hotel .. 12 . . 403200000 12 Plaza Hotel .. 19 .. 86400000 16 CENTURY Hotel .. 13 .. 388800000 16 CENTURY Hotel .. 14 .. 518400000 16 CENTURY Hotel .. 16 .. 388800000 16 CENTURY Hotel .. 17 .. 14400000 16 CENTURY Hotel .. 18 .. 12960000 16 CENTURY Hotel .. 110 .. 216000000 Neáu trong nhöõng baûng caàn keát noái coù teân tröôøng (coät) gioáng nhau thì khi thöïc thi phaùt bieåu SQL daïng SELECT phaûi chæ roõ coät thuoäc baûng naøo. Trong tröôøng hôïp caû hai cuøng laáy döõ lieäu ra thì baïn caàn chuyeån aùnh xaï teân khaùc cho coät thoâng qua meänh ñ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] Neáu trong nhöõng baûng caàn keát noái ñoù coù teân tröôøng (coät) gioáng nhau vaø khoâng ñöôïc chæ roõ nhö tröôøng hôïp treân khi khai baùo trong cô sôû döõ lieäu SQL Server, khi thöïc thi phaùt bieåu SQL daïng SELECT baïn seõ bò loãi, chaúng haïn nhö: SELECT first_tablename.*, second_tablename.* FROM <first_tablename> INNER JOIN <second_tablename> ON <join condition> WHERE <criterians> ORDER BY <column list> [ASC / DESC] Server: Msg 209, Lecel 16, State Line 1 Ambiguous column name 'CustID' Tuy nhieân, vôùi phaùt bieåu treân baïn coù theå thöïc thi trong cô sôû döõ lieäu MySQL. Ngoaøi ra, phaùt bieåu SQL daïng SELECT söû duïng INNER JOIN baïn coù theå aùnh xaï (alias) teân cuûa baûng thaønh teân ngaén goïn ñeå deã tham chieáu veà sau. Thöïc ra phaùt bieåu ALIAS coù yù nghóa gioáng nhö AS vôùi teân coät trong baûng thaønh teân coät khaùc trong phaùt bieåu SELECT. Select p.*,s.* from tablename1 inner join tablename2 On tablename1.field1 = tablename2.field2 Ví duï 8-25: INNER JOIN vôùi aùnh xaï teân baûng /* in ra danh saùch khaùch haøng mua haøng trong thaùng 10 */ Giaùo vieân: Phaïm Höõu Khang
  • 116. COMPUTER LEARNING CENTER 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 Keát quaû traû veà nhö sau: CustName OrderID OrderDate .. TotalAmount ----------------------------------------------CENTURY Hotel 13 2001- 10-17 .. 388800000 CENTURY Hotel 14 2001-10-18 .. 518400000 CENTURY Hotel 16 2001-10-17 .. 388800000 CENTURY Hotel 17 2001-10-18 .. 14400000 CENTURY Hotel 18 2001-10-18 .. 12960000 CENTURY Hotel 11 2001-10-18 .. 216000000 Plaza Hotel 12 2001-10-17 .. 403200000 Plaza Hotel 19 2001-10-17 .. 86400000 Plaza Hotel 11 2001-10-17 .. 576000000 Plaza Hotel 15 2001-10-17 .. 288000000 Taát nhieân, baïn cuõng coù theå vieát phaùt bieåu treân öùng vôùi töøng coät muoán laáy ra baèng caùch khai baùo teân coät. 6.4. Meänh ñeà Left Join Tröôøng hôïp baïn mong muoán keát quaû laáy ra trong hai baûng keát hôïp nhau theo ñieàu kieän: Nhöõng maåu tin baûng beân traùi toàn taïi öùng vôùi nhöõng maåu tin ôû baûng beân phaûi khoâng toàn taïi baïn haõy duøng meänh ñeà LEFT JOIN trong phaùt bieåu SQL daïng SELECT, cuù phaùp coù daïng: select <Column list> from lefttablename LEFT JOIN righttablename on lefttabkename.field1=righttablename.field2 Where <conditions> Order by <column name> ASC/DESC Chaúng haïn, baïn choïn ra taát caû caùc saûn phaåm (vôùi caùc coät) coù hay khoâng coù doanh soá baùn trong thaùng hieän taïi. Moät soá saûn phaåm khoâng baùn trong thaùng seõ coù coät Amount coù coät Amount giaù trò NULL. Ví duï 8-26: SELECT duøng LEFT JOIN /* in ra danh saùch saûn phaåm baùn trong thaùng 10 */ select ItemID,ItemName,Amount from tblItems left join tblOrderDetails on tblItems.ItemID=tblOrderDetails.ItemID order by Amount Keát quaû traû veà nhö sau: ItemID ItemName Amount ---------------------------------------------- 12 ASW-60VP NULL Giaùo vieân: Phaïm Höõu Khang
  • 117. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 13 ASW-60VT NULL 14 ASW-660T 120V TW 29340 NULL 14 ASW-685V 120V TW 29440 NULL 15 ASW60VP 220V 34571 NULL 16 ASW-45Z1T1 2960000 17 ASW-45Y1T 127V 14400000 18 ASW-45Y1T 220V 72000000 19 ASW-45Y1T 220V 86400000 20 ASW-45Z1T 15200000 ... 6.5. Meänh ñeà Right Join Ngöôïc laïi vôùi phaùt bieåu SQL daïng SELECT söû duïng meänh ñeà LEFT JOIN laø phaùt bieåu SQL daïng SELECT söû duïng meänh ñeà RIGHT JOIN seõ xuaát döõ lieäu cuûa baûng beân phaûi cho duø döõ lieäu cuûa baûng beân traùi khoâng toàn taïi, cuù phaùp coù daïng: Select <Column list> From lefttablename RIGHT JOIN righttablename On lefttabkename.field1=righttablename.field2 Where <conditions> Order by <column name> ASC/DESC Trong ví duï sau, baïn coù theå choïn ra taát caû caùc saûn phaåm coù hay khoâng coù doanh soá baùn trong thaùng hieän taïi. Caùc saûn phaåm khoâng toàn taïi doanh soá baùn seõ khoâng hieän ra. Ví duï 8-27: SELECT duøng RIGHT JOIN /* in ra danh saùch saûn phaåm baùn trong thaùng ngaøy 17 */ /* trong phaùt bieåu SELECT naøy coù söû duïng meänh ñeà WHERE söû duïng phaùt bieåu SELECT khaùc, keát quaû cuûa SELECT trong meänh ñeà WHERE traû veà moät maûng 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 Keát quaû traû veà nhö sau: ItemName Qtty Price Amount ---------------------------------------------- ASW-45Y1T 127V SDIA29350 11000 12000 58400000 ASW-45Y1T 127V SDIA29350 10000 12000 44000000 ASW-45Y1T 127V SDIA 29350 10000 12000 14400000 ASW-45Y1T 127V SDIA 29350 10000 12000 44000000 ASW-45Y1T 127V SDIA 29350 11000 12000 58400000 ASW-45Y1T 127V SDIA 29350 10000 12000 44000000 ASW-45Y1T 127V SDIA 29350 11000 12000 58400000 ASW-45Y1T 220V ARG 29391 6000 12000 86400000 ASW-45Z1T 9000 12000 29600000 ASW-45Z1T 9000 12000 29600000 ... Giaùo vieân: Phaïm Höõu Khang
  • 118. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 6.6. Pheùp toaùn hôïp (union) Union khoâng gioáng nhö nhöõng meänh ñeà JOIN ñaõ giôùi thieäu treân ñaây. Union laø pheùp toaùn duøng ñeå noái hai hay nhieàu caâu truy vaán daïng Select laïi vôùi nhau. Ñoái vôùi JOIN, baïn coù theå keát noái döõ lieäu ñöôïc thöïc hieän theo chieàu ngang. Ñoái vôùi Union baïn keát noái döõ lieäu ñöôïc thöïc hieän theo chieàu doïc. Ñeå choïn ra nhöõng khaùch haøng thöôøng xuyeân trong tblCustomers, keát quaû traû veà laø danh saùch caùc khaùch haøng thöôøng xuyeân. Ví duï 8-28: Khaùch haøng thöôøng xuyeân trong tblCustomers Select CustID,CustName from tblCustomers Keát quaû traû veà nhö sau: CustID CustName ---------- ----------------- 13 New World Hotel 12 Kinh Do Hotel 16 CENTURY Hotel 10 PLAZA Hotel Ñeå choïn ra nhöõng khaùch haøng vaõng lai trong tblTempCustomers, keát quaû traû veà laø danh saùch caùc khaùch haøng vaõng lai. Ví duï 8-29: Khaùch haøng vaõng lai trong tblTempCustomers Select CustID,CustName from tblTempCustomers Keát quaû traû veà nhö sau: CustID CustName ---------- --------------------------------- 23 Cong ty nuoc giai khat ‘12’COLA 24 Cong ty nuoc giai khat PEPSI 25 Cong ty nuoc giai khat REDBULK 26 Cong ty nuoc giai khat TRIBICO Neáu duøng pheùp toaùn UNION ñeå keát noái hai baûng treân, keát quaû traû veà laø danh saùch caû hai loaïi khaùch haøng trong cuøng moät recordset. Ví duï 8-30: SELECT söû duïng pheùp hôïp UNION Select CustID,CustName From tblCustomers UNION Select CustID,CustName From tblTempCustomers Keát quaû traû veà nhö sau: CustID CustName Giaùo vieân: Phaïm Höõu Khang
  • 119. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM ---------- ----------------------------------- 23 Cong ty nuoc giai khat ‘12’COLA 24 Cong ty nuoc giai khat PEPSI 25 Cong ty nuoc giai khat REDBULK 26 Cong ty nuoc giai khat TRIBICO 12 Kinh Do Hotel 10 PLAZA Hotel 16 CENTURY Hotel 13 New World Hotel Ghi chuù: Khi söû duïng pheùp toaùn Union trong phaùt bieåu SQL daïng Select, baïn caàn löu yù caùc quy ñònh sau: Taát caû nhöõng truy vaán trong UNION phaûi cuøng soá coät hay tröôøng. Neáu truy vaán thöù nhaát coù hai coät thì truy vaán thöù hai ñöôïc söû duïng UNION cuõng phaûi coù hai coät töông töï. Khi söû duïng UNION, nhöõng coät naøo coù teân coät hay bí danh (alias) môùi thì keát quaû traû veà seõ coù töïa ñeà (header) cuûa töøng coät vaø teân laø teân coät cuûa truy vaán thöù nhaát. Kieåu döõ lieäu trong caùc coät cuûa truy vaán 2 töông thích vôùi kieåu döõ lieäu caùc coät töông öùng trong truy vaán thöù nhaát. Trong UNION baïn coù theå keát hôïp nhieàu caâu truy vaán laïi vôùi nhau. Keát quaû hieän ra theo thöù töï cuûa truy vaán töø döôùi leân treân. 6.7. 6.7.1. 6.7.2. SQL daïng thay ñoåi vaø ñònh nghóa cô sôû döõ lieäu Phaùt bieåu SQL daïng CREATE Phaùt bieåu SQL daïng CREATE duøng ñeå taïo cô sôû döõ lieäu vaø nhöõng ñoái töôïng cuûa cô sôû döõ lieäu trong MySQL, SQL Server, Oracle, ..., chuùng cuù phaùp nhö sau: CREATE Database <Database NAME> CREATE <OBJECT TYPE> <OBJECT NAME> OBJECT TYPE: Loaïi ñoái töôïng cuûa cô sôû döõ lieäu ví duï nhö Procedure, Table, View,... OBJECT NAME: Teân cuûa ñoái töôïng trong cô sôû döõ lieäu SQL nhö sp_IC, tblEmployer, ... Taïo cô sôû döõ lieäu - Create database Khi xaây döïng cô sôû döõ lieäu, baïn baét ñaàu töø moâ hình cô sôû döõ lieäu ERD, hay töø moät giai ñoaïn naøo ñoù trong quy trình phaân tích thieát keá heä thoáng. Ñeå taïo cô sôû döõ lieäu treân MySQL hay SQL Server baïn söû duïng cuù phaùp sau: CREATE DATABASE <Database name> Cuù phaùp ñaày ñuû cuûa phaùt bieåu taïo cô sôû döõ lieäu nhö sau, neáu baïn söû duïng cô sôû döõ lieäu 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>] )] Giaùo vieân: Phaïm Höõu Khang
  • 120. COMPUTER LEARNING CENTER 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] 6.7.3. Dieãn giaûi CREATE Database trong SQL Server ON: Duøng ñeå ñònh nghóa nôi chöùa cô sôû döõ lieäu vaø khoâng gian chöùa taäp tin log. NAME: Duøng ñònh nghóa teân cuûa cô sôû döõ lieäu. Teân naøy duøng tham chieáu khi goïi ñeán cô sôû döõ lieäu, teân ñöôïc duøng cho quaù trình backup, export, Import, Shrink cô sôû döõ lieäu ñoù. FILENAME: Teân taäp tin cô sôû döõ lieäu löu trong ñóa cöùng, thoâng thöôøng khi caøi SQL Server leân oå ñóa naøo thì giaù trò maëc ñònh cho pheùp löu taäp tin ñeán thö muïc ñoù. Tuy nhieân, neáu muoán baïn cuõng coù theå thay ñoåi vò trí caùc file naøy. Khi taïo cô sôû döõ lieäu, baïn ñaõ ñònh nghóa vò trí ñaët taäp tin ôû thö muïc naøo thì khoâng theå di chuyeån moät caùch thuû coâng (nhö duøng Explorer cuûa Windows), vì laøm ñieàu ñoù thaät nguy hieåm nhaát laø khi döõ lieäu trong cô sôû döõ lieäu ñang coù giaù trò kinh teá. SIZE: Dung löôïng cuûa cô sôû döõ lieäu khi khôûi taïo chuùng. Thoâng thöôøng giaù trò maëc ñònh laø 1 MB. Dung löôïng phaûi laø soá nguyeân, coù theå taêng theâm baèng caùch söû duïng thuû tuïc Shrink trong SQL Server. MAXSIZE: Dung löôïng lôùn nhaát, khi dung löôïng cô sôû döõ lieäu taêng leân ñeán möùc MaxSize thì döøng laïi. Neáu khi dung löôïng baèng MaxSize, caùc chuyeån taùc coù theå bò huyû boû hay traû veà loãi khoâng theå thöïc hieän ñöôïc, vaø coù theå laøm cho cô sôû döõ lieäu cuûa baïn bò treo. Ñeå traùnh ñieàu naøy xaûy ra, thì ngöôøi quaûn trò cô sôû döõ lieäu phaûi thöôøng xuyeân theo gioûi quaù trình taêng dung löôïng cô sôû döõ lieäu theo thôøi gian, ñeå coù bieän phaùp traùnh moïi ruûi ro coù theå xaûy ra. FILEGROWTH: Dung löôïng khôûi taïo cuøng dung löôïng toái ña cho pheùp taêng trong quaù trình theâm döõ lieäu vaøo cô sôû döõ lieäu. Nhaèm töï ñoäng hoùa, chuùng ta phaûi thieát laäp quaù trình taêng töï ñoäng theo chæ soá KB cho tröôùc hay tyû leä phaàn traêm theo dung löôïng ñang coù. LOG ON: Log on cho pheùp baïn quaûn lyù nhöõng chuyeån taùc xaûy ra trong quaù trình söû duïng cô sôû döõ lieäu cuûa SQL Server. Xaây döïng cô sôû döõ lieäu Test Nhö ñaõ trình baøy ôû treân, sau ñaây ví duï taïo cô sôû döõ lieäu Test coù cuù phaùp nhö sau: Ví duï 8-31: Taïo cô sôû döõ lieäu Test trong SQL Server USE master GO CREATE DATABASE Test ON ( NAME = Test, FILENAME = 'c:mssql7dataTestdat.mdf', Giaùo vieân: Phaïm Höõu Khang
  • 121. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = 'Testlog', FILENAME = 'c:mssql7dataTestlog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) GO Ñeå ñôn giaûn hoaù caùc ñoái töôïng Table trong cô sôû döõ lieäu Test, chuùng toâi chæ trình baøy moät vaøi phaùt bieåu SQL daïng Create Table, caùc Table khaùc baïn coù theå tìm thaáy trong cô sôû döõ lieäu ñính keøm. Ví duï 8-32: Taïo moät soá baûng trong Test /* Taïo baûng danh saùch khaùch haøng thöôøng xuyeân */ 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) ); /* Taïo baûng hôïp ñoàng mua haøng qua maïng */ 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) ); /* Taïo baûng hôïp ñoàng chi tieát mua haøng qua maïng */ 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' ); Giaùo vieân: Phaïm Höõu Khang
  • 122. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Moät soá quy ñònh khi thieát keá Table 6.7.4. 6.7.5. 6.7.6. Teân coät - Column Name Ñaët teân coät cuõng gioáng nhö ñaët teân baûng, coù raát nhieàu quy taéc ñaët teân (nhö ñaõ trình baøy ôû treân phaàn table), nhöng khuyeán khích baïn neân theo moät soá quy taéc cô baûn sau: Teân coät baét ñaàu chöõ hoa, coøn laïi baèng chöõ thöôøng. Teân ngaén goïn vaø ñaày ñuû yù nghóa. Khoâng neân ñaët teân coät coù khoaûng traéng, sau naøy baïn seõ gaëp nhöõng phieàn toaùi khi tham chieáu ñeán coät ñoù. Khoâng ñaët teân coät truøng vôùi nhöõng töø khoaù, töø daønh rieâng, vaø nhöõng kyù töï ñaëc bieät nhö nhöõng pheùp toaùn hay toaùn töû khaùc. Chuù yù, neân ñaët teân coät cuøng teân nhöõng coät coù quan heä vôùi nhöõng baûng khaùc trong cuøng cô sôû döõ lieäu, giuùp deã hieåu vaø traùnh bò nhaàm laãn. Moät soá ngöôøi thích theâm vaøo daáu gaïch chaân (_) ñeå phaân bieät yù nghóa hay teân goïi cuûa coät, ñieàu naøy laø tuøy vaøo sôû thích cuûa baïn. Tuy nhieân chuùng toâi khoâng thích qui taéc naøy. Nhöng ñoái vôùi kinh nghieäm laäp thieát keá xaây döïng cô sôû döõ lieäu thì baïn khoâng neân duøng daáu gaïch döôùi _, vaø dó nhieân trong nhieàu tröôøng hôïp khaùc baïn seõ caûm thaáy khoù chòu khi theâm moät daáu _ trong teân cuûa ñoái töôïng cuûa cô sôû döõ lieäu. Maëc duø khoâng coù vaán ñeà gì cho cuù phaùp hay caùc phaùt bieåu tham chieáu ñeán chuùng, nhöng baïn seõ thaáy taïi sao chuùng ta khoâng neân duøng daáu gaïch chaân (_) khi ñaët teân ñoái töôïng hay teân cô sôû döõ lieäu trong MySQL. Neáu baïn ñaët teân coù daáu _ ,baïn phaûi toán thôøi gian hay naêng löôïng cho haønh ñoäng taïo ra daáu _ Trong chöøng möïc hay giôùi haïn naøo ñoù do hieäu öùng cuûa Font chöõ coù theå phaùt sinh loãi seõ gaây ra nhaàm laãn cho ngöôøi laäp trình. Noùi toùm laïi laø baïn seõ maát theâm thôøi gian löu taâm ñeán chuùng. Kieåu döõ lieäu - Data type Nhö ñaõ trình baøy caùc laïi döõ lieäu trong phaàn treân, khi xaây döïng cô sôû döõ lieäu, taát caû nhöõng tröôøng trong baûng caàn phaûi coù kieåu döõ lieäu cuï theå. Vaán ñeà quan troïng laø choïn kieåu döõ lieäu naøo cho phuø hôïp vôùi döõ lieäu maø ngöôøi duøng seõ nhaäp vaøo. Ñeå thieát keá döõ lieäu phuø hôïp vôùi thöïc teá, ngoaøi tính öùng duïng hôïp vôùi ngöõ caûnh baïn cuõng caàn quan taâm ñeán kieåu döõ lieäu töông thích vaø chieàu daøi cuûa töøng coät. Chaúng haïn nhö: [CustID] [varchar] (10) /* hay */ [CustID] int Giaù trò maëc ñònh - Default Thoâng thöôøng khi taïo ra moät coät trong baûng ñoâi khi chuùng ta caàn aùp duïng giaù trò maëc ñònh, khoâng chæ cho tröôøng hôïp soá lieäu khoâng nhaäp töø beân ngoaøi maø coøn cho caùc coät töï ñoäng coù giaù trò töï sinh. Vôùi nhöõng lyù do nhö vaäy, chuùng ta caàn coù moät soá giaù trò maëc ñònh cho nhöõng coät caàn thieát, ví duï : Neáu coät ñoù laø soá chuùng ta coù giaù trò maëc ñònh laø 0 Giaùo vieân: Phaïm Höõu Khang
  • 123. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Neáu coät ñoù laø ngaøy thaùng chuùng ta coù giaù trò maëc ñònh laø ngaøy naøo ñoù (nhö 0000-00-00 laø CurDate()) Neáu coät ñoù coù giaù trò laø 0 hoaëc 1, baïn coù theå khai baùo giaù trò maëc ñònh laø 0 hoaëc 1 Neáu coät ñoù laø chuoãi chuùng ta coù giaù trò maëc ñònh nhö laø 'A' 6.7.7. Soá töï ñoäng auto_increment auto_increment laø khaùi nieäm cöïc kyø quan troïng trong MySQL (töông ñöông vôùi Identity trong SQL Server, Autonumber trong MS Access). Khi baïn muoán moät coät coù giaù trò taêng töï ñoäng nhö AutoNumber/Identity, baïn neân ñònh nghóa coät ñoù nhö auto_increment,. Khi söû duïng auto_increment laøm soá taêng töï ñoäng thì kieåu döõ lieäu laø soá nguyeân hoaëc soá nguyeân lôùn. Trong tröôøng hôïp, baïn khai baùo soá töï ñoäng trong SQL Server, baïn caàn phaûi khai baùo theâm caùc thoâng soá nhö seed. Seed laø giaù trò khôûi ñaàu khi SQL Server töï ñoäng taêng giaù trò, Increament laø böôùc taêng, noù cho bieát moãi laàn taêng caàn bao nhieâu giaù trò. Vì duï khi taïo auto_increment cho coät ItemID [Int] auto_increment, nghóa laø baét ñaàu soá 1 vaø moãi laàn taêng 1 soá. Keát quaû baïn seõ coù laø 1,2,3,4, ...n. Trong phaùt bieåu SQL cuûa MySQL, ñeå taïo baûng coù gaù trò taêng töï ñoäng baïn chæ caàn khai baùo teân coät, kieåu döõ lieäu Int (Integer) vaø auto_increment nhö sau: IDNO Int auto_increment NOT NULL Trong giao dieän ñoà hoïa baïn chæ caàn check vaøo tuyø choïn AutoIncreament nhö hình 8-10. Hình 8-10: Choïn auto_increment Giaùo vieân: Phaïm Höõu Khang
  • 124. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM NULL / NOT NULL Ñaây laø traïng thaùi cuûa moät coät trong baûng cho pheùp chaáp nhaän giaù trò NULL hay khoâng? Neáu baïn chæ ra raøng buoäc giaù trò NOT NULL thì baét buoäc phaûi coù giaù trò trong coät naøy moãi khi maåu tin ñöôïc nhaäp vaøo. Ñoái vôùi moät soá kieåu döõ lieäu khoâng cho pheùp NULL baïn neân thieát laäp giaù trò maëc ñònh cho coät ñoù, ví duï nhö kieåu döõ lieäu bit khoâng cho pheùp NULL. Trong phaùt bieåu SQL taïo baûng, baïn chæ caàn khai baùo NULL hay NOT NULL sau kieåu döõ lieäu cuûa coät ñoù. Trong giao dieän ñoà hoïa chæ caàn ñaùnh daáu choïn vaøo tuyø choïn Not NULL nhö hình 8-10. 6.8. Thay caáu truùc ñoái töôïng baèng ALTER Khi chuùng ta caàn thieát phaûi söûa ñoåi moät phaàn caáu truùc cuûa caùc ñoái töôïng nhö table (view, hay SP trong SQL Server) vì muïc ñích naøo ñoù, thì Baïn söû duïng phaùt bieåu ALTER ñeå thay ñoåi caáu truùc cuûa ñoái töôïng hieän coù: ALTER <Object type> <Object Name> Khi moät baûng toàn taïi trong cô sôû döõ lieäu, do nhu caàu caàn thieát phaûi thay ñoåi caáu truùc baûng, baïn söû duïng phaùt bieåu ALTER TABLE cuøng caùc tham soá cuûa chuùng nhö cuù phaùp sau: ALTER TABLE table alteration [,alteration] Chaúng haïn, baïn coù theå söû duïng phaùt bieåu ALTER TABLE ñeå theâm moät coät teân Activate vôùi kieåu döõ lieäu TinyInt coù giaù trò maëc ñònh laø 1. Ví duï 8-33: Theâm moät coät teân Activate vaøo baûng tblOrders ALTER TABLE tblorders ADD Activate TINYINT DEFAULT "1" Khi thay ñoåi thieát laäp giaù trò maëc ñònh cho coät baïn neân quan taâm ñeán giaù trò maëc ñònh ñoù coù phuø hôïp cho nhöõng maåu tin ñang toàn taïi hay khoâng. Muoán thay ñoåi giaù trò maëc ñònh cuûa coät cho nhöõng maåu tin ñang toàn taïi, baïn söû duïng ñeán meänh ñeà phuï nhö trong ví duï sau: Ví duï 8-34: Thieát laäp giaù trò maëc ñònh trong baûng tblOrders ALTER TABLE tblorders CHANGE OrderDate OrderDate DATETIME DEFAULT "0000-00-00" Thay ñoåi kieåu döõ lieäu töø Date dang DateTime, baïn coù theå khai baùo nhö ví duï 4-35 sau: Ví duï 8-35: Thay ñoåi kieåu döõ lieäu ALTER TABLE tblorders CHANGE OrderDate OrderDate DATE DEFAULT "0000-00-00 00:00:00" Giaùo vieân: Phaïm Höõu Khang
  • 125. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Maëc khaùc, baïn cuõng coù theå taïo hay thay ñoåi baûng trong maøn hình MySQL-Front. Chæ caàn choïn ngaên Database | R-Click | Create New Table, cöûa soå xuaát hieän nhö hình 8-11. Hình 8-11: Giao dieän taïo baûng baèng MySQL-Front 6.9. Phaùt bieåu SQL daïng DROP Drop laø phaùt bieåu thöïc hieän pheùp xoaù. DROP duøng ñeå xoaù ñoái töôïng cuûa cô sôû döõ lieäu nhö baûng, cô sôû döõ lieäu, ...Cuù phaùp cuûa phaùt bieåu DROP: DROP <Object type> <Object name> [, .... n] Baïn coù theå xoaù cô sôû döõ lieäu, baèng caùch khai baùo nhö sau: Drop Database Test /* Phaùt bieåu DROP TABLE chæ roõ baûng naøo caàn xoaù, neáu xoaù nhieàu baûng thì baïn caàn duøng daáu phaåy (,) */ DROP TABLE tblCustomers, tblSuppliers Ngoaøi ra, baïn cuõng coù theå duøng MySQl-Front ñeå xoaù baûng hay caùc ñoái töôïng Table trong cô sôû döõ lieäu chæ ñònh. Neáu choïn nhieàu baûng cuøng moät luùc baïn söû duïng phím Control hay Shift nhö sau: Giaùo vieân: Phaïm Höõu Khang
  • 126. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 8-12: Choïn ñoái töôïng ñeå xoaù baûng trong MySQL-Front 7. TAÏO KÒCH BAÛN SQL- SQL SCRIPTS Thoâng thöôøng khi xaây döïng cô sôû döõ lieäu ñeå phaùt trieån öùng duïng, ñoâi khi baïn caàn chuyeån cô sôû döõ lieäu töø maùy naøy sang maùy khaùc, hay töø khu vöïc naøy hay ñeán khu vöïc khaùc. Coù raát nhieàu caùch ñeå laøm ñieàu naøy, ôû ñaây chuùng toâi giôùi thieäu ñeán caùc baïn moät coâng cuï taùi taïo laïi cô sôû döõ lieäu môùi töø kòch baûn cuûa cô sôû döõ lieäu goác. Kòch baûn SQL (SQL Script) laø toång hôïp taát caû caùc phaùt bieåu SQL duøng ñeå taïo ra cô sôû döõ lieäu trong quaù trình xaây döïng chuùng, chuùng löu tröõ döôùi daïng vaên baûn coù teân môû roäng .sql (cautruc.sql). Coâng cuï naøy taïo kòch baûn cho taát caû caùc ñoái töôïng cuûa cô sôû döõ lieäu vôùi nhöõng thuoäc tính caên baûn. Tuy nhieân, neáu baïn choïn vaøo tuyø choïn Data, SQL Script bao goàm caùc phaùt bieåu SQL daïng Insert cuøng vôùi döõ lieäu trong baûng. Tröôùc tieân baïn coù theå nhaän thaáy cöûa soå coâng cuï naøy trong MySQL-Front, baèng caùch choïn teân cô sôû döõ lieäu Test, sau ñoù choïn Tools / Im-Export / Export Table, cöûa soå xuaát hieän nhö hình 8-13 sau: Giaùo vieân: Phaïm Höõu Khang
  • 127. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 8-13: Taïo kòch baûn trong MySQl-Front KEÁT CHÖÔNG Trong chöông naøy, chuùng toâi ñaõ giôùi thieäu vôùi baïn haàu heát caùc phaùt bieåu SQL thuoäc loaïi ñònh nghóa cô sôû döõ lieäu, thao taùc döõ lieäu nhö Select, Insert, Delete vaø Update. Phaùt bieåu SQL daïng Select vôùi caùc meänh ñeà nhö JOIN cuøng pheùp toaùn giöõa hai hay nhieàu baûng trong phaùt bieåu SQL daïng SELECT. Ngoaøi ra, chuùng toâi cuõng trình baøy hai loaïi phaùt bieåu SQL daïng ñònh nghóa vaø thay ñoå cô sôû döõ lieäu taïo nhö CREATE vaø ALTER, DROP. Giaùo vieân: Phaïm Höõu Khang
  • 128. PHP VAØ DATABASE 9-1 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Moân hoïc: PHP BAØI 9: PHP VAØ DATABASE Ñeå keát noái cô sôû döõ lieäu mySQL trong PHP, chuùng ta coù nhieàu caùch öùng vôùi nhieàu phöông thöùc keát noái cô sôû döõ lieäu, trong phaàn naøy chuùng ta taäp trung tìm hieåu caùch keát noái cô sôû döõ lieäu mySQL töø PHP baèng chính goùi cuûa noù. Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy Khai baùo keát noái cô sôû döõ lieäu Theâm maåu tin Caäp nhaät maåu tin. Xoaù maåu tin Truy vaán döõ lieäu 1. KEÁT NOÁI CÔ SÔÛ DÖÕ LIEÄU Ñeå keát noái cô sôû döõ lieäu mySQL baïn söû duïng khai baùp nhö sau: <?php $link = mysql_connect ("localhost", "root", "") or die ("Could not connect to MySQL Database"); mysql_select_db("TestDB", $link); ?> Trong ñoù khai baùo sau laø keát noái cô sôû döõ lieäu mySQL vôùi teân server/ip cuøng vôùi username vaù password: mysql_connect ("localhost", "root", "") Vaø mysql_select_db("TestDB", $link); ñeå choïn teân cô sôû döõ lieäu sau khi môû keát noái cô sôû döõ lieäu, neáu bieán $link coù giaù trò laø false thì keát noái cô sôû döõ lieäu khoâng thaønh coâng. Sau khi môû keát noái cô sôû döõ lieäu maø khoâng söû duïng tìh baïn coù theå ñoùng keát noái cô sôû döõ lieäu vôùi cuù phaùp nhö sau: mysql_close($link); Chaúng haïn, baïn khai baùo trang connection.php ñeå keát noái cô sôû döõ lieäu vaø ñoùng keát noái ngay sau khi môû thaønh coâng. <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);
  • 129. PHP VAØ DATABASE 9-2 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM ?> </BODY> </HTML> 2. THEÂM MAÅU TIN Ñeå theâm maåu tin, baïn söû duïng haøm mysql_query(chuoãi Insert). Chaúng haïn, chuùng ta khai baùo trang insert.php ñeå theâm maåu tin vaøo baûng tblships coù hai coät döõ lieäu laø ShipID vaø ShipName nhö ví duï trong trang insert.php. <HTML> <HEAD> <TITLE>::Welcome to PHP and mySQL</TITLE> </HEAD> <BODY> <h3>Them mau tin</h3> <?php require("dbcon.php"); $sql="insert into tblships values('A01','Testing')"; $result = mysql_query($sql,$link); $affectrow=0; if($result) $affectrow=mysql_affected_rows(); mysql_close($link); ?> So mau tin them vao<?= $affectrow?> </BODY> </HTML> Trong ñoù, baïn söû duïng haøm mysql_query vôùi hai tham soá laø $sql vaø $link. Keát quaû traû veà laø soá maåu tin thöïc thi. Ngoaøi ra, baïn coù theå söû duïng ñoaïn keát noái cô sôû döõ lieäu trong taäp 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 tröôøng hôïp cho pheùp ngöôøi söû duïng theâm maåu tin thì baïn thieát keá form yeâu caàu ngöôøi söû duïng nhaäp hai giaù trò sau ñoù submit ñeán trang keá tieáp ñeå thöïc thi vieäc theâm gt sau ñoù submit ñeán trang keá tieáp ñeå thöïc thi vieäc theâm giaù trò vöøa nhaäp vaøo cô sôû döõ lieäu nhö hình 9-1.
  • 130. PHP VAØ DATABASE 9-3 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 9-1: Theâm maåu tin Ñeå laøm ñieàu naøy, tröôùc tieân baïn khai baùo trang them.php, trong ñoù khai baùo ñoaïn javascript ñeå kieåm tra döõ lieäu nhaäp nhö sau: <SCRIPT language=JavaScript> function checkInput() { if (document.frmPHP.txtID.value=="") { alert("Invalid ID, Please enter ID"); document.frmPHP.txtID.focus(); return false; } if (document.frmPHP.txtName.value=="") { alert("Please enter Name"); document.frmPHP.txtName.focus(); return false; } return true; } </script> Keá ñeán khai baùo theå form vaø hai theû input laïi text yeâu caàu ngöôøi söû duïng nnaäp ID vaø Name nhö sau: <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>
  • 131. PHP VAØ DATABASE 9-4 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM </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> Löu yù raèng, baïn khai baùo soá kyù töï lôùn nhaát cho pheùp nhaäp baèng vôùi kích thöôùc ñaõ khai baùo trong cô sôû döõ lieäu öùng vôùi thuoäc tính maxlength. Khi ngöôøi söû duïng nhaäp hai giaù trò vaø nhaán nuùt submit, trang keá tieáp ñöïôc trieäu goïi. Trang naøy laáy giaù trò nhaäp baèng caùch söû duïng bieán form hay $HTTP_POST_VARS. Ñoái vôùi tröôøng hôïp naøy chuùng ta söû duïng bieán 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> 3. CAÄP NHAÄT MAÅU TIN Ñoái vôùi tröôøng hôïp caäp nhaät maåu tin, baïn cuõng söû duïng haøm mysql_query vôùi phaùt bieåu Update thay ví Insert nhö treân, ví duï chuùng ta khai baùo trang update.php ñeå caäp nhaät maåu tin trong baûng tblShips vôùi teân laø UpdateTesting khi maõ coù giaù trò laø A01. <HTML> <HEAD> <TITLE>::Welcome to PHP and mySQL</TITLE> </HEAD> <BODY> <h3>Cap nhat mau tin</h3> <?php require("dbcon.php"); $sql="Update tblships set ShipName='UpdateTesting' "; $sql.=" where ShipID='A01'"; $result = mysql_query($sql,$link); $affectrow=0; if($result)
  • 132. PHP VAØ DATABASE 9-5 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM $affectrow=mysql_affected_rows(); mysql_close($link); ?> So mau tin cap nhat <?= $affectrow?> </BODY> </HTML> Löu yù raèng, ñeå bieát soá maåu tin ñaõ thöïc thi bôûi phaùt bieåu SQL baïn söû duïng haøm mysql_affected_rows. if($result) $affectrow=mysql_affected_rows(); Töông töï nhö treân, baïn coù theå thieát keá form cho pheùp ngöôøi söû duïng caäp nhaät döõ lieäu baèng caùch thieát keá form yeâu caàu ngöôøi söû duïng nhaäp maõ vaø teân caäp nhaän. Tröôùc tieân thieát keá from cho pheùp nhaäp döõ lieäu ñeå caäp nhaät nhö ví duï trang capnhat.php, sau khi hoïc phaàn truy vaán xong, thaqy vì nhaäp maõ baïn cho pheùp ngöôøi söû duïng choïn trong danh saùch ñaõ coù nhö hình 9-2. Hình 9-2: Caäp nhaät döõ lieäu Sau khi ngöôøi söû duïng nhaán nuùt submit, trang doupdate.php seõ trieäu goïi, keát quaû traû veà 1 hay 0 maåu tin. <HTML> <HEAD> <TITLE>::Welcome to PHP and mySQL</TITLE> </HEAD> <BODY> <h3>Cap nhat mau tin</h3> <?php $affectrow=0; require("dbcon.php"); $sql="update tblships set ShipName='"; $sql .=$txtName."' where ShipID='".$txtID."'"; $result = mysql_query($sql,$link); if($result) $affectrow=mysql_affected_rows(); mysql_close($link); ?>
  • 133. PHP VAØ DATABASE 9-6 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM So mau tin cap nhat <?= $affectrow?> </BODY> </HTML> 4. XOAÙ MAÅU TIN Töông töï nhö vaäy khi xoaù maåu tin, baïn chæ thay ñoåi phaùt bieåu SQL daïng Delete nhö ví duï trong taäp tin delete.php. <HTML> <HEAD> <TITLE>::Welcome to PHP and mySQL</TITLE> </HEAD> <BODY> <h3>Xoa mau tin</h3> <?php require("dbcon.php"); $sql="Delete From tblships where ShipID='A01'"; $result = mysql_query($sql,$link); $affectrow=0; if($result) $affectrow=mysql_affected_rows(); mysql_close($link); ?> So mau tin da xoa <?= $affectrow?> </BODY> </HTML> Ñoái vôùi tröôøng hôïp xoaù thì ñôn giaûn hôn, baïn cæh caàn bieát ñöôïc maõ caàn xoaù, chính vì vaäy trong tröôøng hôïp naøy chuùng ta chæ caàn thieát keá trang cho pheùp nhaäp maõ nhö hình 9-3. Hình 9-3: Xoaù 1 maåu tin Sau khi nhaäp maõ caàn xoaù, neáu ngöôøi söû duïng nhaán nuùt Delete laäp töùc trang dodelete.php seõ trieäu goïi vaø xoaù maåu tin töông öùng. <HTML> <HEAD> <TITLE>::Welcome to PHP and mySQL</TITLE> </HEAD>
  • 134. PHP VAØ DATABASE 9-7 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM <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> 5. TRUY VAÁN DÖÕ LIEÄU Ñeå truy vaán döõ lieäu baïn söû duïng haøm mysql_num_rows ñeå bieát ñöôïc soá maåu tin traû veà vaø haøm mysql_fetch_array ñeå ñoïc töøng maåu tin vaø maûng sau ñoù trình baøy giaù trò töø maûng naøy. Chaúng haïn, chuùng ta taïo moät taäp tin lietke.php duøng ñeå lieät keâ danh saùch maåu tin trong baûng tblShips nhö hình 9-4. Hình 9-4: Lieät keâ maåu tin Ñeå laøm ñieàu naøy, baïn khai baùo ñoaïn chöông trình ñoïc baûng döõ lieäu töông töï nhö ví duï sau: <?php require("dbcon.php"); $totalRows = 0; $stSQL ="select * from tblShips"; $result = mysql_query($stSQL, $link); $totalRows=mysql_num_rows($result); ?> Sau ñoù, duøng haøm mysql_fetch_array ñeå ñoïc töøng maåu tin vaø in ra nhö sau: <?php if($totalRows>0) { $i=0; while ($row = mysql_fetch_array ($result)) { $i+=1;
  • 135. PHP VAØ DATABASE 9-8 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM ?> <tr valign="top"> <td> <?=$row["ShipID"]?> </td> <td ><?=$row["ShipName"]?></td> </tr> Trong tröôøng hôïp soá maåu tin traû veà laø 0 thì in ra caâu thoâng baùo khoâng tìm thaáy nhö sau: <?php } }else{ ?> <tr valign="top"> <td >&nbsp;</td> <td > <b><font face="Arial" color="#FF0000"> Oop! Ship not found!</font></b></td> </tr> <?php } ?> 6. KEÁT LUAÄN Trong baøi naøy, chuùng ta taäp trung tìm hieåu caùch keát noái cô sôû döõ lieäu, theâm, xoaù caäp nhaät vaø lieät keâ maåu tin. Trong baøi keá tieáp chuùng ta tìm hieåu nhieàu caùc trình baøy döõ lieäu, xoaù maåu tin theo daïng maûng.
  • 136. PHP VAØ DATABASE 9-1 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Moân hoïc: PHP BAØI 10: XOAÙ, CAÄP NHAÄT DÖÕ LIEÄU DAÏNG MAÛNG Trong baøi tröôùc chuùng ta ñaõ laøm quen vôùi caùch xoaù maåu tin trong cô sôû döõ lieäu mySQL. Ñoái vôùi tröôøng hôïp xoaù moät luùc nhieàu maåu tin, chuùng ta phaûi xaây döïng trang PHP coù söû duïng theû input daïng checkbox. Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy Lieät keâ döõ lieäu daïng danh saùch Xoaù nhieàu maåu tin Caäp nhaät nhieàu maåu tin 1. LIEÄT KEÂ DÖÕ LIEÄU Ñeå xoaù nhieàu maåu tin cuøng moät luùc, tröôùc tieân baïn khai baùo trang PHP ñeå lieät keâ danh saùch maåu tin trong maûng döõ lieäu chaèng haïn, moãi maåu tin xuaát hieän moät checkbox töông öùng. Checkbox naøy coù giaù trò laø maõ nhaän daïng cuûa maåu tin ñoù. Trong tröôøng hôïp naøy chuùng ta duøng coät khoaù cuûa maõ chuyeån haøng (SubCateID) trong baûng tblSubCategories ñònh nghóa trong trang lietke.php nhö hình 10-1.
  • 137. PHP VAØ DATABASE 9-2 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 10-1: Lieät keâ danh saùch laïi saûn phaåm Ñeå cho pheùp laáy ñöôïc nhieàu giaù trò choïn cuûa saûn phaåm nhö hình tren, baïn khai baùo caùc checkbox naøy cuøng teân (giaû söû teân laø chkid) vaø giaù trò trò laø SubCateID cuûa moãi saûn phaåm nhö ví duï 10-1 trong trang lietke.php. <?php if($totalRows>0) { $i=0; while ($row = mysql_fetch_array ($result)) { $i+=1; ?> <tr valign="top"> <td><input type=checkbox name=chkid value="<?=$row["SubCateID"]?>"> </td> <td><?=$row["CateID"]?> </td> <td><?=$row["SubCateID"]?> </td> <td ><a href="capnhat.php?id=<?=$row["SubCateID"]?>"> <?=$row["SubCateName"]?></a></td> </tr> <?php } ?> <tr valign="top"> <td colspan="4" align="middle"> <hr noshade size="1"> </td> </tr> <tr valign="top"> <td colspan=3><input type=submit value="Delete"> <input type=hidden name=from_ value="subcategories"> <input type=hidden name=type value="0"> <input type=hidden name=chon value=""> <input type=button value="New" onclick="window.open('them.php',target='_main')"></td> <td >Tong so mau tin <?=$i?></td> </tr> <?php }else{ ?> <tr valign="top"> <td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td> <td > <b><font face="Arial" color="#FF0000"> Oop! Ship not found!</font></b></td> </tr> <?php } ?> Trong ñoù, hai khai baùo sau: <input type=hidden name=from_ value="subcategories"> <input type=hidden name=type value="0"> <input type=hidden name=chon value=""> Cho bieát baïn submit töø trang naøo vaø loaïi xoaù nhieàu maåu tin hay moät maåu tin ñoái vôùi baûng töông öùng. Muïc ñích cuûa vaán ñeà naøy laø trang delete söû duïng chung cho nhieàu baûng khaùc nhau vaø töø trang lieät keâ (xoaù nhieàu) hoaëc töø trang edit (1 maåu tin cuï theå). Ngoaøi ra, chuùng ta khai baùo <input type=hidden name=chon value=""> ñeå nhaän giaù trò choïn treân caùch checkbox baèng caùch khai baùo ñoaïn javascript nhö sau: <script> function calculatechon()
  • 138. PHP VAØ DATABASE 9-3 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM { var strchon=""; var alen=document.frmList.elements.length; var buttons=1; 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 nhieân, do nhieàu loaïi saûn phaåm thuoäc caùc nhoùm saûn phaåm khaùc nhau, chính vì vaäy baïn khai baùo danh saùch nhoùm saûn phaåm treân theû select cho pheùp ngöôøi söû duïng lieät keâ saùch theo nhoùm saûn phaåm nhö hình 10-2. Hình 10-2: Lieät keâ danh saùch loaïi saùch Ñeå lieät keâ danh saùch nhoùm trong baûng tblCategories, baèng caùch khai baùo phöông thöùc nhaän chuoãi SQL daïng Select vaø giaù trò maëc ñònh traû veà nhieàu phaàn töû theû option trong taäp tin database.php nhö ví duï 10-2.
  • 139. PHP VAØ DATABASE 9-4 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 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; } Sau ñoù, goïi phöông thöùc naøy trong trang lietketheonhom.php nhö ví duï 10-3. <?php require("dbcon.php"); require("database.php"); $id=""; if (isset($cateid)) $id=$cateid; $stSQL ="select CateID As ID, CateName as Name from tblCategories "; $result = mysql_query($stSQL, $link); $totalRows=mysql_num_rows($result); $strOption=optionselected($stSQL,$id,$link); ?> <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>&nbsp;</td> </tr> </form> Laàn ñaàu tieân baïn coù theå choïn maëc ñònh moät nhoùm hoaëc lieät keâ taát caû, khi ngöôøi söû duïng choïn nhoùm saûn phaåm naøo ñoù thì trang lietketheonhom.php seõ lieät keâ danh saùch loaïi saùch cuûa nhoùm saùch ñoù. Ñeå laøm ñieàu naøy, baïn khai baùo theû form vôùi 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>&nbsp;</td> </tr> </form> Khi ngöôøi söû duïng choïn caùc maåu tin nhö hình 10-2 vaø nhaán nuùt Delete, döïa vaøo giaù trò cuûa nuùt coù teân action (trong tröôøng hôïp naøy laø Delete), baïn coù theå khai baùo bieán ñeå laáy giaù trò choïn baèng caùch khai baùo nhö ví duï 10-5. $strid=$chon;
  • 140. PHP VAØ DATABASE 9-5 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM $strid=str_replace(",","','",$strid); Döïa vaøo theû hidden khai baùo trong caùc trang trình baøy danh saùch (chaúng aïn lietketheonhom.php) maåu tin nhö sau: <input name="from" type=hidden value="subcategories"> Baïn coù theå bieát töø trang naøo goïi ñeán trang dodelete.php ñeå quay trôû veà khi thöïc hieän xong taùc vuï xöû lyù. Ngoaøi ra, döïa vaøo giaù trò cuûa nuùt action ñeå thöïc hieän phaùt bieåu SQL. Chaúng haïn, trong tröôøng hôïp naøy neáu ngöôøi söû duïng nhaán huùt Delete thì baïn khai baùo 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ù, baïn coù theå thöïc thi phaùt bieåu SQL vöøa khai baùo ôû treân nhö ví duï 10-7. if($stSQL!="") { $result = mysql_query($stSQL, $link); } Löu yù raèng, baïn cuõng neân khai baùo try catch trong khi laøm vieäc vôùi cô sôû döõ lieäu. Ngoaøi ra, baïn cuõng phaûi xaùc nhaän tröôùc khi thöïc thi haønh ñoäng xoaù maåu tin choïn baèng caùch khai baùo ñoaïn Javascript nhö sau: <script> function isok() { return confirm('Are you sure to delete?'); } </script> Sau ñoù goïi trong bieán coá onsubmit cuûa form nhö sau: <form action=dosql.php method=post onsubmit="return calculatechon();"> 2. CAÄP NHAÄT NHIEÀU MAÅU TIN Töông töï nhö tröôøng hôïp Delete, khi baïn duyeät (approval) moät soá maåu tin theo moät coät döõ lieäu naøo ñoù, chaúng haïn, trong tröôøng hôïp naøy chuùng ta cho pheùp söû duïng nhöõng saûn phaåm ñaõ qua söï ñoàng yù cuûa nhaø quaûn lyù thì coät döõ lieäu Activate cuûa baûng tbltems coù giaù trò laø 1. Ñeå laøm ñieàu naøy, tröôùc tieân baïn lieät keâ danh saùch saûn phaåm nhö hình 10-3.
  • 141. PHP VAØ DATABASE 9-6 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 10-3: Lieät keâ danh saùch saûn phaåm duyeät hay chöa Töông töï nhö trong tröôøng hôïp delete, baïn khai baùo 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."')";
  • 142. PHP VAØ DATABASE 9-7 COMPUTER LEARNING CENTER WWW.HUUKHANG.COM 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> 3. KEÁT LUAÄN Trong baøi naøy, chuùng ta tìm hieåu chöùc naêng xoaù, caäp nhaät nhieàu maåu tin baèng caùch söû duïng theû input loaïi checkbox cuøng teân vaø khaùc giaù trò, baøi keá tieáp chuùng ta tieáp tuïc tìm hieåu veà chöùc naêng ñaêng nhaäp trong PHP.