Thiết lập kết nối cơ sở đữ liệu Để kết nối cơ sở dữ liệu MySQL trong PHP, ban khai báo doan ma username 14 tai khoản của người sử dụng trong cơ sở dữ liệu My§QL, trong trường hợp này t
Trang 1Pham HÍữŒu Khang (Chu bién)
Phương Lan (Hiéu dinh)
Trang 2PHẠM HỮU KHANG (Chủ biên) Ea) PHUONG LAN (Hiệu đính)
_ Lap trinh web bang php 5.3 Ry
Trang 3GIỚI THIỆU sim"?
GIỚI THIỆU
Tiếp theo tập 1, tập 2 của cuốn sách “Lập trình Web bằng PHP 5.38
và cơ sử dữ liệu MyS§QL 5.1” bao gồm 10 chương và ứng dụng đính kèm
lần lượt giới thiệu cùng bạn đọc các kiến thức liên quan đến Session,
Cookie, giỏ hàng trực tuyến, tìm kiếm và phân trang dữ liệu, lập trình
hướng đối tượng va sit dung Zend Framework
` Chương 8 trình bày kiến thức cơ bản của kính bản trình chủ PHP
và cơ sở đữ liệu MySQL
Sang chương 9, bạn tiếp tục tìm hiểu cách thiết kế trang Web cho phép người sử dụng tìm kiếm và phân trang dữ liệu trình bày với nhiều
hình thức khác nhau
Để xây dựng ứng dụng thương mại điện tử hoàn chỉnh và mang
tính chuyên nghiệp cao, bạn tiếp tục tìm hiểu cách sử dụng hàm Session
va Cookie trong chương 10 để lưu trữ thông tin của người sử dụng nhằm vào mục đích quản lý tài nguyên của Website
Mọi ứng dụng thương mại điện tử đều cung cấp chương giỏ hàng
trực tuyến, bạn cũng được tìm hiếu cách xây dựng giỏ hàng bằng cách sử
dụng Session lẫn Cookie trong chương 11
Khi có nhu cầu trình bày hình ảnh, đồ thi va 4m thant lẫn phim ảnh, bạn tìm hiểu cách sử dụng mã PHP trong chương 12
Tiếp theo, bạn có thể tìm hiểu cú pháp của kịch bản PHP trong chương 13 và học cách lập trình hướng đối tượng và sử dụng lớp này vào ứng dụng trong chương 14
Chương 15 giúp bạn sử dụng kịch bản trình khách Java Script dé
thay đổi góc nhìn và ứng xử của thẻ HTML trong trang Web
Sang chương 16, bạn khám phá thư viện mã nguồn mở Zend viết
bằng PHP dùng cho các loại cơ sở đữ liệu và học cách sử dụng các lớp trong thư viện này vào ứng dụng bán hàng trực tuyến trong chương 17.
Trang 44 GIỚI THIỆU
HƯỚNG DẪN SỬ DỤNG ỨNG DỤNG KÈM THEO SÁCH
Để sử dụng ứng dụng đính kèm theo sách (bạn download trên website www.minhkhai.com.vn), trước tiên bạn chép danh sách thư mục
(sau khi giải nén) vào ổ đĩa cứng
Sau đó, thao tác từng bước để sử dụng ứng dụng đính kèm theo
sách
Tạo cơ sở dữ liệu MySQL:
* Import phat bidu SQL tit tap tin MarketoHome.sql
Lap trinh PHP:
® Chép thư mục Chapter08 đến Chapter17 vào thư mục
C:\WampServer\www\
* Triéu gọi ứng dụng từ chương 8 đến 17 với địa chỉ
http:/localhost/Chapter08/ hoặc http:/IPAddress/ Chapter08/ Lập trình PHP và Zend Framework:
& Tải ZendFramework-1.9.6 từ địa chỉ
http://framework.zend.com/download/current/
* Chép thu muc Zend vao thu muc Chapterl6 va Chapterl7 ting với chương 16 và chương 17.
Trang 5THƯ NGỎ 5 Al’
THU NGO
Kính thưa quỹ Bạn đọc gần xa!
Trước hết, Ban xuất bản xin bày tỏ lòng biết ơn và niềm vinh hạnh
được đông đảo Bạn đọc nhiệt tình ủng hộ tủ sách ME.PUB
Trong thời gian qua chúng tôi rất vui và cảm ơn các Bạn đã gửi e-mail đóng góp nhiều ý kiến quý báu cho tủ sách
Mục tiêu và phương châm phục vụ của chúng tôi là:
e© _ Lao động khoa học nghiêm túc
e Chất lượng và ngày càng chất lượng hơn
e Tất cả vì Bạn đọc
Một lân nữa, Ban xuất bản MK.PUB xin kính mời quý Ban doc
tiếp tục tham gia cùng chúng tôi để nâng cao chất lượng sách Cụ thể:
Trong quá trình sử dụng sách, nếu quý Bạn phát hiện thấy bất kỳ sai sót nào về phần nội dung (đởù nhở) thì hãy gửi thắc mắc của Bạn đến
địa chỉ:
Nhà sách Minh Khai
249 Nguyễn Thị Minh Khai, Q.1, Tp Hô Chí Minh
E-mail: mk.book@minhkhai.com.un hoac mk.pub@minhkhat.com.vun
Chúng tôi sẽ gửi tặng Bạn một cuốn sách trong Tủ sách ME.PUB Bạn có thể chọn cuốn sách này theo danh mục thích hợp sẽ gửi đến Bạn
Với mục đích ngày càng nâng cao chất lượng tủ sách MK.PUB,
chúng tôi rất mong nhận được sự hợp tác nhiệt tình của quý Bạn đọc gần
xa
“MK.PUB cùng Bạn đọc đồng hành” để nâng cao chất lượng sách Một lần nữa chúng tôi xin chân thành cảm ơn
MK.PUB
Trang 61.8 Truy uấn cơ sở dữ liệu
2 Liệt kê mẩu tin - - 5S sen HH2 re 2.1 Số lượng mếu tin
3 Thêm thông tin vào cơ sở đữ liệu -ccnhhhhhhrrrrre 28
4 Cập nhật dữ liệu - ác cnchnnhhhhthhhhrheHgờ it 33
5 Xóa mẩu tin
6 Kết nối cơ sở dữ liệu khác
6.1 PHP uò cơ sở đữ liệu ÔrdcÏ© cà Sen Hư hit 6.2 PHP va co sở dữ liệu PostgreSQL -.Ăcằằằiehhereriieeee 6.3 PHP va co sé dữ liệu MS SQL SerUeT ceŸeeehhhehhee
Lão
Chương 9: TÌM KIẾM VÀ PHÂN TRANG DỮ LIỆU
1 Chức năng tìm kiếm dit HOU ccc eee teeter renee renteeteneenereeenenes
LL Tim Ri@rn nan ae e
I8 nn anh ee
I8, 827018 8 nh 1.4 Kết quả tìm EiẾm ccccrenhhhhhhrhrrrrrrrerrrrrrerrterrereir
2 Liệt kê danh sách mẩu tin theo nhóm . -c+eserrrrrererre
3 Điều hướng và phân trang đữ liệu . -cscenerrrerrrrre 3.1 Tham số tìm kiếm uà phân trang trên chuỗi Query Strừng 63 3.2 Trang tìm kiếm uới phương thúc POST : 08
4 Kết chương nà cành 2112712717 72
Chuong 10: SESSION VA COOKIE 73
1 Khái niệm phiên làm việc
b: 18 8n
Trang 78 Mục lục
3.1 Chu kỳ sống của ®ŠeSSỈOH, LH HH se
2.2 Khơi báo khởi tạo SeSSiOH HH HH HH HH ng re
2.3 Khai báo lấy giá trị từ SesSiOi c.c
2.4 Khai bdo cập nhột giá trị của Session
2.6 Khai 660 x60 Session .cccccccecccsssssesssescesssessetenecsaceusseusestecsssensseces
2.6 Nhận dạng duy nhất của Session
2.7 Ứng dụng của biến Session .ccceccescessssssssssssesssessesssssecsecsessssessessees
3 Làm việc với biến Coolkie ác nn TH TH TH TH TH Ty nghe cay 3.1 Tạo CooRie
3.2 Léy gid tri ctia Cookie
bb‹( 9 a
4 Kết chương
Chương 11: GIỎ HÀNG VÀ ĐẶT HÀNG QUA MẠNG 91
1 Khái niệm về giỏ hàng trên mang ccc sscscsccecescecsesescecseseeseceseess 91
2 Xây dung gid hang cece ccc secssessscecsevecesceesscttscsacsecsevsvsecaceusassnene 92
2.1 Tạo uà thêm mới sản phẩm uào giỏ hàng cccccec.c.oce 95
2.2 Cập nhật hay thêm mới giỏ hùng à các nrecereeo 96 2.3 Liét ké gid hang
2.4 Cập nhật số lượng
"cổ nen 2.6 Hủy giỏ hùng
3 Đặt hàng trực tuyến
4 Kết chương
Chương 12: CHỨC NĂNG ĐẶC BIỆT 2.ss- 2ss22sseccssez 123
1 Gửi Email bằng mã PHP - Q00 TH reeee 123 1.1 Giới thiệu EimdiÏ neo 123
Trang 8Mục lục 9 eal?
Chương 13: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
1 Khái niệm lớp và đối tượng - sàn stnnhhhtrirrrrrrrrir
3 Khai báo thuộc tính
4 Phương thức và tham số +cstnrnhhirehhthdtrrrrdtrrrrie
1S 810 0.8 ố
6 Kết chương
Chương 14: ỨNG DỤNG HƯỚNG ĐỐI TƯỢNG VÀO WEBSITE 159
1 Xây dựng lớp làm việc với cơ sở dữ liệu
2 Khai báo sử dụng lớp dùng chưng
Chương 15: KẾT HỢP JAVASCRIPT VÀO MÃ PHEP 177
1 Mã JavaScript tham chiếu đến thẻ HTML - 177
1.1 Nguyén tée trong ma JavaScript
1.3 Tham chiếu đến thẻ HTML
92 Biến cố thường dùng trong JavaScript
3 Hàm thường dùng trong JavaScript -eeseenrrrrrrrtrrrre
4 Khai báo và sử dụng biến trong JavaScript
4.1 Khơi báo uò sử dụng biến - cằeằhhhhthhhtrrrrrrrrrtrrtn
4.2 Các phép toán trong JavaScript
5 Phát biểu có điều khiển của JavaScript
5.2 Phat biéu if else
5.3 Phát biéu while .cseeeseeetee
E8 1 ng n n6 6 .aaa vn
Trang 9
7 Mã JavaScript với trình đơn 00 s02 203
7.1 Xây dựng trình đơn bằng thẻ <table> 203
?.2 Xây dựng trình đơn bằng thẻ span dọn Cây cv 207
8 Mã JavaScript và cửa sổ dạng PODUD QQQQQQ SH Hang 209
Trang 10Sau khi tìm hiểu phát biểu SQL, đối tượng View và Stored
Procedure cia cơ sở dữ liệu MyS§QL trong chương trước, bây giờ
bạn có thể thiết kế trang PHP cho phép người sử dụng thao tác
dữ liệu theo ý mình
Trong chương này, chúng ta tập trung tìm hiểu cách kết
nối cơ sở đữ liệu, trình bày đữ liệu dang Unicode, thêm mới, cập
nhật và xóa mẩu tin
Ngoài ra, trong chương này bạn tham khảo chuỗi kết nối
cơ sở dữ liệu PostgreSQL, SQL Server và Oracle bằng mã PHP
Các vấn đề chính sẽ được đề cập:
v Rết nối cơ sở đữ liệu
* Liệt kê danh sách mẩu tin
Thêm mới dữ liệu
v' Cập nhật mẩu tin
v Xóa đữ liệu
Iết nối với PostgreSQL, SQL Server và Oracle
1 Kết nối cơ sở dữ liệu
Để kết nối cơ sở đữ liệu My8QL, bạn cũng khai báo chuỗi kết nối
tương tự như cách kết nối với cơ sở dữ liệu khác, ngoài tên máy chủ, địa chỉ IP hoặc là localhost của máy có chứa cơ sở dữ liệu MySQL, bạn cần cung cấp tài khoản (Ủser name) và mật khẩu (Password) để đăng nhập.
Trang 1112 Chương 8: Kịch ban PHP và cơ sở dữ liệu MySQL
1.1 Thiết lập kết nối cơ sở đữ liệu
Để kết nối cơ sở dữ liệu MySQL trong PHP, ban khai báo doan ma
username 14 tai khoản của người sử dụng trong cơ sở dữ liệu My§QL, trong trường hợp này tài khoản mặc định là root và mật khẩu là
rỗng trừ khi bạn khai báo tài khoản khác hay thay đổi mật khẩu của
root
Sau khi kết nối thành công, bạn khai báo mã PHP để thực hiện mục khác nhau, nếu không sử dụng kết nối thì khai báo đóng như sau:
mysql_close(Sconnect) ;
Chẳng hạn, bạn khai báo đoạn mã PHP trong trang
connectmysql.php để kết nối cơ sở đữ liệu MySQL có tên MarketoHome như ví dụ 8-1
1: Khai báo kết nối cơ sở dữ liệu MySQL
Trang 12mysql_close ($connect) ;
2>
</body>
</html>
Khi gọi trang connectmysql.php trên trình duyệt, kết quả trả về
như hình 8-1 nếu kết nối cơ sở đữ liệu thành công
i 5 vn Jatal Gees on Tớ "ng iia 2
sig Favorites | và 2} MySQL and stored proced
| | @ Connect to MySQL Data | i | th Y B] + [1 am v Pagey »
mysgl_select_ đb(“đatabase name”, $connect);
Tuy nhiên, bạn cũng có thể vừa kết nối MySQL vừa chọn tên cơ sở
dữ liệu như sau:
<?php
Sconnect = mysqi_connect (
Trang 1314 Chương 8: Kịch bản PHP và cơ sở dữ liệu MySQL
"T1ocalhost", "rooC","*", "BookStore");
echo "Connected to MySQL <br>";
echo " selected BookStore database";
//do something }
mysql_close(S$connect);
2>
Chú $: Để làm việc với tiếng Việt Unicode, bạn khai báo chỉ định
bằng phát biểu như sau:
mysql_query ("SET NAMES 'utf£8'");
Chang han, ban khai báo mã PHP trong trang opendatabase.php để chọn cơ sở đữ liệu có tên MarketoHome như ví dụ 8-2
echo "Connected to MySQL <br>";
mysql_select_db ("MarketoHome", $connect); echo "Selected MarketoHome database";
mysql_query ("SET NAMES 'ut£8'");
echo "<br>Working with Unicode";
/ |do something }
mysgl_close ($connect) ;
?>
Trang 14
sự Favorites | sm i, MySQL and stored proced »
Hinh 8-2: Chon co sé dit liéu
Tuy nhiên, do chúng ta đã tham khảo cách khai báo trang PHP dùng chung cho Website, trong trường hợp này bạn khai báo trang cấu hình web.php với biến dùng để kết nối MySQL như ví dụ 8-3
Trang 15require("top.php");
die('Could not connect MySQL: ' mysql_error());
include ("bottom.htm") ; }
else { mysql_select_db ($databasename, $connect) mysql_query ("SET NAMES 'utf8'"); ;
echo "Connected Database";
require("closeconnection.ini");
?>
</body>
</html>
Trang 16Chương 8: Kịch bản PHP và cơ sở dữ liệu MySQL 17 IẠI”
File Edit View Favorites Tools Help
ug Favorites la ry MySQL and stored proced ”
: | @& Open MySQL Database TT] fey Br & am ~ Pager ”
1.3 Truy vấn cơ sở dữ liệu
Để thao tác dữ liệu trong cơ sở dữ liệu MySQL, bạn có thể sử dụng hàm mysql_queryO với tham số bắt buộc là phát biểu SQL và chuỗi kết nối cơ sở đữ liệu như sau:
Sresult = mysgl_ query (Sselect, Sccnnect);
Phát biểu trên trả về kết quả tùy thuộc vào phát biểu SQL dạng
SELECT hay INSERT/UPDATE/DELETE
2 Liét ké mau tin
Bạn có thể sử dụng hàm mysql_fetch array() với cú pháp như sau
để đọc từng mẩu tin trong biến $result Nếu mẩu tin không tổn tại trong biến $result, hàm này sẽ không thực hiện
Srow = mysql_fetch_array ($result) ;
Trang 17
18 Chương 8: Kịch ban PHP va co sé dit lisu MySQL
Ngoài ra, bạn cũng có thể truy lục dữ liệu bằng cách sử dụng hàm
mysql_fetch_rowQ với cú pháp như sau để đọc từng mẩu tin trong biến
$result
Srow = mysql_fetch_row(S$result) ;
Chang han, ban khai báo trang items.php dé liét kê danh sách
cuốn sách trong bảng viewitems với hai cột trình bày là Itemld và ItemName bang ham mysql_fetch_row() nhu vi du 8-4
í dụ 8-4: Khai báo liệt kê mẩu tin
"localhost", "root", "");
if (!$connect) { die('Could not connect MySQL: ' , mysql_error());
else { mysql_select_db ("MarketoHome", Sconnect);
mysql_query ("SET NAMES 'ucf8!'"*);, Sselect ="select Itemid, ItemName from Items";
Sresult = mysql_query ($select, $connect) ; while (Srow = mysgl_fetch_row($result) ) {
// Lấy giá trị của cột theo chỉ mục echo §row[0] "« Srow{1];
echo "<br>";
} } mysql_close ($connect);
Trang 18| File Edit View Favorites Tools Help
‘yg Favorites ị J9 MySQL and stored proced 58 Using Stored procedure w
2 Lap trình chuyên nghiệp SQL Server 2000 Tap 1
3 Lập trỉnh chuyên nghiệp SQL Server 2000 Tap 2
§ Lập trình Visual Basic NET Tập 2
6 Lập trình Visual C Sharp NET Tập 1
7 Lap trinh chuyên nghiệp Visual C Sharp NET Tap 2
10 Xây Dựng va Trién Khai Ứng Dụng Thương Mại Điện Tir bang ASP, SQL
Server, Visual Basic, JavaScript
4 Thiét ké Web bang PHP and MySQL
13 Lap trinh tng dung Microsoft Access 2002 Tap 1
14 Lap trinh wng dung Microsoft Access 2002 Tap 2
16 Giáo trình lý thuyết va bai tap Delphi
17 Đô hoa voi Multimedia vdi PowerPoint 2000
18 Sử Dung & Khai Thac Microsoft Visual FoxPro 6.0
19 Tự Hoc Lap Trinh Chuyén Sau Visual Basic NET Trong 21 Ngày
20 Từng bước Lap trinh chuyén nghiép Visual C++ NET
21 Cau Trac Dir Liéu Voi Java
22 Tirng buoc Lap tinh voi Visual Basic NET
23 Vé Minh Hoa Véi CorelDRAW 10 - Tap 3
24 Lap trinh ASP.NET 3.5
@ Internet | Protected Mode: Off Yay S100% v7 :
Hinh 8-4: Danh sdch médu tin
Tuy nhiên, bạn có thể khai báo trang items.php chèn tập tin kết
nối và đóng kết nối cơ sở dữ liệu để liệt kê mẩu tin trong bảng Items như
Trang 1920 Chương 8: Kịch bản PHP và cơ sở dữ liệu MySQL
$select = "select ItemId, ItemName from Items";
$result = mysql_query ($select, Sconnect) ;
while (Srow = mysql_fetch_row(S$result) )
echo Srow[0]."" $row[1] ; echo "<br>";
2 Lập trình chuyên nghiệp SQL Server 2000 Tap 1
3 Lập trình chuyên nghiệp SQL, Server 2000 Tap 2
le 2 Lập trình Visual Basic NET Tập 2
Ỷ 6 Lập trình Visual C Sharp NET Tap 1
|| 7 Lập trình chuyên nghigp Visual C Sharp 'NET Tập 2
10 Xây Dựng và Triển Khai Ứng Dụng Thương Mại Điện Tử bảng ASP, SQL
Server, Visual Basic, JavaScript
a 4 Thiết kế Web bảng PHP and MySQL
7 13 Lập trình ứng đụng Microsoft Access 2002 Tap 1
Ig 14 Lop tinh tg dang Microsoft Access 2002 Tip 2
ly 16 Gido trinh ly thuyét va bai tap Delphi
17 Dé hog véi Multimedia vei PowerPoint 2000
18 Sir Dyng & Khai Théc Microsoft Visual FoxPro 6.0
| 19 Tự Học Lập Trình Chuyên Sâu Visual Basic NET Trong 21 Ngày
lũ 20 Từng bước Lập trình chuyên nghiệp Visual C++ NET
Trong hai ví dụ trên bạn truy cập đến cột dữ liệu xuất bằng chỉ mục
(index) của cột đữ liệu trong bảng, nếu thứ tự cột đữ liệu thay đổi thì đữ
liệu trình bày sẽ có thứ tự khác nhau
Nếu có nhu câu chỉ định tên cột (column name), bạn khai báo trang itemarray.php với hàm mysql_fetch_array() nhu vi du 8-6
Trang 20®
Chương 8: Kịch bản PHP và cơ sở dữ liệu MySQL 21 (AA ors
Ví dụ 8-6: Khai báo tên cột dữ liệu
Sselect = "select ItemId, ItemName from Items";
$result = mysql_query ($select, $connect);
while ($row = mysql_fetch_array ($result) )
{ //Léy giá trị của cột bằng tên cột
echo §row["TtemTd"] " "
.Šrow[ "TtemName"] ; echo "<br>";
đ{ 1 JSP/ServktlavaBcans
BỊ 2 Lặp trình chuyên nghiệp SQL Server 2000 Tap 1
E| 3 Lập trình chuyên nghiệp SỌL Server 2000 Tap 2
lÍ 5 Lập trình Visual Basic NET Tập 2
lị 6 Lập trình Visual C Shap NET Tập 1
l 7 Lập trình chuyên nghiệp Visual C Sharp NET Tap 2
HỆ 10 Xáy Dựng và Triển Khai Ứng Dụng Thương Mại Điện Tử bằng ASP, SQL
A) Server, Visual Basic, JavaScript
Rl 4 Thiét ké Web bang PHP and MySQL
|| 13 Lập trình ứng dụng Microsoft Access 2002 Tập 1
Dị 14 Lập trình ứng dụng Microsof Access 2002 Tập 2
F] 16 Gido trình lý thuyết va bài tập Delphi
lj 17 Đề hoạ với Mukrrnedia với PowerPoint 2000
18 Sử Dụng & Khai Théc Microsaft Visual FoxPro 6.0
iY 19 Tw Hoc Lap Trinh Chuyén Sau Visual Basic NET Trong 21 Ngày
F 20 Từng bước Lập trình chuyên nghiép Visual C++ NET
@ Internet | Protected Mode OF
Hình 8-6: Liệt kê mẩu tin.
Trang 2122 Chương 8: Kịch ban PHP va cơ sở dữ liệu My§QL
2.1 Số lượng mẩu tin
Khi bạn truy vấn dữ liệu, để biết được số lượng mẩu tin do câu truy vấn trả về, bạn có thể sử dụng hàm mysql_num_rowsQ có cú pháp như sau:
$ rows = mysql_num_rows();
Chẳng hạn, trong trường hợp trang totalrows.php truy cập bảng đữ liệu có tên là Items, để biết tổng số mẩu tin trả về bạn sử dụng ham
mysql_num_rows() nhu trong vi du 8-7
Ví dụ 8-7: Đọc tổng số mấu tin trình bày
$select = "select ItemId, ItemName from Items";
$result = mysql_query.($select, Sconnect);
! Tổng số mẩu tin trả uê
Srows = mysql_num_rows ($result);
echo "<b>No of Records: ".$rows "</b><br>";
while (Srow = mysql_fetch_array ($result) )
echo $row["ItemId"] =" »
.$row["ItemName"} ; echo "<br>"; -
} Loe “ xequire ("closeconnection ini ");
?>
</body>
</html>
Nếu triệu gọi trang t totalrows, php trên trình duyệt thì kết quả trình
bày như hình 8-7 woe
~
Trang 22¡Ì 2 Lập trình chuyên nghiệp SQL Server 2000 Tap 1
jj 3 Lập trình chuyên nghiệp SQL Server 2000 Tap 2
la 5 Lập trình Visual Basic NET Tập 2 -
1 6 Lập trinh Visual C Sharp NET Tap 1
1 7 Lập trình chuyên Visual C Shagp _NET Tập 2
Ì 10 Xây Dựng và Tỉ Khai Ứng Dụng Thương Mại Điện Tử bằng ASP, SQL
4] Server, Visual Basic, JavaScript
bì 4 Thiét ké Web bing PHP and MySQL
: 13 Lập trình ứng dụng Microsoft Access 2002 Tập 1
q 14 Lập trình ứng dụng Microsoft Access 2002 Tập 2
lÌ 16 Giáo trình lý thuyết và bài tập Deiphi
4 17 Đô hoa vai Multimedia voi PowerPoint 2000
18 Sử Dụng & Khai Thac Microsoft Visual FoxPro 6.0
1 19 Tự Học Lập Trình Chuyên Sân Visual Basic NET Trong 21 Ngay
Hình 8-7: Tổng số mẩu tin trẻ uễ
Ngoài ra, bạn cũng có thể đọc dữ liệu từ bảng vào đối tượng bằng cách sử dung ham mysql_fetch_object(), sau dé doc gid trị từng cột thông
qua thuộc tính tên cột với cú pháp là $row-> columnnname như ví dụ 8-8
Ví dụ 8-8; Đọc dữ liệu hing ham mysql fetch_object
<html>
ŠtiCle>TTEMS</title>
<meta http-equiv="Content-Type" ` content="text/html; charset=utf-8">
<?php ee
recwire ("connect oi; ini*);
$Sselect = "select ItemId, ItemName from Items";
$result = mysql_query ($select, $connect) ; Srows = mysql_num_rows ($result) ;°
echo "<b>No of Records: ".$rows."</b><br>"; //S2 dung ham mysql_fetch_object
while($row = mysql_fetch_object ($result) )
Trang 23
24 Chương 8: Kịch bản PHP và cơ sở dữ liệu MySQL
Sq Favorites = hy €) MySQL and stored proced 12 Using Stored procedure w ”
@mMws 7” ~) By By is deh ~ Pages Safety~ Tooke ”
ht 1 JSP’Serviet‘JavaBeans
4
|] 2 Lập trình chuyên nghiệp SQL Server 2000 Tap 1
L| 3 Lập trình chuyên nghiệp SQL Server 2000 Tap 2
[| 5 Lập trình Visual Basic NET Tap 2 ị
| 6 Lap tinh Visual C Sharp NET Tap 1 tài
| 7 Lập trình chuyên nghiệp Visual C Sharp NET Tap 2
10 Xây Dựng và Trién Khai Ung Dung Thương Mại Điện Từ bằng ASP, SQL
Server, Visual Basic, JavaScript
4 Thiét ké Web bang PHP and MySQL
13 Lap trinh tng dung Microsoft Access 2002 Tap 1 WAT A Ace ror A eee INNA TS 2
@ Intemet | Protected Made: Off Sey KI00% +
Hình 8-8: Đọc đữ liệu từ bang Items
Để thiết trang Web cho phép liệt kê đanh sách mẩu tin trộn với thé HTML, ban sao chép (copy) trang index.php thanh trang books.php
rồi khai báo doan ma PHP liệt kê danh sách mẩu tin của bảng Items trong phần thân (body) của chúng như ví dụ 8-9,
Trang 24Sselect = "select * fromItems";
Sresult = mysql_query (S$select, $connect);
Srows = mysql_num_rows ($result);
echo "<tr><td valign='top' colspan=3><b>";
echo "No of Records: ".Srows."</b></td></tr>"; while(Srow = mysql_fetch_array ($result) )
sg Freontes «ca €; MySQL sndstoredoroced 2> Uning Stored procedure w @ Gohihabhe Magazine, W 5) Symantec Crime Store Sf Intemnatignal Stone Wab-S i
GB Mater To Home Ay + GY ON ek Bạn ĐieyY Tay Be”
` ‘The Works ti@av% cù cết
‘May be whatever wa set today couit
Soo Holiday
: 3e [Oy List 9 LÊ J4
‘S000 Amazon Dmiaveracinis B0900 , CBO actos tog +Neaduee rests
SACH BAN
SORE Mạng CCNA - Giáo
©€HA2Z”- Tính Hệ Thông Mạng
$6000 af Miy Tak CCNA Baa -
@ toternet | Protected Moxie: OM fa~ Atos +
Hình 8-9: Danh sdch mdu tin.
Trang 2526 Chương 8: Kịch bản PHP và cơ sở dữ liệu MySQL
Một góc nhìn khác, bạn có thể khai báo cách trình bày danh sách mẩu tin theo bố cục tùy ý trong trang bookslphp (copy từ trang books.php) tương tự như hình 8-9-1
4 ASP-Semtet JavaBeans Price: 38000
Repel © Name: Lap tinh Visual Basic NET Tap 2
Hinh 8-9-1; Trinh bày danh sách mẩu tim
Ngoài ra, bạn cũng có thể khai báo để trình bày thông tin tóm tắt
của sách theo hai cột trong trang books2.php (copy từ trang books.php)
irre SE | ap minh chuyên nghiệp eight:
ee SQL Server 2000 Tap 1 mice: 42000 m¬.‹ - w 250
* Size: 320x420
Weight: 520 Size: 320x520
Se @3p tinh chuyén nghiệp ves
SQL Server 2050 Tap 2 Weight 420
Hinh 8-9-2: Trinh bay 2 cét
Trang 26Chương 8: Kịch bản PHP và cơ sở dữ liệu MySQL 27 ES MỊ”
Nếu người sử dụng chọn vào liên kết tên sách, trang details.php sé
triệu gọi, bạn có thể sử dụng hàm $_GET để lấy mã sách từ chuỗi Query
String và liệt kê chúng như ví dụ 8-10
i du 8-10: Khai báo trình bày một mẩu tỉn
<table width="100%" border="1" cellspacing="0"
/ [Khai bdo SQL uới tham sé $id
Sselect = "select * from Items where
ItemId='".Sitemid "'";
Sresult = mysql_query ($select, $connect);
echo "<tr><td valign='top' colspan=2><b>"
echo "Details</b></td></tr>";
if (Srow = mysql_fetch_array ($result) )
{ echo "<tr><td valign='top'>ItemId</td>";
Khi triệu gọi trang books.php trên trình duyệt, tên sách thông tin
chỉ tiết của cuốn sách sẽ trình bày như hình 8-10
Trang 27
J few Favorites Toots Bele
Fy Frvonees | ay je: MySQL end stored peoced 1
Chương 8: Kịch bản PHP và cơ sở dữ liệu MySQL
ay « Jemld 32096 Hem Namie Lip winh chuyền nghigp SQi Server 2000 Tap 1
^ Description ip tinh chayén nehigp SQL Server 2000, Database Analsic and Design, whe ws Foneitons, Triggers, Transactions, Accouneng System Exam, SQL Language, Database Objects: Tables Views, Stored Procedure, RUies
[96 Mocket To Home Re a - Ef Wb > Boyes Sefety~ Tonks §§: i
“The te lẻ siqavs changes af 3
đ ™ (ay be hoteoer rao et fod ean 8 arate Ÿ
Meketotomd Sener ratessedtoamere
voy tes is TIỀN HỆ
Điền Thọai (0E)292504901
Mang CCNA - Giáo Trinh He Thong Mang 2! May Tinh CCNA Bia
fer RIOR T
Hình 8-10: Thông tin chỉ tiết của cuốn sách,
3 Thêm thông tin vào cơ sở dữ liệu
Thêm thông tin vào cơ sở dữ liệu cũng giống như lấy dữ liệu từ cơ
sở đữ liệu trình bày trên trình duyệt, thay vì truyền phát biểu SELECT vào hàm mysql_queryQ thì bạn có thể truyén phat biéu INSERT
Chẳng hạn, để thêm mẩu tin vào bảng Categories, bạn thiết kế
trang category.php như hình 8-11
Hình 8-11: Giao dién trang category.php
Kế đến, bạn khai báo đoạn mã đ bang Groups vao List/Menu như vi du 8-11 é liét kê danh sách mẩu tin trong
Trang 28Sselect = "select * fromGroups";
Sresult = mysqi_query ($select, $connect); Srows = mysql_num_rows ($result);
while (Srow = mysql_fetch_array ($result) ) {
echo "<option value=";
Hinh 8-11-1: Danh sdch Groups
Chú ý: Thê <form> của trang category.php trỏ đến trang save.php, dựa vào giá trị của thể hidden có tên from để biết người sử dụng triệu gọi
Trang 2930 Chương 8: Kịch bản PHP và cơ sở đữ liệu MySQL
Hinh 8-12: Trang caetgory.php
Chú ý: Một số vấn để cần tránh khi lưu dữ liệu là sử dụng hàm str_replace() dé thay thé chuỗi đữ liệu có dấu ' thành hai dau ' liên tiếp
Ví dụ, khi triệu gọi trang category.php và nhập tên loại sách là
“Analysỉs” như hình 8-13 và nhấn nút, Save, lỗi phát sinh như hình 8-13-1
Trang 30®©
Chương 8: Kịch bản PHP va cơ sở đữ liệu MySQL 31 E1
Điều này có nghĩa là tất cả những dữ liệu do người đùng nhập và
lưu vào cơ sở đữ liệu đều phải xử lý chúng với hàm str_replaceQ)
Error inserting: You have an error m your SQL syntax: check the manual
that corresponds to your MySQL server version for the right syntax to use
í dụ 8-13: Khai báo hàm replace
£unct1on replace ($strtoreplace)
{
} return str_replace("'","'’", $strtoreplace) ;
Sau đó, mỗi khi định nghĩa phát biểu SQL, ban goi ham replace()
cho các giá trị nhập từ màn hình Chẳng hạn, bạn khai báo gọi hàm
replaee( trong trang category.php như ví dụ 8-13-1
Trang 3132 Chương 8: Kịch bản PHP và cơ sở đữ liệu MySQL
//Goi ham replace Sinsert= “insert into Categories ( CategoryName, GroupId)";
Sinsert.=" values('" -replace(Sname)."','",
require ("closeconnection.ini"); ,
} //Ham replace
function replace ( Sstrtoreplace)
{ } return str_replace("tu,mrra) Sstrtoreplace);
?>
Nếu bạn nhập tên loại sách là “Analysis” như hình 8-13 và nhấn
nút Save, lưu thành công và trang categories.php được triệu gọi với danh
sách mẩu tin như hình 8-13-2
Hinh 8-13-2: Luu thanh céng
Trong ứng dụng thực tế, bạn có thể khai báo hàm replace(Q) được viết trong tập tin common.php rồi sau đó khai báo sử dụng hàm này trong các trang PHP khác bằng hàm require()
Trang 32®
Chương 8: Kịch bản PHP và cơ sở đữ liệu MySQL 33 Al
Chú ý: Bạn có thé khai báo trang save.php để sử dung chung cho
mọi bảng dữ liệu khi có nhu cầu thêm mới bằng cách dùng phát biểu
switch case dựa vào giá trị từ thẻ hidden có tên “from”
4 Cập nhật dữ liệu
Để cập nhật dữ liệu, bạn khai báo liên kết bằng thẻ <a> trên mỗi tên của sản phẩm để cho phép người sử dụng hiển thị thông tin của chúng ở chế độ thay đổi được
Chẳng hạn, bạn khai báo thể <a> trên mỗi tên loại sách trong trang categories.php để trỏ đến trang category.php như ví dụ 8-14
ï dụ 8-14: Khai báo liên kết đến trang cập
<?php
reguire("connection.ini");
Sselect = "select CategoryId, CategoryName, "; Sselect.="GroupName fromCategoriesC, ";
Sselect.="Groups G where G.GroupId=C.Groupida";
Sresult = mysql_query ($select, $connect) ;
Srows = mysql_num_rows ($result);
echo "<tr><td valign='top' colspan=3><b>";
echo "No of Records: ".$rows."</b></td></tr>"; while(Srow = mysql_fetch_array ($result) )
Khi triéu goi trang categories.php trén trinh duyét, ban thay lién
kết đến trang category.php ứng với tên của loại sách như hình 8-14.
Trang 3334 Chương 8: Kịch bản PHP và cơ sở đữ liệu MySQL
Category Id (Category Name Group Name |
INo of Records: 13 1 heereereee “ent ett meme aa - Tu cà -—
Hinh 8-14: Lién két dén trang category php
Dé cho phép hién thị thông tin của loại sách được chọn, bạn khai báo đoạn chương trình trong trang category.php cho trường hợp cập nhật như ví dụ 8-15
Ví dụ 8-15: Khai báo đọc thông tin của loại sách
$id=S$_GET["ida"];
/ 1 Nếu id có giá trị hợp lệ 1f(is_numeric (§5iđ3)) {
$select = "select * from Categories";
Sselect =" where CategorylId=" Sid;
$result = mysql_query ($select, Sconnect); while (Srow = mysql_fetch_array ($result) ) { Sname= Srow[ "CategoryName"];
Sgroup= Srow[ "GroupTd"] ;
?>
Trang 34®
Chương 8: Kịch bản PHP và cơ sở dữ liệu MySQL 35 |
Kế đến, bạn khai báo gán biến $name vào thuộc tính value của thẻ
categoryname như sau:
<input name="categoryname" type="text"
valuez "<?php echo $name; ?>"
id="categoryname" size="50" maxlength="50">
Tiếp theo, bạn khai báo chọn giá trị nhóm sách như sau:
while (Srow = mysql_fetch_array ($result) )
{
echo "<option value=";
echo Srow["GroupId"] ;
if (S$group==Srow["GroupIda")) echo " selected";
echo ">" Srow["GroupName"] "</option>";
Nếu bạn chọn loại sách là Analysis thì trang category.php trình bày như hình 8-15
Category
Category Name Business for Everybody _
Group Name Poem x
Hình 8-15: Trình bày thông tin chỉ tiết để cập nhột
Để cập nhật dữ liệu, bạn phải biết được giá trị của khóa chính, trong trường hợp này chúng ta khai báo thẻ hidden ngay sau thẻ hidden
có tên là “from” và gán giá trị là biến $¡d
<input type="submit" name="button" id="button”
Trang 3536 Chương 8: Kịch bản PHP và cơ sở dữ liệu MySQUL
Khi nhấn nút Save, dựa vào giá trị của thẻ hiđđen có tên là id, ban
biết trường hợp thêm mới hay cập nhật
Trở lại trang save.php, bạn khai báo thêm biến $id để lấy giá trị từ thé hidden cé tén 1a id réi tiếp tục khai báo phát biểu update nếu giá trị này khác rỗng như ví dụ 8-16
í dụ 8-16: Khai báo cận
<?php if(isset ($_PosT[" from"])) {
Sfrom= S_POST["from"];
$id = $_POST["id"];
require ("connection.ini ");
Sname = $_POST[ "categoryname "1;
Šgroup = $_POST[ "groupname" ] ; 1f(Sid=="")
{ /Í Trường hợp thêm mới mẩu tin Sinsert= "insert into Categories (CategoryName, GrOUpTd) ";
Sinsert= “update Categories set CategoryName=";
Sinsert.="'" -replace(S$name)."'! ,GroupiIds='"
echo "Error inserting: ", mysql_error();
require("closeconnection ini");
} function replace (S$strtoreplace) {
return scr_replace ("1% min ,sstrtoreplace) ; }
?>
Trang 36®
Chương 8: Kịch bản PHP và cơ sở đữ liệu MySQL 3z MAI
Ví dụ, bạn chọn liên kết trên tên loại sách là Analysi’s, trang
category.php xuất hiện như hình 8-16, thay đổi Analysis thành Analysis
như hình 8-16-1 và nhấn nút Save, nếu cập nhật thành công thì trang
categories.php như hình 8-16-2
Category
Category Name Analysỉs
Group Name Poem v
Trang 37
38 Chương 8: Kịch ban PHP va cơ sở dit ligu MySQL
Chú ý: Bạn có thể khai báo trang save.php để sử dụng chung cho trường hợp thêm mới và cập nhật mẩu tin của mọi bảng dữ liệu bằng cách
dùng phát biéu switch case dua vao gid tri tit thé hidden có tên “from” và
gid tri cha bién $id
5 Xóa mau tin
Trong trường hợp xóa mẩu tin, bạn có thể có nhiều cách thực hiện việc này Ví dụ, bạn trình bày biểu tượng xóa trên mỗi mẩu tin trình bày,
một khi người sử dụng chọn vào biểu tượng thì chúng sẽ xóa mẩu tin đó Chẳng hạn, bạn khai báo đoạn mã PHP để liệt kê danh sách mẩu tin trong bảng Customers như ví dụ 8-17
IVí dụ 8-
17: Khai báo liệt kê danh sách khách hàng
<?php require("connection.ini");
Sselect = "select * from Customers";
$result = mysql_query ($select, Sconnect);
Srows = mysgl_num_rows (Sresult);
/ [Duyệt qua từng mẩu tin
while(Srow = mysql_fetch_array ($result)) {
echo "<tr><td valign='top' align=center>"; echo Srow["CustomerId"] "</td> "
echo "<td valign='top! align=center>";
// Khai bdo lién két echo "<a href=delete -php?from=customer&id="; echo Srow[ "CustomerId"] ">";
([ Khai báo biểu tượng xóa mẩu tin
echo "<img border=0 src=icons/delete.gif></a></td></tr>":
} echo "<tr><td valign=' top' colspan=4><b>";
echo "No of Records: ".Srows "</b></td></tr>";
require ("closeconnection.ini");
?>
Trang 38®
Chương 8: Kịch bản PHP và co sé dit ligu MySQL 39 Al Nếu triệu gọi trang customers.php trên trình duyệt, bạn có thể thấy
danh sách khách hang trinh bay véi biéu tugnhieu tucnynhu hình 8-17
‘Customer Id Customer Name/Address 7 7 #
1 "Nguyen Thí Họng Lan /192 Tran Hung Dao, F1, Q.5 - | a
5 Neuyen Tran Minh 2 Thao Dien, Dist 2 l8
Hình 8-17: Biểu tượng xóa mổu tin
Khi trình bày thông tin chỉ tiết của mẩu tin, bạn thêm nút Delete
và cho phép người sử dụng xóa mẩu tin đang xem
Chẳng hạn, bạn khai báo đoạn mã PHP trong trang customer.php như ví dụ 8-18
í dụ 8-18: Khai báo nút xóa
<input type="submit" name="button"” id="button"
value="Save">
<?php if (is_numeric (Sid) }{?>
<input type="button"
onclick="window open ( ‘delete php? from=customer&id=<
?php echo $id?>');" value="Delete">
Khi chọn liên kết trên trang customers.php, trang customer.php trình bày thông tin của khách hàng với nút Delete xuất hiện như hình 8-18.
Trang 3940 Chương 8: Kịch bản PHP va co sé dit ligu MySQL
Customer
Customer Name Phuong Uyen Company
Address 12 Hong Ha, F Lien Chieu, Da Nang
Province Name Da Nang v
Hình 8-18: Nứt xóa
Tương tự như trường hợp thêm mới và cập nhật dữ liệu, bạn có thể
khai báo trang delete.php với nội dung như ví dụ 8-19
$delete="";
$gotopage = "";
$id=$_GET["ia"];
if (is_numeric($id)) {
switch($from) {
( [Trường hợp xóa bằng Customers case "customer":
$delete= " delete from customers ";
Sdelete.=" where customerid='";
$delete.=Sid."'",;
$gotopage = "customers -php";
break;
} }
if (S$delete !="" gg mysql_query ($delete, Sconnect) ) header ("Location:" Sgotopage);
Trang 40Chương 8: Kịch bản PHP và cơ sở đữ liệu MySQL 41 II”
} else echo "Error inserting: "
mysgql_error();
} require("closeconnection.ini");
}
}
2>
Giả sử bạn nhấn vào biểu tượng ÑÑ của khách hàng có mã là 12,
trang delete.php sẽ được triệu gọi và trang customers.php xuất hiện với khách hàng đã bị xóa như hình 8-19
| Customer 1d ÍCustomer Name ‘Address — ¬ - #
ay en Thi Hons Lan 192 Tran Hung Dao, F1, Q.5 a
! § (Nouven Tran Minh 2 Thao Dien, Dist 2., - ` W
6 12 Hong Ha, F Lien Chieu, DaNang
I _ 2 / 45 Le Van Sy, F12, Quan 3 _ a
3 56 Vuon Lai, F 17, Tan Binh ữ L7 wen Viet Minh 6 Le Loi, Trung tam Cong nghe phanmem \Ÿ
Quang ‘Hue :
Hình 8-19: Xóa mẩu tin thành công
Chú $: Bạn có thể khai báo trang delete.php để sử dụng chung cho trường hợp xóa mẩu tin của mọi bảng dữ liệu bằng cách dùng phát biểu
switch case dựa vào giá trị từ thẻ hidden hay tham số trên Query String
có tên “from” và giá trị của biến $¡d
6 Kết nối cơ sở dữ liệu khác
PHP là kịch bản trình chủ mã nguễn mở có nhiều phiên bản có thể
chạy trên nhiều hệ điều hành, chẳng hạn nhu Windows hay Linux Do do,
mọi cơ sở đữ liệu khi cài đặt trên hai hệ điểu hành này đều có thể truy cập bằng mã PHP.