Почему удаляется только в обратном порядке?

Рейтинг: -1Ответов: 1Опубликовано: 04.06.2023

Я вывожу из БД данные создаю после цикла кнопку удалить, и название(из БД). Далее ниже говорится что если нажата кнопка с определенным названием кнопки, то удалить запись из бд, но если создать больше 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'");}
?>

Ответы

▲ 0

Немного исправленный и более правильный вариант решения твоего запроса. Но у тебя кажется очень сильно хромают основы. Крайне рекомендую перед выполнением боевых задач пройтись по ним. От себя рекомендую 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();
    }
}
?>