Conversation with Merlin · Wed Dec 06 2023

Так теперь у меня другая проблема есть кнопка удаления в таблице а вот код php

Вот форма для подтверждения удаления Удалить пользователя Вы уверены в этом? Закрыть Удалить

if ($connect->connect_error) { $_SESSION['message'] = 'Ошибка соединения'; header('location: ../profile.php'); } $userid = $connect->real_escape_string($_POST["user_id"]); $sql = "DELETE FROM users WHERE id_user = '$userid'"; if ($connect->query($sql) === TRUE) { header('Location: ../profile.php'); exit;

} else { $_SESSION['message'] = 'Удаление успешно'; header('location: ../profile.php'); }

$connect->close(); header('location: ../profile.php');

} в чем проблема, если знаешь предоставь мне исправленный код

Проблема в коде возникает из-за того, что форма для подтверждения удаления идентификатор пользователя передает как "id", но в обработчике PHP используется переменная "user_id". Давайте исправим это.

Во-первых, в таблице с кнопкой для удаления заменим:

<button data-toggle='modal' data-target='#Modal-Delete' class='frame24-button btn btn-danger rounded-pill'>Удалить</button>

на

<button data-toggle='modal' data-target='#Modal-Delete' class='frame24-button btn btn-danger rounded-pill' data-userid='" . $row['id_user'] . "'>Удалить</button>

Затем, в форме для подтждения удаления, заменим:

<input type="hidden" id="user_id" name="id" value="">

на

<input type="hidden" id="user_id" name="user_id" value="">

И, наконец, в обработчике PHP, заменим:

if (isset($_POST["user_id"])) {

на

if (isset($_POST["id"])) {

Кроме того, для улучшения безопасности рекомендуется использовать подготовленные запросы для обработки пользовательского ввода.

После внесения этих изменений ваш код будет выглядеть более корректно.

я изменил код но ничего теперь не происходит

Понял, позвольте мне просмотреть ваш измененный код, чтобы найти и исправить проблему.

php

У вас возникла проблема с передачей и обработкой данных в форме удаления.

Для начала убедимся, что значение "user_id" передается из кнопки в модальное окно. Добавьте скрытое поле user_id в кнопку удаления следующим образом:

<button data-toggle='modal' data-target='#Modal-Delete' class='frame24-button btn btn-danger-pill data-userid='" . $row['id_user'] . "'>Удалить</button>

Проверьте также, что скрытое поле user_id в форме модального окна получает правильное значение при нажатии на кнопку "Удалить".

После этого убедитесь, что в обработчике PHP данные корректно получаются из формы. Измените следующее условие:

if (isset($_POST["user_id"])) {

на

if (isset($_POST["user_id"])) { $userid = $connect->real_escape_string($_POST["user_id"]); $sql = "DELETE FROM users WHERE id_user = '$userid'"; if ($connect->query($sql) === TRUE) { header('Location: ../profile.php'); exit; } else { $_SESSION['message'] = 'Ошибка удаления: ' . $connect->error; // также можно добавить дополнительную информацию об ошибке header('location: ../profile.php'); } $connect->close(); }

После внесения этих изменений, попробуйте повторно выполнить удаление пользователя. Если проблема останется, прошу сообщить мне, чтобы мы могли дальше ее исследовать.

Вот ошибка Warning: Undefined variable $connect in C:\OSPanel\domains\wt19.pgt.su\php\deleteUser.php on line 3

Fatal error: Uncaught Error: Call to a member function real_escape_string() on null in C:\OSPanel\domains\wt19.pgt.su\php\deleteUser.php:3 Stack trace: #0 {main} thrown in C:\OSPanel\domains\wt19.pgt.su\php\deleteUser.php on line 3

Эта ошибка указывает на то, что объект $connect является NULL, поэтому вызов метода real_escape_string() на нем приводит к ошибке.

Проверьте, бы ли успешное подключение к базе данных и был ли $connect определен до этого участка кода. Если подключение к базе данных не было выполнено, объект $connect останется NULL.

Убедитесь, что подключение к базе данных в файле deleteUSer.php выполнено перед попыткой выполнения запроса. Ваш код должен выглядеть примерно так:

require_once 'connect.php'; if ($connect->connect_error) { $_SESSION['message'] = 'Ошибка соединения'; header('location: ../profile.php'); } if (isset($_POST["user_id"])) { $userid = $connect->real_escape_string($_POST["user_id"]); $sql = "DELETE FROM users WHERE id_user = '$userid'"; if ($connect->query($sql) === TRUE) { header('Location: ../profile.php'); exit; } else { $_SESSION['message'] = 'Ошибка удаления: ' . $connect->error; header('location: ../profile.php'); } } $connect->close();

Это исправит ошибку, связанную с $connect, и позволит корректно выполнить запрос на удаление пользователя.