在foreach循环中打印后,如何仅从DB中删除选定的行

时间:2017-03-31 10:17:24

标签: 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;
          $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);
        }

        }

1 个答案:

答案 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)";
    .....

这很简单。

相关问题