我使用for循环在表单上显示用户详细信息。在每个循环中,我在用户详细信息下方添加一个按钮,以删除每个用户的信息。
<?php
foreach( $Names as $Name )
{
$dbQuery = $db->prepare("select * from user WHERE Name = ?");
$dbQuery->execute(array($Name));
while ($dbRow = $dbQuery->fetch(PDO::FETCH_ASSOC))
{
$ID = $dbRow['ID'];
$Email = $dbRow ['Email'];
}
?>
<div class="form-group">
<label for="hotel_id" class=" col-sm-4 control-label">ID:</label>
<div class="col-sm-8 input">
<input type="text" class="form-control" id="ID" name="ID[]" placeholder="Enter City Name" value="<?php echo $ID?>">
</div>
</div>
<div class="form-group">
<label for="Name" class="col-sm-4 control-label">Name:</label>
<div class="col-sm-8 input">
<input type="text" class="form-control" id="Name" name="Name[]" value="<?php echo $Name?>">
</div>
</div>
<div class="form-group">
<label for="Email" class="col-sm-4 control-label">Email:</label>
<div class="col-sm-8 input">
<input type="text" class="form-control" id="Email" name="Email[]" value="<?php echo $Email ?>">
</div>
</div>
<div class ="form-group">
<label for="removeUser" class="col-sm-4 control-label"></label>
<div class="col-sm-8">
<input id="removeUser" name="removeUser" type="submit" value="Remove this user" class="btn btn-danger" onclick="return confirm('Are you sure you want to completely remove this user?');">
</div>
</div>
<?php
}
?>
我知道如何删除用户,但我遇到的问题是,当单击按钮时,我似乎无法获得特定用户的ID。到目前为止,我只能检索显示的最后一个ID或显示的所有ID。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:3)
首先,您需要将结束循环括号移动到每行html的末尾。然后我建议你做一个单独的URL删除记录,并将提交按钮更改为锚标记(通过CSS规则,你可以使它看起来像一个按钮),所以锚点将是:
<a href="delete.php?id=<?php echo $ID?>" class="button" onclick="return confirm('Are you sure you want to completely remove this user?');">Delete</a>
所以在 delete.php 的后端你会有类似的东西:
if(isset($_GET['id'])){
$dbQuery = $db->prepare(sprintf("DELETE FROM user WHERE ID = %s", $_GET['id']));
$dbQuery->execute(array($Name));
}
您需要改进此删除查询,以便安全,因为人们可能会通过$_GET['id']
答案 1 :(得分:1)
你的while循环是错误的,因为最后一个被取出然后呈现html。尝试在while循环
下添加html答案 2 :(得分:0)
请在表单中的隐藏字段中添加ID。因此,您可以像普通表单字段值一样获取每个表单提交的ID。将ID添加到隐藏字段值。