无法从mySQL

时间:2017-06-07 20:44:27

标签: php mysql

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;
&#13;
&#13;

3 个答案:

答案 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");
}
?>

这对我有用,我从现在开始如何处理这样的所有情况。您需要稍微调整一下代码以适合您的设置。