如何使用提交按钮从 table 中删除 1 行?

How can I delete 1 row from a table using a submit button?

我正在使用 foreach 循环来显示我的数据。我正在从 table 中获取数据并保留,客户可以删除这些数据。

这是我当前的代码:

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
}

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

在显示预订的删除表单中,您可能需要像这样在隐藏的输入字段中传递号码

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

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

由于您添加到问题中的代码不完整且难以理解,也许一些半伪代码可能会有所帮助。您为每条记录使用的表格必须能够识别要删除的特定记录。一种典型的方法是使用 hidden 字段来保存该特定记录的 ID。提交表单后,ID 将在 POST 数组数据中可用,然后可用于构建 SQL 查询。下面的代码是对您可能如何构建 HTML 显示以及它是如何使用伪 while( $rs=$results->fetch() ) 等构建的猜测 - 它应该给出一个想法,尽管可能如何进行。

<?php

    if( $_SERVER['REQUEST_METHOD']=='POST' && !empty( $_POST['resid'] ) ){

        $resid = $_POST['resid'];
        $query = "DELETE FROM reservering WHERE reserveringnummer = :resid;";
        $stm = $con->prepare( $query );
        $result = $stm->execute( array( ':resid' => $resid ) );
    }

?>

<table>
<?php
    while( $rs=$results->fetch() ){

        echo "
        <tr>
            <td>Name:{$rs->name}</td>
            <!-- other table cells -->
            <td>
                <form method='post'>
                    <input type='hidden' name='resid' value='{$rs->reserveringnummer}' />
                    <input type='submit' />
                </form>
            </td>
        </tr>";

    }
?>
</table>