【问题标题】: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 的值更新。

这是我的表架构:

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

【问题讨论】:

  • 运行此代码后出现的服务器端错误是什么?还是点击批准或拒绝按钮?

标签: php html sql database phpmyadmin


【解决方案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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-01
        • 2021-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多