Estoy tratando de agregar un botón de eliminación a una lista de tareas pendientes de PHP y MYSQL. Pruebo mi consulta sin marcadores de posición en mysql workbench y la consulta de eliminación funciona bien. También estoy bastante seguro de que las variables que envié a la URL también funcionan, cuando paso el mouse sobre ellas en mi página puedo ver que los valores son correctos. Cuando ejecuto eliminar enlace, no pasa nada y no recibo ningún mensaje de error. No estoy seguro de lo que estoy haciendo mal. Cualquier ayuda es apreciada
<?php require_once 'app/init.php'; if($_GET['delete']){ $id = $_GET['id']; $deleteQuery = $db->prepare(" DELETE FROM todo_list WHERE id = :id AND user = :user LIMIT 1 "); $deleteQuery->execute([ 'id' => $id, 'user' => $_SESSION['user_id'] ]); } header('Location: index.php'); ?>de aquí es de donde vienen las variables
<section> <div class="container"> <div class="list"> <h1 class="header">To Do</h1> <?php if(!empty($items)) : ?> <ul class="items"> <?php foreach($items as $item): ?> <li> <span class="item<?php echo $item['done'] ? ' done': '' ?> "><?php echo $item['name']; ?></span> <?php if(!$item['done']): ?> <a href="mark.php?as=done&item=<?php echo $item['id']; ?>" class="done-button">Mark as Done</a> <a href="delete.php?delete=true&item=<?php echo $item['id']?>" class="item-delete">Delete <i class="fas fa-trash-alt"></i></a> <?php endif; ?> </li> <?php endforeach; ?> </ul> <?php else:?> <p>you haven't added anything yet</p> <?php endif; ?> <form class="item-add" action="add.php" method="post"> <input type="text" name="name" placeholder="type a new item" class="input" autocomplete="off" required> <input type="submit" value="Add" class="submit"> </form> </div> </div> </section>Llamó al parámetro item y no id .
$id = $_GET['id'];por lo tanto, debe ser
$id = $_GET['item'];Probablemente necesite comprobar si el get isset if(isset($_GET['item'])) { var_dump($_GET['item']); }
En su etiqueta de atributo, está utilizando el elemento como cadena de consulta.
<a href="mark.php?as=done&item=<?php echo $item['id']; ?>Pero está obteniendo datos con una identificación de cadena de consulta incorrecta. Debe usar debajo de uno.
if($_GET['delete']){ $id = $_GET['item'];