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 l­u 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µ l­u 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µ l­u 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µ l­u 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

L­u 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();

?>

L­u 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 l­u 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. L­u ®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 “

”;

echo “

”;

T¹o Web ®éng b»ng PHP & MySQL

7

Nghiem Phu Cuong, http://www.diachiweb.com, email: cuongnp@diachiweb.com

while ($myrow = mysql_fetch_array($result))

{

echo “

”;

echo $myrow[“nick”];

echo “

Full NameNick NameSalary
”;

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µ l­u 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 l­u 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 l­u trong c¬ së d÷ liÖu MySQL, nh­ng 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 l­u víi tªn datain.html

First name:

Last name:

Nick name:

Email:

Salary:

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

{

?>

First name:

Last name:

Nick name:

Email:

Salary:

}

?>

§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 “

”;

echo “

”;

while ($myrow = mysql_fetch_array($result))

{

echo "

Full nameNick nameOptions
".$myrow["firstname"]."

".$myrow["nick"];

echo "

View";

}

echo "

";

}

else

{

?>

T¹o Web ®éng b»ng PHP & MySQL 13

Nghiem Phu Cuong, http://www.diachiweb.com, email: cuongnp@diachiweb.com

Insert you search string here Search type

>

}

?>

§o¹n m∙ trªn sÏ t×m kiÕm mét ng­êi cã tªn trïng víi gi¸ trÞ cña biÕn searchstring.

T¹o Web ®éng b»ng PHP & MySQL 14