早上好
我正在尝试从服务器上的数据库中删除一条记录。我有一个显示表格的表格,并有一个删除按钮。当用户单击删除按钮时,会出现一个引导程序模版,并要求他们确认删除。我想发生的是当用户单击“删除”(在模式中)时,它将在页面顶部运行PHP代码并删除记录。
由于某种原因,当我单击按钮时什么也没有发生,而且我也不知道为什么。
if(isset($_POST['deleteCategory'])) {
$sql = "DELETE FROM categories WHERE name = :categoryToDelete;";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':categoryToDelete', $_POST['categoryToDelete']);
$stmt->execute();
}
?>
<?php foreach ($result as $row) { ?>
<tr>
<td><?php echo $row->name; ?></td>
<td><?php echo $row->description; ?></td>
<td id="editRemoveButtonsCell">
<button id="editButton" type="button" class="btn btn-outline-warning">Edit</button>
<button id="removeButton" type="button" class="btn btn-outline-danger" data-toggle="modal" data-target="#removeCategoryModal<?php echo $row->name;?>">Remove</button>
</td>
</tr>
<!-- Delete Modal -->
<div class="modal" id="removeCategoryModal<?php echo $row->name;?>">
<div class="modal-dialog">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title">Delete Category <?php echo $row->name?></h4>
<button type="button" class="close" data-dismiss="modal">×</button>
</div>
<!-- Modal body -->
<div class="modal-body">
Are you sure you want to delete category <?php echo $row->name?>? All items associated with this category will also be deleted. <b>This cannot be undone!</b>
</div>
<!-- Modal footer -->
<div class="modal-footer">
<button type="button" class="btn btn-cancel" data-dismiss="modal">Close</button>
<form action="#" method="post" role="form">
<?php $_POST['categoryToDelete'] = $row->name; ?>
<button type="submit" name="deleteCategory" class="btn btn-danger" data-dismiss="modal">Delete</button>
</form>
</div>
</div>
</div>
</div>
<?php } ?>
需要任何进一步的信息,请随时询问。谢谢!
答案 0 :(得分:1)
<?php $_POST['categoryToDelete'] = $row->name; ?>
这将在每个周期覆盖$_POST['categoryToDelete']
。它不会为每个请求创建一个不同的参数。另外,页面呈现后,它就会消失,因此提交表单时不会如您期望的那样传递。
您最好的选择是将其替换为这样的隐藏输入
<input type="hidden" name="categoryToDelete" value="<?php echo $row->name; ?>">
答案 1 :(得分:0)
在模态页脚中,保留输入类型的隐藏变量以进行测试。
<input type="text" name="catname" value="<?php echo $row->name; ?>">
并检查是否在删除按钮上单击时显示在模式框中。
如果它在模型框表单中显示,则提交表单。在您的提交代码中,保留一个骰子;如下所示的调试语句
isset($_POST['deleteCategory'])) {
print_r($_POST);
}
检查是否提交了$ _POST ['catname']。如果已提交,则您的查询肯定可以使用。