Hye,我正在开发一个库存系统的小项目。在最后一部分之前,一切都还可以。我在每行的末尾都包含一个删除按钮,供用户删除任何选择的项目,但是当用户按下删除按钮时,它删除了表格的最后一行,而不是选择的行/项目,我在哪里我的编码错误了?
谢谢!
<?php
$result= mysql_query("SELECT * from Staff ORDER BY status");
$count=1;
while($row=mysql_fetch_array($result)){
?>
<tr>
<td align="left"><?php echo $count; ?></td>
<td align="left"><?php echo $row['staffId']; ?></td>
<td align="left"><?php echo $row['name']; ?></td>
<td align="left"><?php echo $row['address'];?></td>
<td align="left"><?php echo $row['pNum'];?></td>
<td align="left"><?php echo $row['status'];?></td>
<td align="left"><?php echo $row['type'];?></td>
<td><input type="submit" name="deleteStaff" value="Delete" onClick="displayMessage()">
<input type="hidden" name="staffId1" value="<?PHP echo $row['staffId']; ?>">
</td>
</tr>
</tbody>
<?php
$count++; }
if(isset($_POST['deleteStaff'])){
$id=$_POST['staffId1'];
$result=mysql_query("DELETE from Staff WHERE staffId='$id' ");
if($result){
echo '<script> location.replace("viewStaff.php"); </script>';
}
else{
?>
<script>
alert ("Fail to delete data")
window.location.href='viewStaff.php'
</script>
<?PHP
}
}
?>
&#13;
答案 0 :(得分:0)
因为隐藏字段的名称对于生成的所有行都是相同的,所以post请求会提取最后一行的值(也是&#34; staffId1&#34;)。
我建议为每一行使用单独的表单,在这种情况下,您的代码不会更改或使用js来使用选择器获取所需的staffID
答案 1 :(得分:0)
如果为每条记录包含相同的隐藏字段(StaffId1),它将包含多个值。
您现在正在收听按下的提交内容,因此您不需要隐藏字段。如果按下SUBMIT,您可以获得该值。
按钮强>
type="submit" name="staffId" value="<?php echo $id ?>"
<强>腓强>
$id=$_POST['staffId'];
答案 2 :(得分:0)
之前我也遇到过这个错误。我认为错误正在发生,因为你为每个数组结果调用相同的“onclick”函数。
相反,创建一个指向页面的链接,您可以在其中运行php删除脚本并将staffID传递给URI,并在您创建的php删除脚本中获取它。
例如
<form action="deletion_script.php?staffid=<?php echo $staffid; ?>">
将其放在td标签内
然后在您的deletion_script.php文件中,输入类似这样的内容
<?php
//get staffid from URI
$staffid = $_GET['staffid'];
$sql="DELETE FROM $table_name WHERE staffid = '$staffid'"
$result = mysqli_query($connect, $sql);
if($result) {
//send back to the page you want
header("Location: ../inventory.php");
}
?>
这对我有用,我从现在开始如何处理这样的所有情况。您需要稍微调整一下代码以适合您的设置。