Добрый день) Есть код, который отрисовует таблицу с БД и у него есть функция удаление записей с таблицы. Все вроде как-то работает, но при удалении записи, она удаляется не сразу, а только после обновления страницы. Можно ли как-то это исправить? PHP: <?php define(HOST, 'localhost'); define(USER, 'root'); define(PASSWORD, ''); define(DB_NAME, 'test'); $link = mysqli_connect(HOST, USER, PASSWORD, DB_NAME) or die(mysqli_connect_error($link)); mysqli_query($link, "SET NAMES 'utf8'"); $query = "SELECT * FROM workers"; $result = mysqli_query($link, $query) or die(mysqli_error($link)); while ($row = mysqli_fetch_assoc($result) ) { $mass[] = $row; } $show = '<table border = "1">'; $show .= '<tr>'; foreach($mass[0] as $key => $val) { $show .= '<th>'.$key.'</th>'; } foreach ($mass as $value) { $show .= '<tr>'; foreach ($value as $subvalue) { $show .= '<td>'.$subvalue.'</td>'; } $show .= '<td><a href="?del='.$value['id'].'">удалить</a></td>'; $show .= '</tr>'; } $show .= '</table>'; if(!empty($_GET['del'])){ $queryDel = "DELETE FROM `workers` WHERE id=".$_GET['del']; mysqli_query($link, $queryDel) or die(mysqli_error($link)); } mysqli_close($link); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" type="text/css" href="style/style.css"> </head> <body> <?=$show?> </body> </html>
А подумать? При клике, страница обновляется. 1) Считывает 20 строк с таблицы базы данных 2) Удаляет одну из строк. Интересно, что произойдет, если действия поменять местами? p.s. не айс код, проверки на существовании записи нет, + дыра.
@Kylun-Serg, разделите вывод и собственно удаление. Для удаления в протоколе есть спец. метод, но HTML не позволяет его использовать, поэтому обычно ограничиваются методом POST. Метод GET также допустимо использовать для удаления, если способны обезопасить пользователя и собственно БД от «случайных удалений». Завершающим действием при удалении обычно является редирект методом GET на список «оставшихся» объектов или на спец. страницу результата операции (а в первом случае результат обычно выводится в тайле, т.е. спец. предназначенной для этого области или всплывающем окошке).
Я запостил вопрос, а потом минут через 30 мне дошло, что сначала нужно удалить, а потом рисовать))) Код учебный, изучаю пхп и практикуюсь, цели писать проверки не было, но для себя уже написал. +ДЫРА - Вы имеете в виду метод GET?
Да, GET-парметр. Нет валидации/фильтрации. Также можете вставлять в запрос строкой (в кавычках), но тогда нужно экранировать плюс это чревато пропуском левых дублей, если не ошибаюсь. --- Добавлено --- P.S. Чтобы обезопасить код от «пропуска левых дублей», можно попробовать по ходу запроса перегонять значения поля id в символьный тип. Как-то так: Код (Text): ... WHERE CAST(`id` AS CHAR)='{$id}'