@Iossarian

Как настроить кнопку для удаления записи из БД?

Суть вопроса: нужно напить кнопку для удаления записи из БД. Имеем форму:

<form class="lot-item__form" action="../lot.php?id=<?=$id;?>" method="post">
            <?php $classname = isset($error['com']) ? "--invalid" : "";?>
          <p class="lot-item__form-item <?=$classname;?>">
            <label for="com">Ваш комментарий</label>
              <textarea name="com" id="com" cols="33" rows="8"></textarea>
              <button type="submit" class="button">Комментировать</button>
              <button type="submit" name="del" class="button">Удалить пост</button>
          </p>
        </form>

Это форма отправки комментариев к посту в блоге. В этой же форме прикрутил кнопку удаления записи из БД. Настройки позволят удалить пост только автору, но вот как верно реализовать логику? Пробовал так:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {

if (isset($_POST['del'])) {
    $sql = 'DELETE * FROM post WHERE id = "' .$id. '";';
    $res = mysqli_query ($con, $sql);
    }
}

Подскажите, в чем ошибки и как сделать правильно? Спасибо.
  • Вопрос задан
  • 1389 просмотров
Пригласить эксперта
Ответы на вопрос 3
@ponaehal
Не силен в PHP, но вдруг подумалось что будет не айс если какой-нибудь доброжелатель в качестве id вам передаст строку вида: 1235" + "or 1=1" + ". ИМХО, надо бы как то залатать...
Ответ написан
Комментировать
@shushpanio
shushpanio
Плохая идея что-то полностью удалять.
Быть может логичнее сделать статью не активной? Т.Е. по нажатию кнопки в какой-то табличке формата
ID_статьи | Active

для статьи поставится значение например 0 и статья перестанет отображаться в ленте, но при этом сохранится в БД и в случае чего ее всегда можно будет восстановить
Ответ написан
@Iossarian Автор вопроса
Проблема была во внешних ключах. Комментарий ссылались на запись и потому запись нельзя было удалить без установки внешнего ключа при удалении CASCADE
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽