Php 如何在foreach循环中打印选定行后仅从DB中删除这些行
我想知道如何从使用foreach循环打印的数据库中删除选中(带有复选框)行。 现在我只有这个:Php 如何在foreach循环中打印选定行后仅从DB中删除这些行,php,mysql,Php,Mysql,我想知道如何从使用foreach循环打印的数据库中删除选中(带有复选框)行。 现在我只有这个: if(isset($_POST['submitS1'])) { $myads = $wpdb->get_results( "SELECT * FROM ads ORDER BY id DESC"); foreach ($myads as $pointer2) { $id_ad = $pointer2->id; $
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);
}
}
if(isset($\u POST['submitS1'])){
$myads=$wpdb->get_results(“按id DESC从ads订单中选择*);
foreach($myads作为$pointer2){
$id_ad=$pointer2->id;
$title=$pointer2->title;
$text1=$pointer2->text1;
$nme=$pointer2->name;
回显“
消息:”.$text1“;
回显“
标题:”.$Title.“
”;
回显“
名称:”.$Name.“
”;
echo'删除此广告
';
}
回声'
';
如果(isset($发布['submito'],$发布['accept'])){
$sql2=“从`mydb`.`ads`删除,其中`ads`.`id`=”$id\u ad.”;
$wpdb->query($sql2);
}
}
只使用一个表单
将复选框名称设置为“删除\u id[$id]”
就这么简单。您有一个超出范围的问题;使用一个表单,而不是两个表单,为所述行使用隐藏输入。另外,您需要将这些复选框用作数组
<input type="checkbox" name="delete_ids[<?php echo $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)";
.....