【发布时间】:2018-01-26 23:14:26
【问题描述】:
我正在创建一个表单来批准或拒绝休假请求。因此,这将打开一个包含休假请求数据行的表。您选中该框并在提交表单时,我希望它更改行的Status 并向用户发送电子邮件,让他们知道它已被接受。我让它更新该行,但是当它发送电子邮件时,它使用表中最后一行数据的信息。所以我有一个包含以下内容的 PHP 表单:
<form name="bulk_action_form" action="" method="post"/>
<tr>
<th></th>
<th>Username</th>
<th>Employee Name</th>
<th>First Day Off</th>
<th>First Day Back</th>
<th>Status</th>
<th>Date of Request</th>
</tr>
</thead>
<?php
if(mysqli_num_rows($query) > 0){
while($row = mysqli_fetch_assoc($query)){
?>
<tr>
<td align="center"><input type="checkbox" name="checked_id[]" class="checkbox" value="<?php echo $row['ID']; ?>"/>
<input type="hidden" name="worker_name" value="<?php echo $row['worker_name']; ?>"/>
<input type="hidden" name="Name" value="<?php echo $row['Name']; ?>"/>
<input type="hidden" name="FirstDayOff" value="<?php echo $row['FirstDayOff']; ?>"/>
<input type="hidden" name="FirstDayBack" value="<?php echo $row['FirstDayBack']; ?>"/></td>
<td><?php echo $row['worker_name']; ?></td>
<td><?php echo $row['Name']; ?></td>
<td><?php echo $row['FirstDayOff']; ?></td>
<td><?php echo $row['FirstDayBack']; ?></td>
<td><?php echo $row['Status']; ?></td>
<td><?php echo $row['_sfm_form_submision_time_']; ?></td>
</tr>
<?php } }else{ ?>
<tr><td colspan="5">No records found.</td></tr>
<?php } ?>
<input type="submit" class="btn btn-success" name="bulk_approve_submit" formaction="action-approve.php" value="Approve Request">
</form>
我的action-approve.php 如下所示。
<?php
session_start();
include_once('dbConfig.php');
if(isset($_POST['bulk_approve_submit'])){
$idArr = $_POST['checked_id'];
foreach($idArr as $id){
mysqli_query($conn,"UPDATE Request_off SET Status='Approved' WHERE ID=".$id);
// Get Parameters about the row that was selected
$worker_name = $_POST['worker_name'];
$Name = $_POST['Name'];
$FirstDayOff = $_POST['FirstDayOff'];
$FirstDayBack = $_POST['FirstDayBack'];
// Email Parameters
$to = $worker_name.'@somewhere.com, request-off@somewhere.com';
$subject = 'APPROVED: Time off request for '.$Name;
$message = 'Dear '.$Name.','. "\r\n\n" .'Your time off request from '.$FirstDayOff.' to '.$FirstDayBack.' has been approved!'. "\r\n\n" .'Note: Please keep a copy of this email for your records.';
$headers = 'From: request-off@somewhere.com';
mail($to, $subject, $message, $headers);
}
$_SESSION['success_msg'] = 'Request has been approved successfully.';
header("Location: Request_off-admin.php?Status=Pending");
}
?>
我将如何从选中的行中获取行数据,而不是特定表中的最后一行?
更新:
我只是把那些隐藏的字段变成了复选框。如果我选中特定行的所有框,我可以使其更新并正确发送电子邮件。我将研究隐藏这些复选框并仅使用一个来选择它们...
【问题讨论】:
-
您是否发现缺少的表单标签无关紧要?
-
感谢您的关注!我只是没有从我的 Notepad++ 中复制它们。
-
$to = $worker_name.'@somewhere.com, request-off@somewhere.com';这是问题的一部分。To:期望将电子邮件发送到电子邮件行,或者这只是伪代码?看到编辑,<form>默认为 GET 方法(和 self),并且您正在使用 POST 数组。