2017-06-20 108 views
-3

我已經在這裏看到了一些關於這個主題的問題,但是我看不到我想要做的解決方案。我有一個表格,我希望能夠檢查每行旁邊的複選框以具有多重刪除功能。我在表格上方放置了一個刪除按鈕。PHP使用複選框刪除多個錶行

我的刪除按鈕:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <input type="submit" id="staff_list_submit" name="multi_delete" value="Delete" 
      onclick="return confirm('Do you really want to do that?')"> 
</form><br> 

我的,它包含複選框TD:

 <td style="width: 60px; text-align: center; vertical-align: middle;"><input name="checkbox[]" type="checkbox" value="<?php echo $row['staff_id']; ?>"></td> 

我的PHP代碼來處理刪除:

if(isset($_POST['multi_delete'])) 
{ 
    $checkbox = $_POST['checkbox']; 
    for($i=0;$i<count($checkbox);$i++){ 
     $del_id = $checkbox[$i]; 
     echo $del_id; 
     $stmt = $conn->prepare("DELETE FROM `Tom`.`staff_details` WHERE `staff_id`=`$del_id`;"); 
     $result = $stmt->execute(); 
    } 

    if($result) { 
     exit(header('Location: staff_multiple_delete.php')); 
    } 
} 

我嘗試回聲​​並沒有什麼回來。

我在屏幕上得到兩個錯誤,當我點擊刪除按鈕:

Undefined index: checkbox 
Undefined index: result 

我已經出來拉我的頭髮了這一點,如果有任何幫助,可我們將不勝感激。我還是新的PHP

感謝

+0

瞭解準備好的發言,以防止SQL注入 – Jens

+0

當你調用'Checkbox' N元素在你的形式? – Jens

+0

'$ _POST ['checkbox']'從哪裏來? – Swellar

回答

0

這不是測試,但我認爲你應該能夠做到像下面,而不是一個循環,你有 - 這有點想念準備好的語句點由於反覆prepare

if($_SERVER['REQUEST_METHOD']=='POST' && !empty($_POST['checkbox'])){ 

    $ids = implode(',', $_POST['checkbox']); 
    $sql='delete from `tom`.`staff_details` where `staff_id` in (:ids)'; 
    $stmt=$conn->prepare($sql); 

    if($stmt){ 
     $stmt->bindParam(':ids', $ids); 
     $stmt->execute(); 
    } 
} 
+0

嗨RamRaider,我給了它去,但它似乎並沒有認識到複選框已被選中。我見過的所有例子都提供了該複選框的佈局。 – Tom