Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.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 Codeigniter考勤模块循环结果_Php_Mysql_Database_Codeigniter_Loops - Fatal编程技术网

Php Codeigniter考勤模块循环结果

Php Codeigniter考勤模块循环结果,php,mysql,database,codeigniter,loops,Php,Mysql,Database,Codeigniter,Loops,您好,我一直在遵循一个教程,帮助我在Codeigniter中制作一个考勤模块 我有活动,在每个活动中你都可以参加 在我的事件视图文件中,我正在加载另一个名为attention.php的视图文件 事件视图文件显示所有事件详细信息,并在底部嵌入考勤表 “出席表单”会拉入所有已注册的用户,并提供两个单选按钮来标记用户是否参加了活动 这是我到目前为止得到的HTML: 我的PHP代码 问题 我遇到的问题是,一切都很顺利,我可以参加。我看到结果进入数据库 每次我提交考勤时,它都会复制考勤记录。所以目前我有3

您好,我一直在遵循一个教程,帮助我在Codeigniter中制作一个考勤模块

我有活动,在每个活动中你都可以参加

在我的事件视图文件中,我正在加载另一个名为attention.php的视图文件

事件视图文件显示所有事件详细信息,并在底部嵌入考勤表

“出席表单”会拉入所有已注册的用户,并提供两个单选按钮来标记用户是否参加了活动

这是我到目前为止得到的HTML:

我的PHP代码

问题 我遇到的问题是,一切都很顺利,我可以参加。我看到结果进入数据库

每次我提交考勤时,它都会复制考勤记录。所以目前我有3个用户注册。因此,在考勤表的events(事件)页面的下方,它在每个表行中显示了3个用户。每个按钮都有单选按钮,可以显示“出席”或“缺席”。我提交表格,在数据库中我将有6个条目。当我只需要为每个用户显示1个条目时,每个用户提供2个条目,说明他们的出席情况。


任何帮助都将不胜感激。

您打开并关闭了一个表单,该表单封装了表中的所有输入,但每行的提交按钮都是相同的。这就是为什么会生成重复项,因为当您在一行上点击submit时,它会发送表单中所有其他行的输入

隔离每行的表单:

<section class="content">
<div class="row" >
  <div class="col-md-12">
  <h3>Event Attendance</h3>
    <div class="table-responsive"> 
        <table class="table table-bordered table-striped dataTable">
            <thead>
            <tr class="">
                <th>Number</th>
                <th>User ID</th>
                <th>Name</th>
                <th>Attendance</th>
            </tr>
            </thead>
            <tbody id="tbody_events">

            <?php 
                $emp = $this->db->query("SELECT * FROM `aauth_users`");
                $result = $emp->result();
                settype($sl, "integer");

                foreach($result as $row):
                    $sl++;

                echo form_open(); // Form opens here for each row
            ?>
            <tr>
                <td><?php echo $sl ?></td>
                <td><?php echo $row->id ?>
                <input type="hidden" name="emid[]" value="<?php echo $row->id ?>">
                </td>
                <td><?php echo $row->full_name ?></td>
                <td>
                    <input type="radio" value="1" name="<?php echo $sl?>"> Present
                    <input type="radio" value="0" name="<?php echo $sl?>"> Absent
                </td>
            </tr>

            <tr>
                <td colspan="4">
                <input type="submit" name="submit" value="Submit Attendance" class="btn btn-success">
                </td>
            </tr>
            echo form_close(); // Form closes here for each row
            <?php endforeach ?>
            </tbody>
        </table>
    </div>
  </div>
</div>
我目前的出席表格:

我明白了为什么要将重复结果添加到数据库中

我有一个考勤视图文件,我从另一个视图文件调用它。我的提交功能位于“考勤”视图中,因此由于它位于“考勤”视图中,也位于“辅助”视图中,因此它运行了2次,因此向数据库提交了一份副本


感谢您对Francisco的友好帮助。

你好,Francisco,谢谢您的建议,我让我的代码看起来像您的建议,但这只是将提交按钮添加到我不希望发生的每一行。我在表尾有一个提交按钮,这样当我检查每行上的每个单选按钮时,我就可以将所有结果提交给DB我会将我的考勤表布局作为图像添加到原始问题中。
<?php

if (isset($_POST['submit'])) {

    $attid = $this->input->post('emid');
    $date = date("d-m-Y");
    $time = date("h:s:i A");
    $eventid = $events->id;
    $tm = count($attid);
    for($i=0;$i<$tm;$i++) {

        $at = $i+1;
        $attended = $_POST[$at];

        $attr = array(
            "user_id" => $attid[$i],
            "attended" => $attended,
            "attendance_date" => $date,
            "attendance_time" => $time,
            "event_id" => $eventid,
        );

    }

}

?>
<section class="content">
<div class="row" >
  <div class="col-md-12">
  <h3>Event Attendance</h3>
    <div class="table-responsive"> 
        <table class="table table-bordered table-striped dataTable">
            <thead>
            <tr class="">
                <th>Number</th>
                <th>User ID</th>
                <th>Name</th>
                <th>Attendance</th>
            </tr>
            </thead>
            <tbody id="tbody_events">

            <?php 
                $emp = $this->db->query("SELECT * FROM `aauth_users`");
                $result = $emp->result();
                settype($sl, "integer");

                foreach($result as $row):
                    $sl++;

                echo form_open(); // Form opens here for each row
            ?>
            <tr>
                <td><?php echo $sl ?></td>
                <td><?php echo $row->id ?>
                <input type="hidden" name="emid[]" value="<?php echo $row->id ?>">
                </td>
                <td><?php echo $row->full_name ?></td>
                <td>
                    <input type="radio" value="1" name="<?php echo $sl?>"> Present
                    <input type="radio" value="0" name="<?php echo $sl?>"> Absent
                </td>
            </tr>

            <tr>
                <td colspan="4">
                <input type="submit" name="submit" value="Submit Attendance" class="btn btn-success">
                </td>
            </tr>
            echo form_close(); // Form closes here for each row
            <?php endforeach ?>
            </tbody>
        </table>
    </div>
  </div>
</div>