如何使用提交按钮从 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>
我正在使用 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>