Quiero seleccionar una fila específica cuando hago clic en el botón eliminar o editar en mi tabla porque cada fila en mi tabla tiene 2 botones, uno para eliminar y otro para editar, pero elimina la fila que tiene la última identificación, no la fila que quiero. Quiero que cuando haga clic en el botón en la misma fila, la fila se elimine. busque la imagen de abajo para entender lo que quiero decir
Estoy usando este código para crear la tabla.
while($row = mysqli_fetch_assoc($result)) { echo ' <tr class="w3-hover-orange"> <td> <a class="links" href="topic.php?id=' . $row['topic_id'] . '">' . $row['topic_subject'] . '</a> </td> <td> ' . date('dm-Y', strtotime($row['topic_date'])) . ' </td> <td> </td> <td> <a href="edit_topic.php" name="topicEdit" id = "topicEdit" class = "w3-button tableButtons" >Edit</a> <button href="#" name="topicDelete" type="button" id="topicDelete" data-toggle="modal" data-target="#myModal" class ="w3-button tableButtons">Delete</button> </td> </tr>'; $_SESSION['topic_id_number'] = $row['topic_id']; $_SESSION['topciSubject'] = $row['topic_subject']; } echo'</table></form></div>';Y debajo el código para el tema de eliminación
if(isset($_POST['topicDelete'])){ $delete = $_SESSION['topic_id_number']; $query = "DELETE FROM topics WHERE topic_id =".$delete; $result = mysqli_query($con,$query); header ("location: awareness-projects.php"); }Creo que $row['topic_id'] identifica la identificación contra la cual se realizará la eliminación.
Realice los siguientes cambios:
<button href="#" name="topicDelete" type="button" id="topicDelete" data-toggle="modal" data-target="#myModal" class ="w3-button tableButtons">Delete</button> cámbielo a un anchor y en su href pase este $row['topic_id'] y obtenga su valor en la página de eliminación como:
<a href="xyz.php?id='".$row['topic_id'] ."'"Como las entradas de la tabla se generan dinámicamente a través del ciclo, siempre tomará la última identificación cuando finalice el ciclo porque el nombre de la sesión que usa es el mismo para cada entrada del ciclo while. por lo que se sobrescribirá cada vez y la última identificación estará en la variable de sesión. Hay varias opciones que puedes probar
<a href="#" name="topicDelete" type="button" id="topicDelete" data-toggle="modal" data-target="#myModal" class ="w3-button tableButtons" data-cid="$row['topic_id']">Delete</a>
luego, cuando haga clic en el enlace, obtenga el valor del enlace actual usando el siguiente código de jquery y guárdelo en el campo oculto del modal
$(".tableButtons").click(function(){ var id=$(this).data("cid"); alert(id);//check the id if you are getting current id or not $("#temp").attr("value",id);//this is the hidden field in modal which id is temp and name it to whatever name you use to get the value of it in your delete code });cada vez que envíe el formulario, el valor de este campo oculto se establecerá con el valor de la identificación y se enviará si está utilizando el método de acción del formulario. luego puede recuperar su valor como un cuadro de texto normal como ya lo ha hecho muchas veces, eso espero. Mis mejores deseos. Personalmente estoy usando este código para mi trabajo y funciona completamente bien;)
Envíe topic_id con cadena de consulta de la siguiente manera
<a href="xyz.php?id='".$row['topic_id']."'" name="topicDelete" type="button" id="topicDelete" data-toggle="modal" data-target="#myModal" class ="w3-button tableButtons">Delete</a>Eliminar código -
if(isset($_POST['topicDelete'])){ $delete = $_GET['id']; $query = "DELETE FROM topics WHERE topic_id =".$delete; $result = mysqli_query($con,$query); header ("location: awareness-projects.php"); }