Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从复选框中获取MYSQL数据_Php_Mysql_Sql - Fatal编程技术网

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);
    }
}