PHP从复选框中获取MYSQL数据
我正在创建一个表单来批准或拒绝休假请求。因此,这将生成一个表,其中包含休假请求的数据行。您选中该框,在提交表单时,我希望它更改行的PHP从复选框中获取MYSQL数据,php,mysql,sql,Php,Mysql,Sql,我正在创建一个表单来批准或拒绝休假请求。因此,这将生成一个表,其中包含休假请求的数据行。您选中该框,在提交表单时,我希望它更改行的状态,并向用户发送电子邮件,让他们知道该行已被接受。我让它更新行,但当它发送电子邮件时,它使用的是表中最后一行数据中的信息。因此,我有一个PHP表单,其中包含以下内容: <form name="bulk_action_form" action="" method="post"/> <tr> <th&
状态
,并向用户发送电子邮件,让他们知道该行已被接受。我让它更新行,但当它发送电子邮件时,它使用的是表中最后一行数据中的信息。因此,我有一个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>
如何从选中的行而不是特定表中的最后一行获取行数据
更新:
我只是把那些隐藏的字段变成了复选框。如果我选中某一行的所有复选框,我可以使其更新并正确发送电子邮件。我将研究隐藏这些复选框并仅使用一个复选框来选择所有复选框…本质上,您的问题是,您对所有
输入使用相同的名称。如果您在web浏览器中查看PHP表单的源代码,您会注意到许多worker\u name
字段,例如,每个记录对应一个字段。因此,列表中的最后一个输入将覆盖之前发布到脚本中的所有输入
然而,我的建议是只在复选框中张贴ID
s。数据库中已有的其余数据。在action approve.php
脚本中,您可以从数据库中加载姓名、休假天数等详细信息,并对其进行循环
类似这样(未经测试):
您是否发现丢失的表单标签不相关?感谢您的注意!我只是没有把它们从记事本++上复制过来。$to=$worker\u name.@somewhere.com,请求-off@somewhere.com';代码>这是问题的一部分<代码>收件人:
要求将电子邮件发送到电子邮件行,或者这只是伪代码?看到编辑后,
默认为GET方法(并作为self),您正在使用POST数组。我将对此进行演示。是的,我知道这很容易受到SQL注入的影响。这只会在我们的本地网络上运行,所以我不太担心。这是我需要进一步了解的内容。$newQuery=mysql\u query
在这里是一个输入错误。它确实在更新表中的数据,但它没有从其他行中提取其他数据以正确编制电子邮件。我只是在我的答案上固定了一个类型(newQuery之前的下划线)-请在副本上检查。不,只是因为它试图转到@ourcompany.com,所以从我们的邮件服务器上跳出的错误
<?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");
}
?>
<?php
foreach($idArr as $id){
mysqli_query($conn,"UPDATE Request_off SET Status='Approved' WHERE ID=".$id);
// Get Parameters about the row that was selected
$newQuery = mysqli_query($conn, "SELECT * FROM Request_off WHERE ID = $id");
if(mysqli_num_rows($newQuery) > 0){
while($_newRow = mysqli_fetch_assoc($newQuery)){
$worker_name = $_newRow['worker_name'];
$Name = $_newRow['Name'];
$FirstDayOff = $_newRow['FirstDayOff'];
$FirstDayBack = $_newRow['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);
}
}