<?php
if(isset($_POST['delete_dayOff'])) {
$DeleteQuery = "DELETE FROM dayoff WHERE id = '$_POST[hidden]'";
mysqli_query($db,$DeleteQuery);
};
// display records
$select_employee = "SELECT * FROM dayoff";
$result = $db->query($select_employee);
?>
<table>
<div id="Day-off Employees">
<?php
echo "<table><caption>Day-off Employees</caption><tr>
<th>Employee First Name</th>
<th>Employee Last Name</th>
<th>Day-Off</th>
</tr>";
echo "<form action=dayoff.php method=post>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $row["employeefname"]. "</td>";
echo "<td>" . $row["employeelname"]. "</td>";
echo "<td>" . $row["date"]. "</td>";
echo "<td>" . "<input type=hidden name=hidden value=" . $row["id"]. " </td>";
echo "<td>" . "<input type=submit name=delete_dayOff value=delete >" . " </td>";
echo "</tr>";
}
echo "</form";
echo "</table>";
?>
Я использую тот же точный сценарий на другой странице, и он отлично работает. id
- первичный ключ autonumber int, а не null в mysql.кнопка удаления удаляет последнюю вставленную строку в Mysql
Если я нажму кнопку delete, он всегда удаляет последнюю вставленную строку в mysql или новую строку.
Если я повторяю содержимое скрытой кнопки, это правильно, но если я нажму кнопку «Удалить», он удалит неправильную строку, почему?
извинения за отсутствующим тег HTML, я просто скопировал часть, которую вы должны видеть – Lynob
места ваших тегов формы внутри 'while' цикла, и вы действительно должны процитировать ваши материалы. Известно, что это имеет неблагоприятные последствия. Посмотрите также на свой HTML-источник. Здесь вы также можете использовать SQL-инъекцию. –
Ваш $ _POST [скрытый] не будет правильно оцениваться в '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' Вы должны изменить его на '$ DeleteQuery =" DELETE FROM dayoff WHERE id = '". (int) $ _POST ['hidden']. ". Это также один из способов гарантировать, что id в int для предотвращения SQL-инъекции. –