Nghiem Phu Cuong, http://www.diachiweb.com, email: cuongnp@diachiweb.com
T¹o Web ®éng víi PHP vµ MySQL
Môc lôc
1. Giíi thiÖu vÒ tµi liÖu
2. Híng dÉn, vµ híng dÉn cµi ®Æt
3. ViÕt m∙ lÖnh
4. Thªm b¶n ghi
5. Xo¸, thªm vµ t×m kiÕm d÷ liÖu
T¹o Web ®éng b»ng PHP & MySQL
1
Nghiem Phu Cuong, http://www.diachiweb.com, email: cuongnp@diachiweb.com
1. Giíi thiÖu tµi liÖu
Tµi liÖu nµy híng dÉn sö dông 2 phÇn mÒm m∙ nguån më PHP vµ MySQL ®Ó t¹o c¸c trang Web ®éng. Khi ®äc hÕt tµi liÖu nµy, b¹n sÏ biÕt Web ®éng lµm viÖc nh thÕ nµo vµ chóng lÊy th«ng tin, hiÓn thÞ th«ng tin trªn Web site cña b¹n nh thÕ nµo.
Giíi thiÖu t¸c gi¶:
Nghiªm Phó Cêng
HiÖn ®ang c«ng t¸c t¹i Trung t©m tin häc Thèng kª, thuéc Tæng Côc Thèng kª, ®Þa chØ 54 NguyÔn ChÝ Thanh.
Web site:
http://www.diachiweb.com
Email:
cuongnp@diachiweb.com
NÕu b¹n cã comment g× xin vui lßng göi email cho t«i, xin c¶m ¬n.
T¹o Web ®éng b»ng PHP & MySQL
2
Nghiem Phu Cuong, http://www.diachiweb.com, email: cuongnp@diachiweb.com
Giíi thiÖu vµ híng dÉn cµi ®Æt
T¹i sao l¹i cÇn néi dung ®éng
NÕu néi dung trang Web cña b¹n ngµy mét nhiÒu, b¹n cÇn ph¶i t¹o Web ®éng, b¹n thö h×nh dung nÕu b¹n cã mét cöa hµng ®iÖn tö trªn Web cã 1.000 s¶n phÈm. B¹n ph¶i t¹o 1.000 trang Web cho mçi s¶n phÈm vµ khi mäi thø thay ®æi, b¹n ph¶i söa ®æi l¹i tÊt c¶ nh÷ng trang ®ã. §ã lµ mét viÖc kh«ng høng thó vµ tèn thêi gian, vËy b¹n ph¶i cÇn Web ®éng, b¹n chØ viÖc t¹o mét trang hiÓn thÞ, vµ néi dung tõng s¶n phÈm lu tr÷ trong c¬ së d÷ liÖu, th«ng tin hiÓn thÞ sÏ tuú thuéc vµo sù truy cËp cña ngêi truy cËp
PHP lµ mét ng«n ng÷ kÞch b¶n cã m∙ nguån më,
MySQL lµ hÖ qu¶n trÞ c¬ së d÷ liÖu cã m∙ nguån më, dÔ sö dông, cµi ®Æt ®¬n gi¶n vµ gi¸ thÊp.
Cµi ®Æt Apache server
Tríc tiªn b¹n h∙y cµi ®Æt Apache, tµi liÖu nµy híng dÉn b¹n cµi ®Æt trªn hÖ ®iÒu hµnh m∙ nguån më Linux. §Ó cµi ®Æt b¹n cÇn ph¶i ®îc phÐp truy cËp vµo root trªn m¸y chñ cña b¹n.
Cµi ®Æt Apache b¹n ph¶i download file apache_x.x.xx.tar.gz (vÝ dô: apache_1.3.14.tar.gz) tõ Web site cña Apache vµ lu chóng vµo th môc /tmp/src. Sau ®ã b¹n h∙y tíi th môc ®ã:
§Ó cµi ®Æt b¹n h∙y thùc hiÖn lÖnh sau:
# ./configure –prefix=/usr/local/apache –enable-module=so
# make
# make install
Apache sÏ ®îc cµi ®Æt vµo th môc /usr/local/apache, nÕu b¹n muèn thay ®æi th môc h∙y thay thÕ /usr/local/apache b»ng th môc b¹n muèn. B©y giê Apache ®∙ ®îc cµi ®Æt vµo m¸y tÝnh cña b¹n.
B¹n còng cã thÓ thay ®æi tªn m¸y chñ thµnh mét tªn cã ý nghÜa nµo ®ã, ®Ó lµm viÖc nµy b¹n h∙y më tÖp httpd.conf (n»m ë th môc /usr/local/apache/conf) vµ t×m dßng b¾t ®Çu b»ng ServerName. Thay ServerName b»ng mét tªn cña b¹n, vÝ dô localhost
B©y giê b¹n h∙y kiÓm tra viÖc cµi ®Æt, khái ®éng Apache HTTP server b»ng lÖnh:
T¹o Web ®éng b»ng PHP & MySQL
3
Nghiem Phu Cuong, http://www.diachiweb.com, email: cuongnp@diachiweb.com
# /usr/local/apache/bin/apachectl start
B¹n sÏ thÊy th«ng ®iÖp nh sau: “httpd started”. Më tr×nh duyÖt Web vµ gâ ®Þa chØ http://localhost, b¹n sÏ thÊy trang Web hiÖn thÞ.
Cµi ®Æt MySQL
Sau ®©y chóng ta sÏ cµi ®Æt MySQL, còng t¬ng tù nh cµi ®Æt Apache, b¹n download tÖp tin cµi ®Æt tõ Web site MySQL, vµ lu nã vµo th môc /tmp/src. Phiªn b¶n míi nhÊt mµ t«i ®îc biÕt lµ mýql-3.22.32.tar.gz
# cd /tmp/src
# gunzip –dc mysql-x.xx.xx.tar.gz | tar xv
# cd mysql –x.xx.xx
# ./configure –prefix=/usr/local/mysql
# make
# make install
B©y giê MySQL sÏ ®îc cµi ®Æt vµo m¸y tÝnh cña b¹n
Cµi ®Æt PHP
ViÖc cµi ®Æt PHP còng hoµn toµn t¬ng tù nh cµi ®Æt MySQL. Download vµ lu tõ PHP site vµo th môc /tmp/src
# cd /tmp/src
# gunzip –dc php-x.xx.xx.tar.gz | tar xv
# cd php –x.xx.xx
# ./configure - - with-mysql=/usr/local/mysql - -with-apxs=/usr/local/apache/bin/apxs
# make
# make install
Copy file ini tíi th môc:
# cd php.ini-dist /usr/local/lib/php.ini
Më tÖp httpd.conf vµ t×m ®Õn ®o¹n cã néi dung sau:
# And for PHP 4.x, use
T¹o Web ®éng b»ng PHP & MySQL
4
Nghiem Phu Cuong, http://www.diachiweb.com, email: cuongnp@diachiweb.com
#
#AddType application/x-httpd-php .php
#AddType application/x-httpd-php-source .phps
B¹n h∙y gì bá nh÷ng dÊu # tríc AddType, b¹n sÏ thÊy nh sau:
# And for PHP 4.x, use
#
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Lu l¹i tÖp vµ khëi ®éng l¹i Apache
B¹n h∙y kiÓm tra viÖc cµi ®Æt PHP cña m×nh b»ng c¸ch gâ so¹n th¶o ®o¹n m∙ sau:
phpinfo();
?>
Lu víi tªn test.php, sau ®ã b¹n h∙y gäi tÖp tin tõ tr×nh duyÖt Web cña b¹n. NÕu b¹n thÊy kÕt qu¶ hiÓn thÞ nh mµn h×nh sau, cã nghÜa lµ b¹n ®∙ cµi ®Æt thµnh c«ng, nÕu b¹n kh«ng thÊy néi dung nh h×nh, b¹n h∙y cµi ®Æt l¹i MySQL vµ PHP.
T¹o Web ®éng b»ng PHP & MySQL
5
Nghiem Phu Cuong, http://www.diachiweb.com, email: cuongnp@diachiweb.com
B¾t ®Çu viÕt m·
Theo truyÒn thèng, chóng ta sÏ viÕt m∙ b¾t ®Çu víi tõ “hello world” lµm vÝ dô. B¹n h∙y gäi ch¬ng tr×nh so¹n th¶o vµ gâ vµo nh÷ng dßng lÖnh sau:
echo “Hello World”;
?>
B¹n h∙y lu tÖp tin víi tªn first.php vµ gäi hiÓn thÞ trªn tr×nh duyÖt Web. Trang Web sÏ hiÓn thÞ “Hello World”. Xem m∙ HTML cña trang nµy b¹n sÏ thÊy ®o¹n text Hello World. §iÒu nµy cã nghÜa lµ m∙ PHP ®∙ ®îc thùc hiÖn. B¹n h∙y ghi nhí lµ ®Ó më vµ ®ãng mét khèi m∙ PHP.
T¹o c¬ së d÷ liÖu
Nh vËy lµ b¹n thÊy PHP ®∙ lµm viÖc vµ b¹n ®∙ t¹o ®îc nh÷ng ®o¹n m∙ ®Çu tiªn, b©y giê chóng ta sÏ t¹o mét c¬ së d÷ liÖu ®Ó lµm viÖc. B¹n h∙y gâ lÖnh sau:
Mysqladmin –uroot create learndb
Víi lÖnh trªn c¬ së d÷ liÖu “learndb” sÏ ®îc t¹o. B©y giê chóng ta sÏ t¹o b¶ng d÷ liÖu, b¹n h∙y thùc hiÖn lÖnh sau:
mysql
B¹n sÏ thÊy néi dung sau:
Welcome to MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5 to server version 3.22.34
Type ‘help’ for help
T¹o Web ®éng b»ng PHP & MySQL
6
Nghiem Phu Cuong, http://www.diachiweb.com, email: cuongnp@diachiweb.com
Gâ lÖnh:
CONNECT learndb
CREATE TABLE personel
(
id int NOT NULL AUTO_INCREMENT,
firstname varchar(25),
lastname varchar(20),
nick varchar(12),
email varchar(35),
salary int,
PRIMARY KEY (id),
UNIQUE id (id)
);
INSERT INTO personel VALUES (‘1’, ‘Cuong’,’Nghiem Phu’,’cuongnp’,’cuongnp@diachiweb.com’,’1500’);
INSERT INTO personel VALUES (‘2’,’Van’,’Nguyen Thi’,’vannt’,’vannt@diachiweb.com’,’1500’);
HiÓn thÞ
B©y giê b¹n ®∙ cã d÷ liÖu, chóng ta sÏ hiÓn thÞ nã víi PHP. Lu ®o¹n m∙ sau víi tªn tÖp tin viewdb.php:
$db = mysql_connect(“localhost”, “root”, “”);
mysql_select_db(“learndb”,$db);
$result=mysql_query(“SELECT * FROM personel”,$db);
echo “
| Full Name | Nick Name | Salary |
| ”;
echo $myrow [“firstname”]; echo “ “; echo $myrow [“lastname”]; echo “ | ”;
”;
echo $myrow[“salary”]; } echo “ |
?>
Gäi hiÓn thÞ trªn tr×nh duyÖt Web b¹n sÏ thÊy kÕt qu¶ ®îc hiÓn thÞ, tuy nhiªn ®o¹n m∙ nµy lµm viÖc nh thÕ nµo? Tríc tiªn h∙y xem biÕn ®Çu tiªn ®îc khai b¸o $db. Trong PHP chóng ta ®Þnh nghÜa biÕn víi ký tù “$” ë ®Çu. Chuçi ký tù ®i sau $ lµ tªn cña biÕn. Chóng ta g¸n gi¸ trÞ cho biÕn b»ng m∙ lÖnh: $variable_name = somevalue;
B¹y h∙y lu«n nhí lµ thªm dÊu “;” ë cuèi dßng lÖnh PHP. Chóng ta ®∙ ®Þnh nghÜa biÕn $db vµ t¹o kÕt nèi tíi c¬ së d÷ liÖu mysql b»ng lÖnh:
“mysql_connect(“localhost”,”root”,””)” lÖnh nµy cã nghÜa lµ kÕt nèi tíi d÷ liÖu ë m¸y chñ cã tªn localhost, víi ngêi truy cËp cã tªn root vµ mËt khÈu “”. B¹n h∙y thay thÕ chóng b»ng tªn vµ mËt khÈu cña m×nh.
Chóng ta muèn lÊy th«ng tin tõ c¬ së d÷ liÖu, chóng ta truy vÊn d÷ liÖu b»ng lÖnh “$result=mysql_query(“SELECT * FROM personel”,$db)”
Thùc hiÖn truy vÊn trªn víi m∙ lÖnh PHP mysql_query() vµ lu kÕt qu¶ vµo biÕt $result. Chóng ta dïng hµm mysql_fetch_array() ®Ó biÕt chÝnh x¸c ®ang ë b¶n ghi nµo lu vµo biÕn $myrow.
Chóng ta ®a d÷ liÖu ra mµn h×nh “echo $myrow[“firstname”];”
Ngay b©y giê b¹n h∙y gäi hiÓn thÞ viewdp.php trªn tr×nh duyÖt Web cña b¹n. Vµ b¹n sÏ thÊy kÕt qu¶.
T¹o Web ®éng b»ng PHP & MySQL
8
Nghiem Phu Cuong, http://www.diachiweb.com, email: cuongnp@diachiweb.com
Thªm mét b¶n ghi
T¹o mét form HTML
B¹n ®∙ hiÓn thÞ ®îc d÷ liÖu lu trong c¬ së d÷ liÖu MySQL, nhng b¹n muèn thªm d÷ liÖu. Chóng ta gi¶ sö, b¹n ®∙ biÕt vÒ HTML form, ®o¹n m∙ sau sÏ t¹o form HTML, b¹n h∙y lu víi tªn datain.html
B©y giê chóng ta ®∙ cã form ®Ó ®a th«ng tin vµo trang “datain.php”. Chóng ta ph¶i viÕt m∙ cho trang nµy ®Ó nã cã kh¶ n¨ng ®a th«ng tin vµo c¬ së d÷ liÖu MySQL cña chóng ta. M∙ ®îc viÕt nh sau:
$db=mysql_connect(“localhost”,”root”,””);
mysql_select_db(“learndb”,$db);
$sql=”INSERT INTO personel (firstname,lastname,nick,email,salary) VALUES _ ($firstname,$lastname,#nickname,#email,#salary);
$result = mysql_query($sql);
echo “Thank you! Information entered.\n”;
?>
Chóng ta sö dông c©u lÖnh SQL “INSERT INTO”, nghÜa lµ chóng ta sÏ chÌn vµo d÷ liÖu mét b¶n ghi.
T¹o Web ®éng b»ng PHP & MySQL
9
Nghiem Phu Cuong, http://www.diachiweb.com, email: cuongnp@diachiweb.com
PHP cã mét c¸ch thËt hay ®Ó nhËn d÷ liÖu, víi « textbox cã tªn “first”, t¹o víi biÕn $first vµ nã sÏ cã d÷ liÖu ®îc nhËp ë « textbox.
B©y giê chóng ta sÏ gép hai ®o¹n m∙ ë hai tÖp “datain.html” vµ “datain.php” vµo 1 tÖp, chóng ta gäi lµ input.php, m∙ ®îc viÕt nh sau:
T¹o Web ®éng b»ng PHP & MySQL 10
Nghiem Phu Cuong, http://www.diachiweb.com, email: cuongnp@diachiweb.com
if ($Submit)
{
$db=mysql_connect(“localhost”,”root”,””);
mysql_select_db(“learndb”,$db);
$sql=”INSERT INTO personel (firstname,lastname,nick,email,salary) VALUES _ ($firstname,$lastname,#nickname,#email,#salary);
$result = mysql_query($sql);
echo “Thank you! Information entered.\n”;
}
else
{
?>
}
?>
§o¹n m∙ trªn sÏ hiÓn thÞ mét form ®Ó nhËp d÷ liÖu hoÆc ®a d÷ liÖu vµo c¬ së d÷ liÖu. §o¹n m∙ trªn hiÓu khi nµo ph¶i lµm c¸i g×! Chóng ta ®∙ biÕt r»ng PHP tù ®éng t¹o viÕt víi th«ng tin ®Ó ®a vµo. V× vËy nã sÏ tù ®éng t¹o biÕn $submit khi form ®îc gäi ®a d÷ liÖu. §o¹n m∙ trªn sÏ tù ®éng t×m kiÕm gi¸ trÝ cña biÕn $submit, nÕu tån tµi vµ cã gi¸ trÞ th× d÷ liÖu sÏ ®îc ®a vµo c¬ së d÷ liÖu, ngîc l¹i sÏ hiÓn thÞ form ®Ó nhËp liÖu.
T¹o Web ®éng b»ng PHP & MySQL 11
Nghiem Phu Cuong, http://www.diachiweb.com, email: cuongnp@diachiweb.com
Xo¸, söa vµ t×m kiÕm d÷ liÖu
Xo¸ d÷ liÖu
Chóng ta ®∙ biÕt hiÓn thÞ d÷ liÖu vµ thªm d÷ liÖu vµo c¬ së d÷ liÖu. B©y giê chóng ta sÏ viÕt m∙ ®Ó xo¸ mét sè d÷ liÖu theo ý cña chóng ta. Tªn tin delete.php cña chóng ta sÏ gióp chóng ta lµm viÖc ®ã. LÖnh SQL ®Ó xo¸ d÷ liÖu nh sau: “DELETE FROM database_name WHERE field_name=somevalue”
$db=mysql_connect(“localhost”,”root”,””);
mysql_select_db(“learndb”,$db);
mysql_query(”DELETE FROM personel WHERE id=$id,$db);
echo “Information Deleted”;
?>
B¹n ph¶i thËt sù chó ý khi viÕt m· lÖnh ®Ó xo¸ d÷ liÖu, b¹n sÏ kh«ng thÓ kh«i phôc l¹i ®îc d÷ liÖu.
Söa d÷ liÖu
Khi b¹n cÇn söa d÷ liÖu cña mét ngêi nµo ®ã, b¹n sÏ viÕt m∙ nh thÕ nµo? Khi cÇn söa d÷ liÖu b¹n h∙y sö dông c©u lÖnh SQL “UPDATE database_name SET fieldname1=$variable1, fieldname2=$variable2,… WHERE ….”
Nh vËy ®Ó söa d÷ liÖu cña personel b¹n viÕt m∙ nh sau:
$db=mysql_connect(“localhost”,”root”,””);
mysql_select_db(“learndb”,$db);
mysql_query(”UPDATE personel SET firstname=$firstname WHERE id=$id,$db);
echo “Information Updated”;
T¹o Web ®éng b»ng PHP & MySQL 12
Nghiem Phu Cuong, http://www.diachiweb.com, email: cuongnp@diachiweb.com
?>
T×m kiÕm d÷ liÖu
NÕu b¹n muèn t×m kiÕm mét ngêi nµo ®ã tho¶ m∙n mét sè ®iÒu nµo, b¹n cÇn ph¶i viÕt m∙ ®Ó t×m kiÕm d÷ liÖu tõ c¬ së d÷ liÖu. M∙ ®îc viÕt nh sau:
if ($searchstring)
{
$sql=”SELECT * FROM personel WHERE $searchtype LIKE ‘%$searchstring%’ ORDER BY firstname ASC”;
mysql_select_db(“learndb”,$db);
$result=my_sql_query($sql,$db);
echo “
| Full name | Nick name | Options |
| ".$myrow["firstname"]."
".$myrow["nick"]; echo " | View";
} echo " |
}
else
{
?>
}
?>

