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