Форма внутри модального не работает - PullRequest
0 голосов
/ 25 июня 2018

Доброе утро,

Я пытаюсь удалить запись из базы данных на сервере. У меня есть форма, которая отображает таблицу и имеет кнопку удаления. Когда пользователь нажимает кнопку удаления, появляется модал начальной загрузки и просит его подтвердить удаление. Я хочу, чтобы это случилось; когда пользователь нажимает кнопку «Удалить» (внутри модального окна), он запускает код 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 голосов
/ 25 июня 2018

В своем модальном нижнем колонтитуле сохраните скрытую переменную типа ввода для тестирования.

<input type="text" name="catname" value="<?php echo $row->name; ?>">

и проверьте, отображается ли это в модальном поле при нажатии на кнопку удаления или нет.

если он отображается в форме ModelBox, отправьте форму.В вашем коде отправки оставьте кубик;оператор для отладки, подобный приведенному ниже

isset($_POST['deleteCategory'])) {
      print_r($_POST);
}

проверка, отправлено или нет $ _POST ['catname'].если он будет отправлен, ваш запрос точно будет работать.

0 голосов
/ 25 июня 2018
<?php $_POST['categoryToDelete'] = $row->name; ?>

Это перезаписывает $_POST['categoryToDelete'] в каждом цикле. Это не создает разные параметры для каждого запроса. Кроме того, как только страница будет обработана, она исчезнет, ​​поэтому она не будет пропущена, как вы ожидаете при отправке формы.

Лучше всего заменить его скрытым вводом, подобным этому

<input type="hidden" name="categoryToDelete" value="<?php echo $row->name; ?>">
...