【问题标题】:Codeigniter attendance Module Looping resultCodeigniter考勤模块循环结果
【发布时间】:2019-07-04 05:26:02
【问题描述】:

您好,我一直在关注一个教程,以帮助我完成我在 Codeigniter 中制作的考勤模块。

我有活动,你可以参加每一个活动。

在我的活动视图文件中,我正在加载另一个名为出席.php 的视图文件。

活动视图文件显示了所有活动的详细信息,并在底部嵌入了出席表格。

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

这是我目前得到的 HTML:

<section class="content">
   <div class="row" >
      <div class="col-md-12">
      <h3>Event Attendance</h3>
      <?php echo form_open() ?>
        <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++;

                ?>
                <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>
                    <?php endforeach ?>
                <tr>
                    <td colspan="4">
                    <input type="submit" name="submit" value="Submit Attendance" class="btn btn-success">
                    </td>
                </tr>
                </tbody>
            </table>
        </div>
        <?php echo form_close() ?>
      </div>
    </div>
</section>

我拥有的 PHP 代码

<?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,
        );

    }

}

?>

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: php mysql database codeigniter loops


    【解决方案1】:

    我明白了为什么要向数据库添加重复结果。

    我有一个出勤查看文件,我从另一个查看文件调用它。我的提交功能是在考勤视图中,所以因为它在考勤视图中,它也在辅助视图中,所以它运行了2次,因此向数据库提交了一个副本。

    感谢弗朗西斯科的热心帮助。

    【讨论】:

      【解决方案2】:

      您打开一个表单并关闭它,封装了表格中的所有输入,除了每行相同的提交按钮。这就是为什么这会产生重复的原因,因为当您在一行上点击提交时,它会发送表单内的所有输入(来自所有其他行)。

      为每一行隔离表单:

      <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>
      

      我目前的出勤表:

      【讨论】:

      • 你好弗朗西斯科,谢谢你的好意建议,我让我的代码看起来像你的建议,但这只是将提交按钮添加到我不想发生的每一行。我在表格页脚中有一个提交按钮,因此当我检查每一行上的每个单选按钮时,我可以将所有结果提交到数据库。 - 我会将考勤表布局作为图像添加到原始问题中。
      猜你喜欢
      • 2013-11-20
      • 2023-01-24
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 2013-01-25
      相关资源
      最近更新 更多