LĨẺT KỂ DỮ LIÊU

Một phần của tài liệu Giới thiệu về PHP (Ngôn ngữ lập trình) (Trang 136 - 141)

I- Piimary r~ Index r Unique

1. LĨẺ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 tran g PH P để 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 ã n h ận dạng của m ẩu tin dó. Trong trường hợp này chúng ta dùng cột khoá của m ã chuyển h àn g (SubCatelD) trong báng tblSubCategories định nghĩa trong tran g lietke.php như h ình 10-1.

1 ' 5 Liet k e d s S h ip s - M ic ro so ft I n t e r n e t E xplorer - | n | x |

File Edit View F avorites Tools Help

o Back ^ Pvl Search r-ftlFavorites ¡Of Media ■J ” A ddress 1 h ttp ://lo calh o st:8 5 /ch ap ter 10/lietke.php ■»■ị Links »

T o n g s o m a u tin tim t h a y 12 _ S u b C a t e l D C a t e l D S u b C a t e N a m e 1 SQL S e r v r e 7 .0 2 SQL S e v e r 2 0 0 0 3 V isual B a s ic .NET 4 V isual C # .N E T 5 flS P .N E T 6 J a v a S e r v e r P a g e 7 J a v a S e r v l e t 8 O ra c le 9 A c c e s s 1 0 MySQL 1 1 V isual 3 # . NET 1 2 DB2 D e le te I N ew I T o n g s o m a il tin 1 2 n r ■jljr Local intranet 4

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à SubCatelD của mỗi sản phẩm như ví dụ 10-1 trong tra n g lietke.php.

<?php

i f ($totalRows>0)

{

$i=0;

while ($ro w = mysql_fetch_array (Ệresult))

{

$i+=l;

?>

<tr valign= " top">

ctđxinput type=checkbox name=chkid value="<? = $row["SubCatelD"]?>"> </td> < t d x ? = $row [ "CateID" ] ?> </td> < t d x ? = $row[ "SubCatelD" ] ?> </td> <td x a href="capnhat.php?id=<? = $row["SubCatelD"]?>"> <?=$row["SubCateName"]?></a></td> </tr> <?php } ?> <tr valign="top " > <td colspan="4" align="middle"> <hr noshade size="l"> </td> </tr> <tr valign="top">

<td colspan=3xinput type=submit value= "Delete"> cinput type=hidden naine=Erom_ value= " subcategories " > <input type=hidden name=type value= " 0 " >

cinput type=h.idden name = chon value=" "> <input type=button value="New"

onclick="window.open('them.p h p ',target='_main')"></td> <td >Tong so mau tin <? = $i?x/tđ>

</tr> <?php

}else{

?>

<tr valign="top">

<td >&nbsp;</tdxtđ >&nbsp;</tdxtđ >&nbsp;</td> <td > <bx f o n t face= "Arial" color="#FF0000">

Oop! Ship not found:</fontx/bx/td>

< / t r >

<?php

} ?>

Trong đó, hai khai báo sau:

<ir.put type=hidđen name=from_ value= " subcategories " > <ir.put type=hidden name=type value= " 0 " >

<ir.put type=hidden name=chon value=" ">

Cho biết bạn submit từ tra n g nào và loại xoá nhiều m ẩu tin hay m ột m ẩu tin dối với bảng tương ứng. Mục đích của vấn dề này là tran g delete sử dụng chung cho nhiều bảng khác nhau và từ tran g liệt kê (xoá nhiều) hoặc từ tra n g edit (1 mẩu tin cụ thể).

Ngoài ra, chúng ta khai báo <input type=hidden name=chon value=”"> để n hận giá trị chọn trê n cách checkbox bằng cách khai báo đoạn javascript như sau:

<script>

{ var strchon=""; var alen=document.frmList.elements.length; var buttons = l; alen=(alen>buttons)?document.frmList.chkid.length:0; if (alen>0) {

for(var i = 0 ; i<alen; i++)

if(document.frmList.chkiđ[i].checked==true) strchon+=document.frmList.chkid[i].value+", } e l s e { if(document.frmList.chkid.checked==true) strchon=document.frmList.chkid.value; } document.frmList.chon.value=strchon; return isok(); } </script>

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.

' 3 Liet k e d s S h ip s - M icro so ft I n t e r n e t E x p lo re r j m

»File Edit View F avorites Tools Help File Edit View F avorites Tools Help

vi->Back (£ ) [ ỹ | 4^ Search [ i j Favorites i j 1 Media

Address I h ttp : //localhost : 85/chaD ter 1 O/lietketheonhom. php z\ Links C a t e g o r y : [ c o T ^ d ^ i e u ••• 1 T o n g s o m a u tin tim t h a y 4 # S u b c a t e I D C a t e ID S u b C a t e N a m e r 1 2 SO L S e r v r e 7 .0 r 2 2 SO L S e v e r 2 0 0 0 r 8 2 O r a c le r 9 2 A c c e s s r 10 2 MySO L r 1 2 2 D B 2 D e le te I New T o n g so m a u tin 6

. ] Done Local intranet

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.

function optionselected ($stSQL, $item, $ links)

{

$results = mysgl_query($stSQL, $links); $totalRows=mysql_num_rows($results) ; $strOption="<option value=\ " \ " selected>" ; $strOption . =" - -Select--</options*" ;

if ($totalRows>0)

{

while ($r o w = mysgl_fetch_array ($results))

{

$strOption . = "coption value=\ 11" ; $strOption . =$row["ID"]."\ " " ; i f ($row["ID"]==$item) $strOption .=" selected $strOption .= ">".$row["Name"]; $strOption .="</option>"; } } return $strOption; }

Sau đó, gọi phương thức này trong tra n g lietketheonhom .php như ví dụ 10-3.

<?php require("dbcon.php"); require("database.php"); $id=""; if (isset($cateid)) $id=$cateid;

$stSQL =" select CatelD As ID, CateName as Name from tblCategories " ; $result = mysql_query($stSQL, $link);

$totalRows=mysql_num_rows($result);

$strOption=optionselected($stSQL,$id,$link);

?>

<form name=frmMain method=post> <tr>

<td align=left colspan=4>

Category: <select name=cateid onchange= "document. frmMain. submit () ;">

<?=$strOption?> </select></td>

<td align=right>&nbsp;</td> </tr>

</form>

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 ì tra n g 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.

<form name=frmMain method=post> <tr>

<td align=left colspan=4>

Category: <select naine=cateid onchange=" document. frmMain. submit () ; ">

< ? = $ s trOpt i on? > </selectx/tđ>

<tđ align=right>&nbsp;</td> </tr>

</form>

Khi người sử dụng chọn các m ẩu tin như hình 10-2 và n h ấ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.

$ s t r i d = s t r _ r e p l a c e ,$strid) ;

Dựa vào thẻ hidden khai báo trong các tran g trìn h bày danh sách (chẳng ạn lietketheonhom.php) mẩu tin như sau:

<input name=11 f rom" type=hidden value= " subcategories " >

Bạn có th ể b iết từ tra n g nào gọi đến tra n g 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 p h á 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 SubCatelD in ( ' " . $strid $strlocatìon="Location:lietketheonhom.php";

break;

case "categories":

$stSQL = "delete from tbl cat egories where CatelD in('".$strid."')n; $strlocations"Location:nhom.php";

break;

}

Sau dó, bạn có th ể thực th i p h á t biểu SQL vừa khai báo ở trê n như ví dụ 10-7.

i f ($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 n h ậ n trước khi thực th i h ành động xoá mẩu tin chọn bằng cách khai báo đoạn Javascript như sau:

<script> function isok()

{

return confirm ( 'Are you sure to delete? ' ) ;

}

</script>

Sau đó gọi trong biến cố onsubmit của form như sau:

<form action=dosql .php method=posz onsubinit= "return calculatechon ( ) ; ">

2. CÂP NHÂT NHIỀU MAU t i n

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 dó, 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 tbltem s có giá trị là 1.

Một phần của tài liệu Giới thiệu về PHP (Ngôn ngữ lập trình) (Trang 136 - 141)