删除按钮正在删除Mysql中最后一个插入的行

时间:2015-12-12 20:25:32

标签: php mysql

<?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是自动编号主键int,在mysql中不为null。

如果我按删除,它总是删除mysql中最后一行或最新的行。

如果我回显隐藏按钮的内容,它是正确的,但是如果我按下删除按钮,它会删除错误的行,为什么?

2 个答案:

答案 0 :(得分:2)

这是因为您希望能够删除单行,因此您拥有唯一的表单。你应该拥有尽可能多的表格。

不要将表单标记放在while循环之外,而应该将它们放在里面,这样就会有很多表单。

只有一个表单的问题在于您将隐藏字段命名为同名,因此它将占用最后一个。

while($row = $result->fetch_assoc()) {
    echo "<tr>";
     ...
    echo '<td><form ...><input hidden...><input type="submit"...></form></td>';
    ...
}

答案 1 :(得分:0)

$_POST[hidden]应为$_POST['hidden'];

 $DeleteQuery = "DELETE FROM dayoff WHERE id = '$_POST['hidden']'";