Giáo trình PHP
PHP viết tắt của chữ Personal Home Page ra đời năm 1994 do phát minh của
Rasmus Lerdorf, và nó tiếp tục được phát triển bởi nhiều cá nhân và tập thể khác, do đó
PHP được xem như một sản phẩm của mã nguồn mở.
PHP là kịch bản trình chủ (server script) chạy trên phía server (server side) như
cách server script khác (asp, jsp, cold fusion).
PHP là kịch bản cho phép chúng ta xây dựng ứng dụng web trên mạng internet hay
intranet tương tác với mọi cơ sở dữ liệu như mySQL, PostgreSQL, Oracle, SQL Server và
Access.
Lưu ý rằng, từ phiên bản 4.0 trở về sau mới hỗ trợ session, ngoài ra PHP cũng như
Perl là kịch bảng xử lý chuỗi rất mạnh chính vì vậy bạn có thể sử dụng PHP trong những
có yêu cầu về xử lý chuỗi
ong
trường hợp này chúng ta chỉ cần thiết kế trang cho phép nhập mã như hình 9-3.
Hình 9-3: Xoá 1 mẩu tin
Sau khi nhập mã cần xoá, nếu người sử dụng nhấn nút Delete lập tức trang dodelete.php sẽ
triệu gọi và xoá mẩu tin tương ứng.
::Welcome to PHP and mySQL
PHP VÀ DATABASE 9-7
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Xoa mau tin
<?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
5. TRUY VẤN DỮ LIỆU
Để truy vấn dữ liệu bạn sử dụng hàm mysql_num_rows để biết được số mẩu tin trả về và hàm
mysql_fetch_array để đọc từng mẩu tin và mảng sau đó trình bày giá trị từ mảng này. Chẳng hạn,
chúng ta tạo một tập tin lietke.php dùng để liệt kê danh sách mẩu tin trong bảng tblShips như hình
9-4.
Hình 9-4: Liệt kê mẩu tin
Để làm điều này, bạn khai báo đoạn chương trình đọc bảng dữ liệu tương tự như ví dụ sau:
<?php
require("dbcon.php");
$totalRows = 0;
$stSQL ="select * from tblShips";
$result = mysql_query($stSQL, $link);
$totalRows=mysql_num_rows($result);
?>
Sau đó, dùng hàm mysql_fetch_array để đọc từng mẩu tin và in ra như sau:
<?php
if($totalRows>0)
{
$i=0;
while ($row = mysql_fetch_array ($result))
{
$i+=1;
PHP VÀ DATABASE 9-8
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
?>
Trong trường hợp số mẩu tin trả về là 0 thì in ra câu thông báo không tìm thấy như sau:
<?php
}
}else{
?>
Oop! Ship not found!
<?php
}
?>
6. KẾT LUẬN
Trong bài này, chúng ta tập trung tìm hiểu cách kết nối cơ sở dữ liệu, thêm, xoá cập nhật và
liệt kê mẩu tin. Trong bài kế tiếp chúng ta tìm hiểu nhiều các trình bày dữ liệu, xoá mẩu tin theo
dạng mảng.
PHP VÀ DATABASE 9-1
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Môn học: PHP
BÀI 10: XOÁ, CẬP NHẬT DỮ LIỆU DẠNG MẢNG
Trong bài trước chúng ta đã làm quen với cách xoá mẩu tin trong cơ
sở dữ liệu mySQL. Đối với trường hợp xoá một lúc nhiều mẩu tin, chúng ta
phải xây dựng trang PHP có sử dụng thẻ input dạng checkbox.
Những vấn đề chính sẽ được đề cập trong bài học này
9 Liệt kê dữ liệu dạng danh sách
9 Xoá nhiều mẩu tin
9 Cập nhật nhiều mẩu tin
1. LIỆT KÊ DỮ LIỆU
Để xoá nhiều mẩu tin cùng một lúc, trước tiên bạn khai báo trang PHP để liệt kê danh sách mẩu
tin trong mảng dữ liệu chằng hạn, mỗi mẩu tin xuất hiện một checkbox tương ứng. Checkbox này
có giá trị là mã nhận dạng của mẩu tin đó. Trong trường hợp này chúng ta dùng cột khoá của
mã chuyển hàng (SubCateID) trong bảng tblSubCategories định nghĩa trong trang lietke.php như
hình 10-1.
PHP VÀ DATABASE 9-2
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 10-1: Liệt kê danh sách lại sản phẩm
Để cho phép lấy được nhiều giá trị chọn của sản phẩm như hình tren, bạn khai báo các checkbox
này cùng tên (giả sử tên là chkid) và giá trị trị là SubCateID của mỗi sản phẩm như ví dụ 10-1
trong trang lietke.php.
<?php
if($totalRows>0)
{
$i=0;
while ($row = mysql_fetch_array ($result))
{
$i+=1;
?>
<input type=checkbox name=chkid
value="">
">
<?php
}
?>
<input type=button value="New"
onclick="window.open('them.php',target='_main')">
Tong so mau tin
<?php
}else{
?>
Oop! Ship not found!
<?php
}
?>
Trong đó, hai khai báo sau:
Cho biết bạn submit từ trang nào và loại xoá nhiều mẩu tin hay một mẩu tin đối với bảng tương
ứng. Mục đích của vấn đề này là trang delete sử dụng chung cho nhiều bảng khác nhau và từ trang
liệt kê (xoá nhiều) hoặc từ trang edit (1 mẩu tin cụ thể).
Ngoài ra, chúng ta khai báo để nhận giá trị chọn trên
cách checkbox bằng cách khai báo đoạn javascript như sau:
function calculatechon()
PHP VÀ 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();
}
Tuy nhiên, do nhiều loại sản phẩm thuộc các nhóm sản phẩm khác nhau, chính vì vậy bạn khai báo
danh sách nhóm sản phẩm trên thẻ select cho phép người sử dụng liệt kê sách theo nhóm sản
phẩm như hình 10-2.
Hình 10-2: Liệt kê danh sách loại sách
Để liệt kê danh sách nhóm trong bảng tblCategories, bằng cách khai báo phương thức nhận chuỗi
SQL dạng Select và giá trị mặc định trả về nhiều phần tử thẻ option trong tập tin database.php
như ví dụ 10-2.
PHP VÀ 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="";
$strOption .="--Select--";
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 .="";
}
}
return $strOption;
}
Sau đó, gọi phương thức này trong trang lietketheonhom.php như ví dụ 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);
?>
Category:
Lần đầu tiên bạn có thể chọn mặc định một nhóm hoặc liệt kê tất cả, khi người sử dụng chọn nhóm
sản phẩm nào đó thì trang lietketheonhom.php sẽ liệt kê danh sách loại sách của nhóm sách đó.
Để làm điều này, bạn khai báo thẻ form với thẻ select như ví dụ 10-4.
Category:
Khi người sử dụng chọn các mẩu tin như hình 10-2 và nhấn nút Delete, dựa vào giá trị của nút có
tên action (trong trường hợp này là Delete), bạn có thể khai báo biến để lấy giá trị chọn bằng cách
khai báo như ví dụ 10-5.
$strid=$chon;
PHP VÀ DATABASE 9-5
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
$strid=str_replace(",","','",$strid);
Dựa vào thẻ hidden khai báo trong các trang trình bày danh sách (chẳng ạn lietketheonhom.php)
mẩu tin như sau:
Bạn có thể biết từ trang nào gọi đến trang dodelete.php để quay trở về khi thực hiện xong tác vụ xử
lý.
Ngoài ra, dựa vào giá trị của nút action để thực hiện phát biểu SQL. Chẳng hạn, trong trường hợp
này nếu người sử dụng nhấn hút Delete thì bạn khai báo như ví dụ 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 đó, bạn có thể thực thi phát biểu SQL vừa khai báo ở trên như ví dụ 10-7.
if($stSQL!="")
{
$result = mysql_query($stSQL, $link);
}
Lưu ý rằng, bạn cũng nên khai báo try catch trong khi làm việc với cơ sở dữ liệu. Ngoài ra, bạn
cũng phải xác nhận trước khi thực thi hành động xoá mẩu tin chọn bằng cách khai báo đoạn
Javascript như sau:
function isok()
{
return confirm('Are you sure to delete?');
}
Sau đó gọi trong biến cố onsubmit của form như sau:
2. CẬP NHẬT NHIỀU MẨU TIN
Tương tự như trường hợp Delete, khi bạn duyệt (approval) một số mẩu tin theo một cột dữ liệu nào
đó, chẳng hạn, trong trường hợp này chúng ta cho phép sử dụng những sản phẩm đã qua sự đồng ý
của nhà quản lý thì cột dữ liệu Activate của bảng tbltems có giá trị là 1.
Để làm điều này, trước tiên bạn liệt kê danh sách sản phẩm như hình 10-3.
PHP VÀ DATABASE 9-6
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
Hình 10-3: Liệt kê danh sách sản phẩm duyệt hay chưa
Tương tự như trong trường hợp delete, bạn khai báo trang doUpdate như sau:
::Welcome to PHP and mySQL
Cap nhat mau tin
<?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 VÀ 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
3. KẾT LUẬN
Trong bài này, chúng ta tìm hiểu chức năng xoá, cập nhật nhiều mẩu tin bằng cách sử dụng thẻ
input loại checkbox cùng tên và khác giá trị, bài kế tiếp chúng ta tiếp tục tìm hiểu về chức năng
đăng nhập trong PHP.
File đính kèm:
Giáo trình PHP.pdf

