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

pdf143 trang | Chuyên mục: PHP | Chia sẻ: dkS00TYs | Lượt xem: 2068 | Lượt tải: 2download
Tóm tắt nội dung Giáo trình PHP, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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:

  • pdfGiáo trình PHP.pdf
Tài liệu liên quan