2013-02-24 66 views
0

我有一個項目列表,每行都有一個複選框。每個複選框都有一個唯一的名稱,如對應於數據庫中的item_ID的「65」或「77」。我希望能夠根據選中的複選框刪除表條目

DELETE FROM $table WHERE "name of checkbox"=item_ID AND "checkbox is checked" 

基本上刪除對應於該錶行中勾號複選框的任何數據條目。 該複選框被構造爲這樣的和出現在每一行的末尾:

$field=mysql_fetch_assoc($result); 
$ID=$field['item_ID']; 

<input name='".$ID."' type='checkbox' value='yes'> 
+0

如果你呼應複選框輸入$ _ POST值,你就會明白爲什麼它贏得了」工作。 – 2013-02-24 14:57:11

回答

0

設置他們的名字爲$ ID [],並且在服務器側做_REQUEST $ [$ ID] foreach循環。

0

因爲在Forms中,只有通過POST發佈的複選框被選中,您需要用一個小技巧來解決這個問題。對每一個條目在你的HTML代碼發佈這個東西到你的服務器,你應該有數組$ _ POST [「IDS」]包含已經顯示您的用戶的所有行後添加一個隱藏字段一樣

<input type='hidden' name='ids[]' value='".$ID."'> 
<input name='checkbox_".$ID."' type='checkbox' value='yes'> 

。所以遍歷並請檢查是否相應的複選框索引存在:

foreach($_POST['ids'] as $checkId) { 
    if(array_key_exists('checkbox_'.$id, $_POST) { 
     // delete the entry 
     $sql = 'delete from your_table where id = "'.$id.';"'; 
     // execute sql 
    } 
} 
+0

或者你可以像在你的例子中一樣再次從數據庫中獲取原始列表('$ field = mysql_fetch_assoc($ result); $ ID = $ field ['item_ID'];'),你不需要隱藏的輸入。 – 2013-02-24 15:03:26

0

另一招:

<form> 
<input type="checkbox" name="checkbox_$iID"> 
... 
</form> 

foreach ($_POST as $post) { 
$temp=explode('_',$post); 
if ($temp[0]=="checkbox") {delete $temp[1]....} 
} 
相關問題