如何通过单击按钮来更新表值?
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>
 
<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
的值。您可以在<a href='page?approved=[status]'>
中传递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>
 
<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>
 
<form method="post" action="<?php echo $_SERVER["PHP_SELF"] ?>"><input type="submit" value="Rejected" name="rejected"></input></form>
【讨论】:
以上是关于如何通过单击按钮来更新表值?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过简单地单击没有任何形式的按钮来更新 django 模型的数据?