Я пытаюсь добавить кнопку удаления в каждой строке, чтобы я мог удалить запись при нажатии кнопки. Я новичок в PHP и MySQL и переполнении стека.
Ниже приведена моя таблица, которая извлекает информацию из моей базы данных MySQL, и это работает.
<table class="table" > <tr> <th> Staff ID </th> <th> Staff Name </th> <th> Class </th> <th> Action </th> </tr> <?php while($book = mysqli_fetch_assoc($records)){ echo "<tr>"; echo "<td>".$book['Staff_ID']."</td>"; echo "<td>".$book['Staff_Name']."</td>"; echo "<td>".$book['Class']."</td>"; echo "</tr>"; }// end while loop
Просто используя PHP следующим образом (вы можете использовать JS)
while($book = mysqli_fetch_assoc($records)){ echo "<tr>"; echo "<td>".$book['Staff_ID']."</td>"; echo "<td>".$book['Staff_Name']."</td>"; echo "<td>".$book['Class']."</td>"; echo "<td><a href='delete.php?id=".$book['Staff_ID']."'></a></td>"; //if you want to delete based on staff_id echo "</tr>"; }// end while loop
В файле delete.php
,
$id = $_GET['id']; //Connect DB //Create query based on the ID passed from you table //query : delete where Staff_id = $id // on success delete : redirect the page to original page using header() method $dbname = "your_dbname"; $conn = mysqli_connect("localhost", "usernname", "password", $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } // sql to delete a record $sql = "DELETE FROM Bookings WHERE Staff_ID = $id"; if (mysqli_query($conn, $sql)) { mysqli_close($conn); header('Location: book.php'); //If book.php is your main page where you list your all records exit; } else { echo "Error deleting record"; }
Создайте файл delete.php, который получает $ _GET ['id'], затем запускает sql, чтобы удалить эту запись, когда они перейдут на эту страницу. Выполнено двумя способами: привязным тегом, как показано ниже,
Или сделайте кнопку вместо якоря, запустив ajax (через jquery), отправив этот идентификатор и запустив скрипт delete.php выше, о котором я упоминал.
table class="table" > <tr> <th> Staff ID </th> <th> Staff Name </th> <th> Class </th> <th> Action </th> </tr> <?php while($book = mysqli_fetch_assoc($records)){ echo "<tr>"; echo "<td>".$book['Staff_ID']."</td>"; echo "<td>".$book['Staff_Name']."</td>"; echo "<td>".$book['Class']."</td>"; echo "<td><a href='delete.php?id=".$book['Staff_ID']."'>Delete</a></td>"; echo "</tr>"; }// end while loop
Я бы порекомендовал вам использовать Ajax для вызова, что-то вроде @webDev, но вместо того, чтобы называть PHP, вызывать Javascript с AjaxCall, а затем использовать JS для скрытия / удаления рассматриваемой строки, таким образом, пользователь didn Не нужно перезагружать всю страницу.
Вы можете дополнить ответ, который вы выбираете с правильным кодом, а не href:
echo '<td><button onclick="deleteRow('.$book['Staff_ID'].')">Delete</button></td>';
И добавьте следующую функцию в раздел <head>
:
<script> function deleteRow(StaffID){ var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (xhttp.readyState == 4 && xhttp.status == 200) { alert("Deleted!"); } }; document.getElementById("table").deleteRow(x); xhttp.open("GET", "delete.php", true); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send("id="+StaffID); } </script>