我想知道如何删除使用foreach循环打印的数据库中的所选行(带复选框)。 现在我只有这个:
if(isset($_POST['submitS1'])) {
$myads = $wpdb->get_results( "SELECT * FROM ads ORDER BY id DESC");
foreach ($myads as $pointer2) {
$id_ad = $pointer2->id;
$title = $pointer2->title;
$text1 = $pointer2->text1;
$nme = $pointer2->name;
echo '<br><h2>Message:</h2>'.$text1.'';
echo '<br><h2>Title:</h2>'.$title.'<br>';
echo '<br><h2>Name:</h2>'.$name.'<br>';
echo ' <form method="post"><input type="checkbox" name="accept" value="accepto">Delete this ad<br>
</form>';
}
echo '<form method="post">
<input type="submit" name="submito" value="Delete selected ads">
</form>';
if(isset($_POST['submito'], $_POST['accept'])) {
$sql2 ="DELETE FROM `mydb`.`ads` WHERE `ads`.`id` = ".$id_ad."";
$wpdb->query($sql2);
}
}
答案 0 :(得分:1)
只使用一种表格。
将您的复选框名称设置为“delete_ids [$ id]”
<input type="checkbox" name="delete_ids[<?php echo $id;?>]" />
PHP将处理POST数据,并为您提供一个名为delete_ids的整齐POST变量,其中包含您需要删除的ID数组(作为键)。迭代它......并删除。
$ids = array_keys( $_POST["delete_ids"] );
if(count( $ids ))
{
var_dump( $ids );
$ids = implode( ",", array_map( intval, $ids ));
$sql = "DELETE FROM... WHERE id IN ($ids)";
.....
这很简单。