2013-08-16 87 views
0

下面的代碼只適用於一個複選框,而忽略其餘部分。有什麼辦法可以讓它刪除選定的複選框?我一直在使用implode嘗試,但它給了我多選複選框帖子表格

Warning: implode(): Invalid arguments passed

<form action="" method="post"> 
<input type="checkbox" name="id" class="check" value = "<?php echo $row['id']; ?>"> 
<?php echo $row['to_user'];?> 
    <input type="submit" name="delete"> 
</form> 


    <?php 

if (isset($_POST['delete'])) { 
$id = $_POST['id']; 
$ids = implode(',', $id); 

$mydb = new mysqli('localhost', 'root', '', 'database'); 
$stmt = $mydb->prepare("update messages set deleted = 'yes' where from_user = ? and id = ? "); 
$stmt->bind_param('ss', $user, $ids); 
$stmt->execute(); 

echo "Message succesfully deleted"; 
exit();} 

?> 
+0

那麼表單代碼是什麼? –

+0

implode部分在哪裏?只有一個輸入 –

+0

@EmilioGort我現在已經包含了它。 –

回答

4

給複選框的數組式的名字:

<input type="checkbox" name="id[]" class="check" value = "<?php echo $row['id']; ?>"> 

這將導致$_POST['id']是所有的檢查值的數組。然後在一個循環中刪除:

$mydb = new mysqli('localhost', 'root', '', 'database'); 
$stmt = $mydb->prepare("update messages set deleted = 'yes' where from_user = ? and id = ?"); 
$stmt->bind_param('ss', $user, $id); 
foreach ($_POST['id'] as $id) { 
    $stmt->execute(); 
} 

不能使用逗號分隔的編號列表與=。您可以將其與id in (...)一起使用,但由於元素數目未知,因此無法使用此參數進行替換。所以循環是最好的方式來做到這一點。

+0

謝謝,但它不起作用。不會將其設置爲'yes' –

+0

@MikelMax您是否收到相同的錯誤? –

+0

沒有錯誤,但它沒有設置爲'yes' –