表格内模态不起作用

时间:2018-06-25 10:23:26

标签: php html bootstrap-4 bootstrap-modal

早上好

我正在尝试从服务器上的数据库中删除一条记录。我有一个显示表格的表格,并有一个删除按钮。当用户单击删除按钮时,会出现一个引导程序模版,并要求他们确认删除。我想发生的是当用户单击“删除”(在模式中)时,它将在页面顶部运行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">&times;</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 } ?>

需要任何进一步的信息,请随时询问。谢谢!

2 个答案:

答案 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']。如果已提交,则您的查询肯定可以使用。