Почему удаляется только в обратном порядке?
Я вывожу из БД данные создаю после цикла кнопку удалить, и название(из БД). Далее ниже говорится что если нажата кнопка с определенным названием кнопки, то удалить запись из бд, но если создать больше 1й такой записи, а потом пытаться удалить сначала первую, а потом вторую, то ничего не происходит, удаляется только в обратном порядке создания, то есть сначала вторая, потом первая. Почему так?
<?php $sql = mysqli_query($conn3,"SELECT * FROM `Food`");?>
<?php foreach($sql as $row):?>
<?php
$dish = $row['dish_name'];
$id = $row['id'];
?>
<div>
<h1 class="red" ><?php echo $dish;?></h1>
<input type="submit" class="del" name="<?php echo $id;?>" value="Удалить">
</div>
<?php endforeach;?>
<?php
if(isset($_POST[$id])){
$conn3->query("DELETE FROM `Food` WHERE id= '$id'");}
?>
Ответы (1 шт):
Автор решения: WarLikeLaux
→ Ссылка
Немного исправленный и более правильный вариант решения твоего запроса. Но у тебя кажется очень сильно хромают основы. Крайне рекомендую перед выполнением боевых задач пройтись по ним. От себя рекомендую PHP в подлиннике, как раз недавно вышла новая часть.
<?php
$sql = mysqli_query($conn3, "SELECT * FROM `Food`");
foreach ($sql as $row) {
$dish = $row['dish_name'];
$id = $row['id'];
?>
<div>
<h1 class="red"><?php echo $dish; ?></h1>
<form method="post" action="">
<input type="hidden" name="id" value="<?php echo $id; ?>">
<input type="submit" class="del" name="delete_<?php echo $id; ?>" value="Удалить">
</form>
</div>
<?php
}
if (isset($_POST['id'])) {
$deleteId = $_POST['id'];
if (isset($_POST['delete_' . $deleteId])) {
$stmt = $conn3->prepare("DELETE FROM `Food` WHERE id = ?");
$stmt->bind_param("i", $deleteId);
$stmt->execute();
$stmt->close();
}
}
?>