Php Codeigniter考勤模块循环结果
您好,我一直在遵循一个教程,帮助我在Codeigniter中制作一个考勤模块 我有活动,在每个活动中你都可以参加 在我的事件视图文件中,我正在加载另一个名为attention.php的视图文件 事件视图文件显示所有事件详细信息,并在底部嵌入考勤表 “出席表单”会拉入所有已注册的用户,并提供两个单选按钮来标记用户是否参加了活动 这是我到目前为止得到的HTML: 我的PHP代码 问题 我遇到的问题是,一切都很顺利,我可以参加。我看到结果进入数据库 每次我提交考勤时,它都会复制考勤记录。所以目前我有3个用户注册。因此,在考勤表的events(事件)页面的下方,它在每个表行中显示了3个用户。每个按钮都有单选按钮,可以显示“出席”或“缺席”。我提交表格,在数据库中我将有6个条目。当我只需要为每个用户显示1个条目时,每个用户提供2个条目,说明他们的出席情况。Php Codeigniter考勤模块循环结果,php,mysql,database,codeigniter,loops,Php,Mysql,Database,Codeigniter,Loops,您好,我一直在遵循一个教程,帮助我在Codeigniter中制作一个考勤模块 我有活动,在每个活动中你都可以参加 在我的事件视图文件中,我正在加载另一个名为attention.php的视图文件 事件视图文件显示所有事件详细信息,并在底部嵌入考勤表 “出席表单”会拉入所有已注册的用户,并提供两个单选按钮来标记用户是否参加了活动 这是我到目前为止得到的HTML: 我的PHP代码 问题 我遇到的问题是,一切都很顺利,我可以参加。我看到结果进入数据库 每次我提交考勤时,它都会复制考勤记录。所以目前我有3
任何帮助都将不胜感激。您打开并关闭了一个表单,该表单封装了表中的所有输入,但每行的提交按钮都是相同的。这就是为什么会生成重复项,因为当您在一行上点击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>