首页 > 解决方案 > 如何使用提交按钮从表中删除 1 行?

问题描述

我正在使用 foreach 循环来显示我的数据。我从带有预订的表格中获取数据,客户可以删除这些数据。

这是我当前的代码:

if(isset($_POST['verwijder']))
{
$resid= $pers->reserveringnummer;

$query = "DELETE FROM reservering WHERE reserveringnummer = :resid;";
$stm = $con->prepare($query);
$stm->bindParam(':resid', $resid, PDO::PARAM_STR, 20);
if($stm->execute() == true)
{
    ?>
    <script type="text/javascript">
    window.location.href = 'greservering.php';
    </script>
    <?php
}   else {
echo ("Mislukt");
}
}

//pers->reserveringnummer = reservation id loaded from database

此代码选择按钮所在行的 id,并删除具有此 id 的行。这一切都适用于 1 行,但是当我尝试使用 2 行时,它都删除了。

所有这些都发生在 foreach 循环内,因此每一行都有一个同名的提交按钮 (verwijder)。

当我单击提交按钮时,所有按钮都会执行该操作,并自行删除。

有没有办法解决这个问题?

编辑:

表单代码:(每行只有一个按钮)

//query to get all reservations
foreach ($result as $pers) {
?>
    //some row data
    <form method="post">
    <input type="submit" class="dropdown-item text-danger" name="verwijder" value="Verwijder">
    </form>
<?php
//delete code using submit
}

标签: phpsqlforeachdelete-row

解决方案


看起来您没有传递有关应删除哪个预订的任何信息。如何$pers->reserveringnummer;加载数字并知道按下了哪个按钮?

在显示预订的删除表单中,您可能需要在隐藏的输入字段中传递数字,如下所示

<input type="hidden" name="resid" value="<?= $resid ?>" />

然后在您的删除代码中,您使用此 ID 删除预订。


推荐阅读