簡體   English   中英

用復選框刪除多行 mysql

[英]Delete multiple rows mysql with checkbox

請幫助從表中刪除多行。

主頁.php

 <form action="del.php" method="get" enctype="multipart/form-data">
<?php
while($row=mysql_fetch_array($rs))
{
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="need_delete[<?php echo $row['id']; ?>]" type="checkbox" id="checkbox[<?php echo $row['id']; ?>]" value="<?php echo $row['id']; ?>"></td>
<td><?php echo $row['listingtype'];?></td>
<td><?php echo $row['propertyname'];?></td>
<td><?php echo $row['price'];?></td>
<td><?php echo $row['listdate'];?></td>


</tr>
<?php
}
?>

</table>
<tr>
 <td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete"></td>
</tr></form>

del.php

<?php
                 include "include/db.php";
                 $tbl_name='propertylistingbasicinfo';

                // Check if delete button active, start this
                if ( ! empty($_POST['delete'])) {
                    foreach ($_POST['need_delete'] as $id => $value) {
                        $sql = 'DELETE FROM `'.$tbl_name.'` WHERE `id`='.(int)$id;
                        mysql_query($sql);
                    }
                    header('Location: home.php');
                }

            ?>

錯誤:當我單擊刪除按鈕時,出現空白屏幕。 url 看起來像這樣:http://localhost/realestate/del.php?need_delete%5B2%5D=2&delete

您將 GET 與 POST 混淆,將表單方法更改為發布

您的表單中需要與此類似的內容

<input type="checkbox" name="record[]" value="<?php echo $id ?>">

然后您可以使用 implode() function 連接 id 並刪除它們

$deleted = implode(',',$_POST['record']);
$query = mysql_query("delete from table where id in ('$deleted') ");

未經測試,但這是這個想法。

問題是您使用 method="get" 提交表單,並且在 del.php 中,您正在從 $_POST 訪問值。 在 home.php 上將 method="get" 更改為 method="post"

我將其更改為以下...

home.php

<form action="del.php" method="post" enctype="multipart/form-data">
    <table>
    <?php while($row=mysql_fetch_array($rs)) { ?>
        <tr>
            <td align="center" bgcolor="#FFFFFF">
                <input name="need_delete[]" value="<?php echo $row['id']; ?>" type="checkbox" id="checkbox[<?php echo $row['id']; ?>]" />
            </td>
            <td><?php echo $row['listingtype'];?></td>
            <td><?php echo $row['propertyname'];?></td>
            <td><?php echo $row['price'];?></td>
            <td><?php echo $row['listdate'];?></td>
        </tr>
    <?php } ?>
    <tr>
         <td colspan="5" align="center" bgcolor="#FFFFFF">
            <input name="delete" type="submit" id="delete" value="Delete" />
        </td>
    </tr>
</table>

del.php:

<?php
    //Get the db-file and set the table name
    include "include/db.php";
    $tbl_name='propertylistingbasicinfo';

    // Check if delete button active, start this
    if ( !empty($_POST['delete'])) {

        //Let's sanitize it
        $sanitized_post_ids = array();
        foreach($_POST['need_delete'] as $id ) $sanitized_post_ids[] = intval($id);

        //Get the ids and add a trailing ",", but remove the last one
        $in_str = substr(implode(',', $sanitized_post_ids), 0, -1);

        //Build the sql and execute it
        $sql = 'DELETE FROM ' . $tbl_name ' WHERE id IN (' . $in_str . ')'; 
        mysql_query($sql);

        //Redirect!
        header('Location: home.php');
    }
?>

希望這對您有用(並且我沒有設法添加錯字或類似的失誤)!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM