PHP如何为按钮生成唯一的名称,在每行的while循环上创建

时间:2020-03-21 13:12:35

标签: php html forms

我创建了一个while循环,该循环将从数据库中调用数据,并且每一行都会带有一个按钮,但是当我单击一个按钮进行更新时,它将更新所有行。我做了一些研究,但是增量解决方案似乎对我的报价没有任何影响。

Edit on GitHub

1 个答案:

答案 0 :(得分:0)

您可以为每个按钮赋予一个值。我还建议给他们一个比$i不同的名称和更好的名称(这是PHP变量吗?)。

作为旁注:

  • 您的代码容易受到SQL注入的攻击。我的示例使用带参数绑定的预备语句。
  • 请勿混合使用HTML和PHP。我故意将第一个查询分开。在开始输出HTML之前,应该执行PHP代码。
  • 我移动了<form>个iside <td>。您可以将<form>作为<table>的子级。但是,除非您计划使用POST方法,否则完全摆脱表单并使用链接可能会更好。
<?php
$users = $conn->query('SELECT id, First_name, Last_name, email, Country, paid FROM users')->fetch_all(MYSQLI_ASSOC);
?>
<?php foreach ($users as $row): ?>
<tr>
    <td>
        <a href="basic_table.html#"><?= $row['First_name']; ?></a>
    </td>
    <td class="hidden-phone"><?= $row['Last_name']; ?></td>
    <td><?= $row['email']; ?></td>
    <td><?= $row['Country']; ?></td>
    <td><span class="label label-info label-mini"><?= $row['paid']; ?></span></td>
    <td>
        <form action="registered.php" method="GET">
            <button class="btn btn-success btn-xs auth" name="myButton" value="<?= $row['id']; ?>"><span class="fa fa-check"
                    title="Authorize Access"></span></button>
            <button class="btn btn-primary btn-xs" name="removeAccess"><span class="fa fa-times" title="Remove Access"></span></button>
            <button class="btn btn-danger btn-xs" name="deleteUser"><span class="fa fa-trash-o " title="Delete user"></span></button>
        </form>
    </td>
</tr>
<?php endforeach; ?>

然后在您的registered.php中,您可以根据接收到的值执行UPDATE查询。

<?php
include 'mysqli.php';

if (isset($_GET['myButtton'])) {
    $stmt = $conn->prepare("UPDATE users SET paid='ads' WHERE id=?");
    $stmt->bind_param('s', $_GET['myButton']);
    $stmt->execute();
}