我有一个(N)个SQL表,其值为Applicationid、用户名、First_Name、Last_Name和Email.我希望记录显示在一个表上与2个按钮(接受和拒绝,这是在一个表格数据单元格).我可以显示记录和按钮,但是每当我按下任何一个按钮时,我总是会得到最后输入的记录的值.

我在代码中try 做的是将id放入一个数组中,使用会话,并将它们传递给各自的php文件.然而,我刚刚意识到,代码没有办法知道按下了哪个按钮.

                          <tbody>
                            <tr>
                             <?php
                               while($row = mysqli_fetch_assoc($applicationResult)){ ?>    
                      <td><?php echo $row['FirstName'] ?></td>
                      <td><?php echo $row['LastName'] ?></td>
                      <td><?php echo $row['UserName'] ?></td>
                      <td><?php echo $row['Email'] ?></td>
                      <td><?php echo $row['ApplicationID'];?></td>
                      <td><a href="acceptApplication.php" class="btn btn-sm round btn-outline-success" name="acceptButton">Accept</button>
                      <a href="rejectApplication.php" class="btn btn-sm round btn-outline-danger" name="rejectButton">Reject</button></td>
                        </tr>
                         <?php
                           array_push($applyID, $row['ApplicationID']);  }; ?>
                         </td>
<?php $convApplyID = implode(" ",$applyID); $_SESSION['applicants'] = $convApplyID; echo $convApplyID; // testing yung echo, remove in final code
                                 ?> 
                              </tr>
                            </tbody>

有没有办法获得该按钮所对应的记录的值?

推荐答案

您的按钮不会传递任何信息.接受应用程序或拒绝应用程序脚本需要知道它们正在处理的是哪个应用程序.最简单的方法是传递GET请求.它应该如下所示:

<tbody>
<?php
while($row = mysqli_fetch_assoc($applicationResult)) {
    ?>
    <tr>
        <td><?php echo $row['FirstName']; ?></td>
        <td><?php echo $row['LastName']; ?></td>
        <td><?php echo $row['UserName']; ?></td>
        <td><?php echo $row['Email']; ?></td>
        <td><?php echo $row['ApplicationID']; ?></td>
        <td>
            <a href="acceptApplication.php?id=<?php echo $row['ApplicationID']; ?>" class="btn btn-sm round btn-outline-success">Accept</a>
            <a href="rejectApplication.php?id=<?php echo $row['ApplicationID']; ?>" class="btn btn-sm round btn-outline-danger">Reject</a>
        </td>
    </tr>
    <?php
}
?>
</tbody>

如果不想使用GET请求(因为它们公开存储在URL中),可以使用表单将POST请求传递给相应的脚本.它应该是这样的:

<tbody>
<?php
while($row = mysqli_fetch_assoc($applicationResult)) {
    ?>
    <tr>
        <td><?php echo $row['FirstName']; ?></td>
        <td><?php echo $row['LastName']; ?></td>
        <td><?php echo $row['UserName']; ?></td>
        <td><?php echo $row['Email']; ?></td>
        <td><?php echo $row['ApplicationID']; ?></td>
        <td>
            <form action="acceptApplication.php" method="post">
                <input type="hidden" name="applicationId" value="<?php echo $row['ApplicationID']; ?>">
                <input type="submit" class="btn btn-sm round btn-outline-success" value="Accept">
            </form>
            <form action="rejectApplication.php" method="post">
                <input type="hidden" name="applicationId" value="<?php echo $row['ApplicationID']; ?>">
                <input type="submit" class="btn btn-sm round btn-outline-danger" value="Reject">
            </form>
        </td>
    </tr>
    <?php
}
?>
</tbody>

另一种安全传递请求的方法是使用AJAX.它看起来就像这样:

Html:

<tbody>
<?php
while($row = mysqli_fetch_assoc($applicationResult)) {
    ?>
    <tr>
        <td><?php echo $row['FirstName']; ?></td>
        <td><?php echo $row['LastName']; ?></td>
        <td><?php echo $row['UserName']; ?></td>
        <td><?php echo $row['Email']; ?></td>
        <td><?php echo $row['ApplicationID']; ?></td>
        <td>
            <button onclick="processApplication(<?php echo $row['ApplicationID']; ?>, 'accept')" class="btn btn-sm round btn-outline-success">Accept</button>
            <button onclick="processApplication(<?php echo $row['ApplicationID']; ?>, 'reject')" class="btn btn-sm round btn-outline-danger">Reject</button>
        </td>
    </tr>
    <?php
}
?>
</tbody>
<script>
function processApplication(applicationId, action) {
    var xhr = new XMLHttpRequest();
    xhr.open("POST", 'processApplication.php', true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    xhr.onreadystatechange = function() {
        if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
            // Handle the response here
            console.log(this.responseText);
        }
    }

    xhr.send("applicationId=" + applicationId + "&action=" + action);
}
</script>

Php相关问答推荐

打印SQL表内容时在DIV内添加断点

尽管包含目标日期,但日期范围比较仍有意外输出

在Laravel中,如果我用session—put()存储一些信息,客户端浏览器是否可以使用这些信息?>

PHP DateInterval天数不一致

LaravelEloquent 的地方条件父/子与第三模型多对多

根据未用于变体的产品属性隐藏WooCommerce发货方式

目标类[Set_Locale]不存在.拉威尔

为什么只有最后一次点击的点赞/心形会按预期改变 colored颜色 ,而其他的保持正常 colored颜色 ?

在laravel 9或10 php中向中间件响应添加自定义数据

使用DOMPDF获取PDF格式的本 map 像

在WooCommerce存档页面中显示可变产品的库存变化属性

根据WooCommerce的定制订单状态增加产品库存

使用简码在 WooCommerce 我的帐户中显示一些用户数据

如何判断php中wordpress路径之外的文件夹是否存在?

在 PHP 8.2 中使用 PHP Spreadsheet 和 CodeIgniter 3 导出 Excel 时出错

为 WordPress 页面创建新功能

使用来自 PHP 表单的数据更新 xml 命名空间

Laravel Factory - 在单列中生成具有随机迭代量的假 json 数组数据

使用 PHP ImageMagick 库将 pdf 文件的前 n 页转换为单个 png 图像文件

如何通过本地主机在同一台 PC 上同时运行 Microsoft IIS 和 WAMP