如何通过单击按钮来更新表值?

Posted

技术标签:

【中文标题】如何通过单击按钮来更新表值?【英文标题】:How do I get to update my table values by clicking a button? 【发布时间】:2018-06-28 06:52:42 【问题描述】:

我有这个页面,员工离开可以由管理员批准/拒绝。到目前为止,这就是我所拥有的:

<body>

<?php

if(isset($_POST['approved']))

    echo "Approved";
    $status=$_POST['status'];

if(isset($_POST['rejected']))

    echo "Rejected";
    $status=$_POST['status'];

?>

<!-- Begin page content -->
<div class="container">
    <div class="page-header">

        <h3>
            Employee Leaves
        </h3>
        <div class="table-responsive">
            <table class="table">
                <tr>
                    <th>Employee Name</th>
                    <th>Phone</th>
                    <th>Email</th>
                    <th>From</th>
                    <th>To</th>
                    <th>Reason</th>
                    <th>Status</th>
                    <th>---</th>
                </tr>
                <?php
                include ('database.php');
                $result = $database->prepare ("SELECT * FROM leaves order by id DESC");
                $result ->execute();
                for ($count=0; $row_message = $result ->fetch(); $count++)
                    ?>
                    <tr>
                        <td><?php echo $row_message['full_name']; ?></td>
                        <td><?php echo $row_message['phone']; ?></td>
                        <td><?php echo $row_message['email']; ?></td>
                        <td><?php echo $row_message['fromdate']; ?></td>
                        <td><?php echo $row_message['todate']; ?></td>
                        <td><?php echo $row_message['reason']; ?></td>
                        <td><?php echo $row_message['status']; ?></td>
                        <td>
                            <form method="post" action=""><input type="submit" value="Approved" name="approved"></input></form>
                            &nbsp
                            <form method="post" action=""><input type="submit" value="Rejected" name="rejected"></input></form>
                        </td>
                    </tr>
                <?php		?>
            </table>

            <a href="home"><button type="button" class="btn btn-primary"><i class="glyphicon glyphicon-arrow-left"></i> Back</button></a>

        </div>
    </div>
</div>
</div>

所以当我点击批准/拒绝时,我试图让status 的值更新。

这是我的表架构:

我认为我最不需要的是更新查询(不确定)。我知道那里有很多教程,我很抱歉,但我就是无法理解。我想我需要一个特定的。

【问题讨论】:

运行此代码后出现的服务器端错误是什么?还是点击批准或拒绝按钮? 【参考方案1】:

无需在循环中创建form 即可获取status 的值。您可以在&lt;a href='page?approved=[status]'&gt; 中传递value 并在单击时获取它。

您可以执行以下操作

<?php
for ($count=0; $row_message = $result ->fetch(); $count++)
    $id = $row_message['id']
    ?>
    <tr>
        <td><?php echo $row_message['full_name']; ?></td>
        <td><?php echo $row_message['phone']; ?></td>
        <td><?php echo $row_message['email']; ?></td>
        <td><?php echo $row_message['fromdate']; ?></td>
        <td><?php echo $row_message['todate']; ?></td>
        <td><?php echo $row_message['reason']; ?></td>
        <td><?php echo $row_message['status']; ?></td>
        <td>
            <a href="<?php echo $_SERVER['PHP_SELF'] . '?approved=' .$row_message['status']?>">Approve</a>
            <a href="<?php echo $_SERVER['PHP_SELF'] . '?rejected=' .$row_message['status']?>">Rejected</a>
        </td>
    </tr>
<?php      ?>

并获取status的值:

<?php

if(isset($_GET['approved']))

    echo "Approved";
    $status=$_GET['approved'];

if(isset($_GET['rejected']))

    echo "Rejected";
    $status=$_GET['rejected'];

?>

【讨论】:

【参考方案2】:

一旦按下任一操作按钮,您就没有 SQL 查询来更新数据库记录。

这里有一个提示:

$stmt = $database->prepare ("UPDATE leaves SET status = :status WHERE id = :row_id");
$stmt->execute(['status' => $status, 'record_id' => $record_id]);

另外请注意,您只需要一个表格,并且您需要在提交中包含记录 ID:

<form method="post" action="">
   <input type="hidden" value="<?php echo $row_message['id']; ?>" />
   <input type="submit" value="Approved" name="approved"></input>
   <input type="submit" value="Rejected" name="rejected"></input>
</form>

【讨论】:

【参考方案3】:

在这些表单元素中,您需要添加action(您处理表单数据的位置)。

在这种情况下,这就是该页面本身。

因此,您可以使用 PHP 文件名或$_SERVER["PHP_SELF"](PHP_SELF 是返回当前正在执行的脚本的变量)。

所以,你的表单元素应该是这样的

<form method="post" action="this_file_name.php"><input type="submit" value="Approved" name="approved"></input></form>
&nbsp
<form method="post" action="this_file_name.php"><input type="submit" value="Rejected" name="rejected"></input></form>

<form method="post" action="<?php echo $_SERVER["PHP_SELF"] ?>"><input type="submit" value="Approved" name="approved"></input></form>
&nbsp
<form method="post" action="<?php echo $_SERVER["PHP_SELF"] ?>"><input type="submit" value="Rejected" name="rejected"></input></form>

【讨论】:

以上是关于如何通过单击按钮来更新表值?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过简单地单击没有任何形式的按钮来更新 django 模型的数据?

如何通过仅单击该行中的一个值来显示该行中的所有值

如何通过按钮单击调用更新功能代码

单击按钮后如何通过服务执行小部件更新?

单击按钮时,如何触发 jquery datatables fnServerData 通过 AJAX 更新表?

使用下拉列表更新表值而不使用提交按钮