1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Phát triển ứng dụng web: Phần 2 - Trường ĐH Công nghiệp Quảng Ninh

130 8 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 130
Dung lượng 6,35 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Phần 2 của giáo trình Phát triển ứng dụng web tiếp tục cung cấp cho học viên những nội dung về: kết hợp PHP và MySQL; hệ quản trị nội dung mã nguồn mở Joomla; việt hóa Joomla bằng cách cài đặt gói ngôn ngữ tiếng Việt;... Mời các bạn cùng tham khảo!

Trang 1

96

CHƯƠNG 4: KẾT HỢP PHP VÀ MySQL

4.1 Kết nối cơ sở dữ liệu

a) Để kết nối cơ sở dữ liệu mySQL bạn sử dụng khai pháp như sau:

<?php

$link = mysql_connect ("localhost", "root", "")

or die ("Could not connect to MySQL Database");

@mysql_query("SET NAMES 'utf8'",$link);

mysql_select_db("BookDB", $link);

?>

Trong đó:

- Khai báo $link = mysql_connect ("localhost", "root", "") để kết nối

cơ sở dữ liệu MySQL với tên Server là localhost, Username là root và Password của

Username root là rỗng

- Dòng lệnh die ("Could not connect to MySQL Database"); sẽ thông báo cho chúng ta biết nếu không kết nối thành công thì một thông báo sau sẽ xuất hiện

"Could not connect to MySQL Database"

- Khai báo @mysql_query("SET NAMES 'utf8'",$link); để hiển thị dữ liệu trong cơ sở dữ liệu dưới dạng Unicode utf8

- Khai báo: mysql_select_db("BookDB", $link) để chọn tên cơ sở dữ liệu sau khi mở kết nối cơ sở dữ liệu

b) Để đóng kết nối cơ sở dữ liệu bạn sử dụng cú pháp sau:

$link = mysql_connect ("localhost", "root", "")

or die ("Could not connect to MySQL Database");

@mysql_query("SET NAMES 'utf8'",$link);

4.2 Truy vấn và hiển thị dữ liệu trong các bảng

4.2.1 Hiển thị dạng lưới (table)

- Để truy vấn CSDL, bạn có thể sử dụng hàm mysql_query() với tham số bắt

buộc là chuỗi SQL, tham số tùy chọn là chuỗi kết nối CSDL như cú pháp sau:

int mysql_query(string sql);

Hoặc

int mysql_query(string sql, [int db_connect]);

Trang 2

Bạn nên lưu kết quả của truy vấn này trong một biến, trong ví dụ trên, kết quả của

truy vấn được lưu vào biến có tên là: $result

- Đếm số lượng mẩu tin trả về từ truy vấn: khi bạn mở một CSDL và truy vấn

một bảng dữ liệu, để biết được số lượng mẩu tin câu truy vấn trả về, bạn có thể sử dụng hàm có cú pháp:

mysql_num_rows();

Chẳng hạn, trong trường hợp bạn mở một bảng dữ liệu của CSDL “BookDB” có tên là “Sach”, để biết số mẩu tin trả về là bao nhiêu, bạn sử dụng hàm

mysql_num_rows($result)

- Đọc từng mẩu tin: bạn có thể sử dụng hàm mysql_fetch_array() để đọc từng

mẩu tin trong biến $result, nếu không tồn tại mẩu tin trong $result hàm sẽ không thực

hiện, đoạn mã lệnh như sau:

echo "<td nowrap align=center>$vartensach</td>";

echo "<td nowrap align=center>$vartacgia</td>";

echo "<td nowrap align=center>$varnxb</td>";

echo "<td nowrap align=center>$varnamxb</td>";

echo "<td nowrap align=center>$vargiatien</td></tr>"; }

}

Ví dụ 4.1: Tạo một trang PHP (hien_thi_sach.php) liệt kê tất

cả các quyển sách có trong bảng “sach” của cơ sở dữ liệu

“BookDB” đã được tạo trong Câu 1, phần Câu hỏi ôn tập chương

3 kết quả liệt kê như hình 4.1

Trang 3

Đoạn mã của trang hien_thi_sach.php được viết như sau:

<?

//Dòng lệnh sau sẽ kết nối đến cơ sở dữ liệu BookDB

require("dbcon.inc");

// Dòng lệnh sau sẽ lấy toàn bộ sách trong CSDL sách

$sql="select * from sach";

$result=mysql_query($sql,$link);

Trang 4

//Hiển trị giá trị lấy được trên trình duyệt

echo "<tr><td nowrap align=center>$varmasach</td>";

echo "<td nowrap align=center>$vartensach</td>";

echo "<td nowrap align=center>$vartacgia</td>";

echo "<td nowrap align=center>$varnxb</td>";

echo "<td nowrap align=center>$varnamxb</td>";

echo "<td nowrap align=center>$vargiatien</td></tr>";

Trang 5

100

Ví dụ 4.2: Thiết kế trang (luoi_dinh_dang.php) hiển thị

thông tin các quyển sách có định dạng như sau:

Hình 4.2: Thông tin sách được hiển thị dạng lưới định dạng

- Đặt một biến để đếm từng dòng bắt đầu từ 0, và tăng dần theo dòng

- Nếu biến đếm chia hết cho 2 (dòng chẵn) thì xuất ra một dòng có màu nền khác màu so với dòng lẻ

Đoạn mã của trang “luoi_dinh_dang.php” được viết như sau:

<?

Trang 6

<H2><p align=center><b> THÔNG TIN SÁCH </b></p></H2>

<table align=center border="1" cellpadding="2" cellspacing="2" style="border-collapse:collapse">

$stt=0; //Cho biết làm việc với dòng nào trong bảng, nếu số

chẵn xuất màu nền ngược lại thì không //Đọc hết mẩu tin bằng hàm mysql_fetch_array

//Hiển thị giá trị của các trường lên trình duyệt

echo "<td nowrap align=center>$varmasach</td>";

echo "<td nowrap align=center>$vartensach</td>";

echo "<td nowrap align=center>$vartacgia</td>";

echo "<td nowrap align=center>$varnxb</td>";

echo "<td nowrap align=center>$varnamxb</td>";

echo "<td nowrap align=center>$vargiatien</td>";

//Tăng biến kiểm tra lên 1

Trang 7

4.2.3 Hiển thị dạng lưới có phân trang

Khi trình bày dữ liệu trên trang Web, chúng ta có thể qui định số dòng sẽ hiển thị trên một trang, và khi đó toàn bộ dữ liệu có thể được trình bày trên nhiều trang thay vì một trang, quá trình đó được gọi là phân trang khi hiển thị Chẳng hạn, chúng ta có 20

dòng dữ liệu cần hiển thị, thay vì hiển thị 20 dòng trên một trang, chúng ta có thể qui định chỉ hiển thị 5 dòng trên một trang, như vậy chúng ta cần 4 trang để có thể hiển thị hết 20 dòng dữ liệu Điều này có nghĩa là nếu trang có số mẩu tin lớn hơn 5, mẩu tin thứ 6 trình bày trong trang kế tiếp, tương tự cho các trang khác

Ví dụ 4.3: Thiết kế trang (luoi_phan_trang.php) hiển thị

thông tin các quyển sách có phân trang, mối trang chỉ hiển thị

5 quyển sách như sau:

Hình 4.3: Thông tin sách được hiển thị dạng lưới có phân trang

+ Mỗi trang gồm có 5 dòng dữ liệu

+ Xuất thông tin dạng lưới có định dạng như hình trên (dòng chẵn và dòng lẻ có màu nền khác nhau)

+ Hiển thị danh sách trang theo dạng số

Giải:

- Tạo một trang “luoi_phan_trang.php”

Trang 8

103

- Chèn vào trang này class Pager dùng để thực hiện các chức

năng về phân trang

- Dùng mysql_connect(…) để kết nối vào csdl

- Dùng mysql_select_db(…) để chọn csdl “BookDB”

- Xác định số dòng nội dung cần hiển thị cho một trang và

gán vào cho biến $limit

- Tìm dòng bắt đầu của mỗi trang bằng hàm findStart(…) và gán cho biến $start

- Đếm số mẩu tin có trong bảng bằng hàm mysql_num_rows(…) và gán cho biến $count

- Tính tổng số trang bằng hàm findPages($count, $limit)

- Để đọc bảng dùng mysql_query(… LiMit $start,$limit)

- Duyệt các mẩu tin có được bằng hàm mysql_fetch_row(…), sau

đó xuất thông tin ra như định dạng trên

- Sau đó xuất danh sách các trang bằng hàm

pageList($_GET[‘page’],$pages) và gán cho biến $pageList, rồi

xuất biến này

Đoạn mã của trang “luoi_phan_trang.php” được viết như sau:

* Hàm int findStart(int limit)

* Trả về dòng bắt đầu của trang được chọn dựa trên trang lấy được

Trang 9

* Hàm int findPages(int count, int limit)

* Trả về số lượng trang cần thiết dựa trên tổng số dòng có trong table và limit

* $count là tổng số mẩu tin trong bảng

* Hàm floor(float $value) là hàm làm tròn, trả về số nguyên bằng cách làm tròn số xuống số nhỏ gần nhất

* ví dụ: floor(4.3)=4; floor(9.999)=9; floor(-3.14)=-4

* Hàm string pageList(int curpage, int pages)

* Trả về danh sách trang theo định dạng "Trang đầu tiên < [Các trang] > Trang cuối cùng"

* $curpage: Trang hiện tại

$page_list = "<b><big>&nbsp;".$i."&nbsp;</big></b>";

} else {

$page_list = "<a href=\"".$_SERVER['PHP_SELF']." ? page=".$i."\">&nbsp;".$i."&nbsp;</a>&nbsp;";

}

$page_list = "";

}

Trang 10

* Hàm string nextPrev(int curpage, int pages)

* Returns "Previous | Next" string for individual pagination (it's

<H2><p align=center><b> THÔNG TIN SÁCH </b></p></H2>

<table align=center border="1" cellpadding="2" cellspacing="2" style="border-collapse:collapse">

Trang 11

//Tìm số dòng của bảng nhờ câu lệnh truy vấn

$count = mysql_num_rows(mysql_query("select * from sach"));

//Tìm số trang dựa trên số dòng vừa có và giới hạn cho một trang

$pages = $p->findPages($count, $limit);

//Dùng start và limit để lấy số mẩu tin trong khoảng từ $start, và

số lượng mẩu tin trên một dòng là $limit

//Câu lệnh select * from sach LIMIT n,m cho phép truy vấn một số mẩu tin tính từ vị trí thứ n đến vị trí thứ m

$sql="select * from sach LIMIT ".$start.",".$limit;

echo "<td nowrap align=center>$varmasach</td>";

echo "<td nowrap align=center>$vartensach</td>";

echo "<td nowrap align=center>$vartacgia</td>";

echo "<td nowrap align=center>$varnxb</td>";

echo "<td nowrap align=center>$varnamxb</td>";

echo "<td nowrap align=center>" number_format($vargiatien,0,'.','.') " VNĐ</td>";

// Xuất danh sách trang

$pagelist = $p->pageList($_GET['page'], $pages);

Trang 12

4.2.4 Hiển thị dưới dạng list đơn giản

Ví dụ 4.4: Thiết kế trang (list_dang_don_gian.php) hiển thị

thông tin các quyển sách có định dạng như sau:

Hình 4.4: Thông tin sách được hiển thị dạng list đơn giản

Yêu cầu:

- Kết nối vào MySQL

Trang 13

Đoạn mã của trang “list_dang_don_gian.php” được viết như

//Đặt tên file ảnh trùng với mã sách

$varhinh= "<img src='images/$varmasach.jpg' width='100' height='100'>";

echo "<td><b>$vartensach</b><br> Tác giả:

$vartacgia <br> $varnxb - $varnamxb <br> Giá bán: $vargiatien VNĐ";

echo "<tr>";

}

Trang 14

Ví dụ 4.5: Thiết kế trang (list_dang_cot.php) hiển thị thông

tin các quyển sách có định dạng như sau:

Hình 4.5: Thông tin sách được hiển thị list dạng cột

Giải:

- Dùng mysql_connect(…) để kết nối vào csdl

- Dùng mysql_select_db(…) để chọn csdl “BookDB”

Trang 15

110

- Để đọc bảng sách dùng mysql_query(…)

- Duyệt các mẩu tin trong mảng sách bằng hàm mysql_fetch_row(…) và cứ mỗi dòng thì xuất ra một mẩu tin trong bảng sách theo định dạng trên

- Khai báo một biến $stt (gán bằng 0) để làm biến chạy theo

các mẩu tin được duyệt

- Đối với mỗi mẩu tin được duyệt, kiểm tra xem biến $stt có chia hết cho 4 hay không, nếu có thì in dòng mới, nếu không thì sẽ xuất tiếp các cột trong cùng một dòng (như yêu cầu)

- Trong mỗi cột (mỗi mẩu tin), xuất ra một table gồm 5 dòng: dòng đầu tiên là tên sách được in đậm, dòng thứ 2 là tên tác giả, dòng thứ 3 là tên nhà xuất bản và năm xuất bản, dòng thứ

4 là giá tiền, dòng thứ 5 là hình ảnh của sách

Đoạn mã của trang “list_dang_cot.php” được viết như sau:

//Đặt tên file ảnh trùng với mã sách

$varhinh= "<img src='images/$varmasach.jpg' width='100' height='100'>";

$vartacgia= $row["tacgia"];

$varnxb= $row["nxb"];

$varnamxb= $row["namxb"];

$vargiatien= number_format($row["giatien"],0,'.','.'); if($stt%4 == 0)

{echo "<tr>";}

echo "<td valign='top'>";

echo "<table align='center'>";

echo "<tr><td align='center'><b> $vartensach

</b></td></tr>";

echo "<tr><td align='center'> Tác giả: $vartacgia

Trang 16

4.2.6 Hiển thị list dạng cột có link

Ví dụ 4.6: Thiết kế trang (list_dang_cot_co_link.php) hiển

thị thông tin các quyển sách có định dạng như sau:

Hình 4.6: Thông tin sách được hiển thị list dạng cột có link

Trang 17

112

Tên sách là một liên kết, khi click vào liên kết, trang

“list_chi_tiet_sach.php” sẽ hiển thị chi tiết của sách như

* Đối với trang “list_dang_cot_co_link.php”

- Dùng mysql_connect(…) để kết nối vào csdl

- Dùng mysql_select_db(…) để chọn csdl “BookDB”

- Để đọc bảng sách dùng mysql_query(…)

- Duyệt các mẩu tin trong mảng sách bằng hàm mysql_fetch_row(…) và cứ mỗi dòng thì xuất ra một mẩu tin trong bảng sách theo định dạng trên

- Khai báo một biến $stt (gán bằng 0) để làm biến chạy theo

các mẩu tin được duyệt

- Đối với mỗi mẩu tin được duyệt, kiểm tra xem biến $stt có chia hết cho 4 hay không, nếu có thì in dòng mới, nếu không thì sẽ xuất tiếp các cột trong cùng một dòng (như yêu cầu)

- Trong mỗi cột (mỗi mẩu tin), xuất ra một table gồm 2 dòng: dòng đầu tiên là tên sách (in đậm) dạng link có kèm theo mã sách (để link qua trang chi tiết sách), dòng thứ 2 là hình ảnh của sách

* Đối với trang “list_chi_tiet_sach.php”

- Dùng mysql_connect(…) để kết nối vào csdl

Trang 18

//Đặt tên file ảnh trùng với mã sách

$varhinh= "<img src='images/$varmasach.jpg' width='100' height='100'>";

$vartacgia= $row["tacgia"];

$varnxb= $row["nxb"];

$varnamxb= $row["namxb"];

$vargiatien= number_format($row["giatien"],0,'.','.'); if($stt%4 == 0)

{echo "<tr>";}

echo "<td valign='top'>";

echo "<table align='center'>";

echo "<tr><td align='center'><a href='list_chi_tiet_sach.php?sachID=".$varmasach."'><b> $vartensach

Trang 19

//Đặt tên file ảnh trùng với mã sách

$varhinh= "<img src='images/$varmasach.jpg' width='100' height='100'>";

$vartacgia= $row["tacgia"];

$varnxb= $row["nxb"];

$varnamxb= $row["namxb"];

$vargiatien= number_format($row["giatien"],0,'.','.'); echo "<tr><td align='center' colspan='2' bgcolor='#FFEEE6'><b> $vartensach </b></td></tr>";

echo "<tr>";

echo "<td align='center' valign='middle'> $varhinh

</td>";

echo "<td>";

echo "<table align='center'>";

echo "<tr><td><b> Tên tác giả: </b>

Trang 20

115

echo "</table>";

echo "</td>";

echo "<tr align='right'><td><a href='list_dang_cot_co_link.php'>Quay về</a></td></tr>";

4.2.7 Hiển thị list chi tiết có phân trang

Ví dụ 4.7: Thiết kế trang (list_phan_trang_sach.php) hiển

thị thông tin các quyển sách có định dạng như sau:

Hình 4.7: Thông tin sách được hiển thị list có phân trang

Trang 21

- Trong đó, mỗi mẩu tin được duyệt xuất ra một table có 2 dòng: dòng đầu tiên là tên sách (in đậm) và canh giữa; dòng thứ 2 có 2 cột, cột đầu là hình ảnh, cột thứ 2 là các thông tin còn lại của sách

Đoạn mã của trang “list_phan_trang_sach.php” được viết như

* Hàm int findStart(int limit)

* Trả về dòng bắt đầu của trang được chọn dựa trên trang lấy được

* Hàm int findPages(int count, int limit)

* Trả về số lượng trang cần thiết dựa trên tổng số dòng có trong table và limit

* $count là tổng số mẩu tin trong bảng

Trang 22

* Hàm string pageList(int curpage, int pages)

* Trả về danh sách trang theo định dạng "Trang đầu tiên < [Các trang] > Trang cuối cùng"

* $curpage: Trang hiện tại

$page_list = "<b><big>&nbsp;".$i."&nbsp;</big></b>";

} else {

$page_list = "<a href=\"".$_SERVER['PHP_SELF']."

Trang 23

* Hàm string nextPrev(int curpage, int pages)

* Returns "Previous | Next" string for individual pagination (it's

//Tìm số dòng của bảng nhờ câu lệnh truy vấn

$count = mysql_num_rows(mysql_query("select * from sach"));

//Tìm số trang dựa trên số dòng vừa có và giới hạn cho một trang

$pages = $p->findPages($count, $limit);

//Dùng start và limit để lấy số mẩu tin trong khoảng từ $start, và

số lượng mẩu tin trên một dòng là $limit

//Câu lệnh select * from sach LIMIT n,m cho phép truy vấn một số mẩu tin tính từ vị trí thứ n đến vị trí thứ m

Trang 24

//Đặt tên file ảnh trùng với mã sách

$varhinh= "<img src='images/$varmasach.jpg' width='100' height='100'>";

$vartacgia= $row["tacgia"];

$varnxb= $row["nxb"];

$varnamxb= $row["namxb"];

$vargiatien= number_format($row["giatien"],0,'.','.'); echo "<tr><td align='center' colspan='2' bgcolor='#FFEEE6'><b> $vartensach </b></td></tr>";

echo "<tr>";

echo "<td align='center' valign='middle'> $varhinh

</td>";

echo "<td>";

echo "<table align='center'>";

echo "<tr><td><b> Tên tác giả: </b>

// Xuất danh sách trang

$pagelist = $p->pageList($_GET['page'], $pages);

Trang 25

120

?>

4.3 Tìm kiếm dữ liệu

4.3.1 Tìm kiếm đơn giản

Đối với một ứng dụng Web bất kỳ, nếu ứng dụng có sử dụng cơ sở dữ liệu thì ứng dụng này bao giờ cũng cung cấp một trang cho phép người dùng tìm kiếm dữ liệu Bằng cách cung cấp cho người dùng một form nhập các từ khóa hay các tiêu chuẩn cần tìm kiếm, bạn có thể truy cập cơ sở dữ liệu và trả về kết quả như người dùng mong đợi

Ví dụ 4.8: Thiết kế trang (list_tim_kiem_sach.php) cho phép

người dùng nhập vào tên sách cần tìm và hiển thị kết quả tìm kiếm như hình sau:

Lần đầu tiên khi chạy trang “list_tim_kiem_sach.php”

Hình 4.8: Form tìm kiếm sách

Khi nhập vào tên sách cần tìm và nhấn nút “Tìm kiếm”, trang

“list_tim_kiem_sach.php” hiển thị như sau:

Trang 26

- Cho biết có bao nhiêu quyển sách được tìm thấy

Giải:

- Dùng mysql_connect(…) để kết nối vào csdl

- Dùng mysql_select_db(…) để chọn csdl “BookDB”

- Lấy giá trị tên sách trên form và gán cho biến tên sách

- Đọc bảng sách dùng mysql_query(…) với điều kiện lọc là tên sách (tương đối) giống với tên sách trong bảng

- Đếm số sản phẩm thỏa điều kiện (tìm thấy) bằng hàm mysql_num_rows(…)

- Duyệt các mẩu tin có được bằng hàm mysql_fetch_row(…)

- Trong mỗi mẩu tin thỏa điều kiện, xuất ra một table có 2 dòng, dòng đầu tiên là tên sách (được in đậm) và canh giữa, dòng thứ 2 có 2 cột, cột đầu là hình ảnh, cột thứ 2 là các thông tin còn lại của sách

Đoạn mã của trang “list_tim_kiem_sach.php” được viết như

sau:

Trang 27

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Tim kiem sach</title>

<td colspan="3" align="center"><span class="style1">TÌM KIẾM THÔNG TIN SÁCH</span></td>

//Lấy giá trị từng colum

$varmasach= $row["sachID"];

$vartensach= $row["tensach"];

//Đặt tên file ảnh trùng với mã sách

Trang 28

echo "<table align='center'>";

echo "<tr><td><b> Tên tác giả: </b>

4.3.2 Tìm kiếm nâng cao

Ví dụ 4.9: Thiết kế trang (list_tim_kiem_sach_mo_rong.php)

cho phép người dùng nhập vào tên sách cần tìm và hiển thị kết quả tìm kiếm như hình sau:

Lần đầu tiên khi chạy trang “list_tim_kiem_sach_mo_rong.php”

Trang 29

124

Hình 4.10: Form tìm kiếm sách nâng cao

Khi nhập vào tên sách cần tìm và nhấn nút “Tìm kiếm”, trang

“list_tim_kiem_sach_mo_rong.php” hiển thị như sau:

Hình 4.11: Kết quả tìm kiếm sách nâng cao

- Cho biết có bao nhiêu quyển sách được tìm thấy

Trang 30

125

- Đọc bảng sách dùng mysql_query(…) với điều kiện lọc là chủ

đề sách và tên sách (tương đối) giống với tên sách trong bảng

- Đếm số sản phẩm thỏa điều kiện (tìm thấy) bằng hàm mysql_num_rows(…)

- Duyệt các mẩu tin có được bằng hàm mysql_fetch_row(…)

- Trong mỗi mẩu tin thỏa điều kiện, xuất ra một table có 2 dòng, dòng đầu tiên là tên sách (được in đậm) và canh giữa, dòng thứ 2 có 2 cột, cột đầu là hình ảnh, cột thứ 2 là các thông tin còn lại của sách

Đoạn mã của trang “list_tim_kiem_sach_mo_rong.php” được viết

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Tim kiem sach</title>

$varchudeid= $row["chudeID"];

$vartenchude= $row["tenchude"];

if($_POST["slchude"] == $varchudeid)

echo "<option value='$varchudeid' selected='selected'>$vartenchude</option>";

else

echo "<option value='$varchudeid'>$vartenchude</option>";

Trang 31

//Lấy giá trị từng colum

$varmasach= $row["sachID"];

$vartensach= $row["tensach"];

//Đặt tên file ảnh trùng với mã sách

$varhinh= "<img src='images/$varmasach.jpg' width='100' height='100'>";

Trang 32

4.4 Thêm mới dữ liệu

Thêm thông tin vào CSDL cũng giống như lấy dữ liệu từ CSDL trình bày trên

trình duyệt, thay vì gởi một phát biểu SQL dạng Select vào hàm mysql_query, bạn có thể gởi phát biểu SQL dạng Insert

Thông thường khi nhập thông tin vào CSDL, bạn cần xây dựng một trang PHP dùng để xác nhận lại các thông tin nhập của người dùng trước đó

Ví dụ: trong trường hợp thêm mới một quyển sách, bạn có thể xây dựng một trang

để xử lý theo các bước như sau:

- Người dùng nhập thông tin về sách cần thêm và bấm nút “Thêm sách!”

- Trang sẽ kết nối CSDL kiểm tra xem sách đã tồn tại hay chưa:

+ Nếu sách đã tồn tại trong CSDL, thông báo cho người dùng biết để điều chỉnh + Nếu chưa tồn tại sách này trong CSDL, thực hiện việc lưu sách, thông báo lưu thành công và hiển thị sách vừa thêm

Ví dụ 4.10: Thiết kế trang (them_sach_moi.php) cho phép

người dùng thêm vào CSDL 1 quyển sách như sau:

Trang 33

128

Hình 4.12: Form tìm kiếm sách nâng cao

Yêu cầu:

- Đặt tên cho form

- Thiết lập phương thức cho form là post

- Và action của form là tên của trang (them_sach_moi.php)

- Sử dụng điều khiển TextField, List/Menu, Button Trong đó đọc chủ đề sách trong bảng chủ đề và gán vào List/Menu chủ đề

- Kết nối vào MySQL

- Chọn csdl “BookDB”

- Đọc bảng “sach”

- Thực hiện việc thêm mới một quyển sách vào bảng sách sau khi đã kiểm tra các thông tin sau:

+ Tên sách không được để trống

+ Năm xuất bản, giá tiền phải là kiểu số

-> Nếu không hợp lệ thì thông báo “Kiểm tra lại thông tin nhập vào”

- Sau khi thêm sách mới vào bảng sách, hiển thị lại thông tin của sách này theo định dạng hình trên

- Thông báo kết quả thêm mới

- Xuất thông tin sách mới thêm vào bảng sách theo định dạng: một table có 2 dòng, dòng đầu tiên là tên sách (được in đậm)

và canh giữa, dòng thứ 2 có 2 cột, cột đầu là hình ảnh, cột thứ 2 là các thông tin còn lại của sách

Đoạn mã của trang “them_sach_moi.php” được viết như sau:

Trang 34

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Them sach moi</title>

Trang 35

$varchudeid= $row["chudeID"];

$vartenchude= $row["tenchude"];

if($_POST["slchude"] == $varchudeid)

echo "<option value='$varchudeid' selected='selected'>$vartenchude</option>";

else

echo "<option value='$varchudeid'>$vartenchude</option>";

Trang 36

echo "<p align='center'><b>Kiểm tra lại thông tin nhập vào

ở hộp văn bản: Năm xuất bản và Giá tiền.</b></p>";

exit;

}

//Kiểm tra xem sách định thêm đã có trong CSDL chưa

$sqlkt="select * from sach where tensach LIKE '$tensach'";

$result=mysql_query($sql,$link);

if($result)

{

echo "<p align='center'><b>Thêm sách thành công!</b></p>";

$sql="select * from sach where tensach LIKE '$tensach'";

$result=mysql_query($sql,$link);

//Kiểm tra số mẩu tin trả về if(mysql_num_rows($result) != 0) {

echo "<table align='center' width='600' cellpadding='0' cellspacing='0' border='1' style='border:thin

#FF6600'>";

while($row = mysql_fetch_array($result)) {

//Lấy giá trị từng colum

$varmasach= $row["sachID"];

$vartensach= $row["tensach"];

//Đặt tên file ảnh trùng với mã sách

$varhinh= "<img src='images/$varmasach.jpg' width='100' height='100'>";

Trang 37

echo "<table align='center'>";

echo "<tr><td><b> Tên tác giả: </b>

} }

Ví dụ 4.11: Thiết kế trang (luoi_cap_nhat_xoa_sach.php) cho

phép người dùng xem, sau đó chọn link sửa hoặc xóa để sửa hoặc xóa sách tương ứng như sau:

Trang 38

133

Hình 4.13: Trang cho phép người dùng chọn link để sửa hoặc xóa sách

Nếu người dùng chọn link “sửa” để cập nhật sách, trang

luoi_cap_nhat_xoa_sach_formsua.php sẽ liệt kê thông tin sách

cho người dùng cập nhật như sau:

Hình 4.14: Hiển thị thông tin của sách cần cập nhật

Sau khi người dùng nhập các thông tin cần sửa và click vào

nút “Cập nhật”, trang “capnhat.php” sẽ thực hiện việc cập nhật

và hiển thị lại thông tin của sách đã được cập nhật và một

liên kết quay về trang luoi_cap_nhat_xoa_sach.php như sau:

Hình 4.15: Hiển thị thông tin của sách đã được cập nhật

Trang 39

134

Nếu người dùng chọn link “xóa” để xóa sách, trang

luoi_cap_nhat_xoa_sach_formxoa.php sẽ thực hiện việc xóa sách

và hiển thị lại thông tin của sách đã xóa như sau:

Hình 4.16: Sách đã được xóa và hiển thị lại sách đã xóa

+ Khi click vào nút “Cập nhật” trang “capnhat.php” sẽ thực

hiện việc cập nhật thông tin đã sửa

- Trang “luoi_cap_nhat_xoa_sach_formxoa.php”

+ Kết nối vào MySQL

+ Chọn CSDL “sach”, thực hiện việc xóa sách đã chọn, sau đó

hiển thị lại sách đã được xóa

+ Tạo link quay về trang thông tin sách

Trang 40

echo "<p align=center><b> THÔNG TIN SÁCH </b></p>";

echo "<table align=center width='800' border='1' cellpadding='2' cellspacing='2' style='border-collapse:collapse'>";

echo "<tr>";

echo "<td align='center' nowrap>MÃ SÁCH</td>";

echo "<td align='center' nowrap>TÊN SÁCH</td>";

echo "<td align='center' nowrap>TÁC GIẢ</td>";

echo "<td align='center' nowrap>NHÀ XUẤT BẢN</td>";

echo "<td align='center' nowrap>NĂM XUẤT BẢN</td>";

echo "<td align='center' nowrap>GIÁ TIỀN</td>";

echo "<td align='center' nowrap><img src='but.jpg'></td>";

echo "<td align='center' nowrap><img src='xoa.jpg'></td>";

echo "<td nowrap align=center>$varsachID</td>";

echo "<td nowrap align=center>$vartensach</td>";

echo "<td nowrap align=center>$vartacgia</td>";

echo "<td nowrap align=center>$varnxb</td>";

echo "<td nowrap align=center>$varnamxb</td>";

echo "<td nowrap align=center>" number_format($vargiatien,0,'.','.') " VNĐ</td>";

echo "<td nowrap align=center><a href='luoi_cap_nhat_xoa_sach_formsua.php?sachID=".$varsachID."'>Sửa</ a></td>";

echo "<td nowrap align=center><a href='luoi_cap_nhat_xoa_sach_formxoa.php?sachID=".$varsachID."'>Xóa</ a></td>";

$stt = $stt + 1;

echo "</tr>";

}

echo "</table>";

Ngày đăng: 25/10/2022, 00:58

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm