每个循环中的PHP按钮

时间:2015-04-26 15:14:48

标签: php html mysql

我使用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。

任何帮助将不胜感激。谢谢。

3 个答案:

答案 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']

向您发送SQL代码

答案 1 :(得分:1)

你的while循环是错误的,因为最后一个被取出然后呈现html。尝试在while循环

下添加html

答案 2 :(得分:0)

请在表单中的隐藏字段中添加ID。因此,您可以像普通表单字段值一样获取每个表单提交的ID。将ID添加到隐藏字段值。