我正在尝试使用codeigniter制作学校考勤跟踪器。我不知道如何让Student_no和单选按钮值存在或不存在以进入数据库。 student_no和单选按钮的值都作为NULL发布到我的控制器?
我的控制器文件
function insertAttendance(){
$student_no=$this->input->post('student_no');
$attendance=$this->input->post('attendance');
$data = array(
'student_no'=>$student_no,
'attendance'=>$attendance
);
//$this->form_validation->set_data($data);
$this->db->set($data);
$this->db->insert('attendance',$data);
}
我的观点
<h3>ATTENDANCE TRACKER</h3>
<table class="table table-lg" name="student_no">
<tr>
<th>Student_NO</th>
<th>Student name</th>
<th>Student DOB</th>
<th>Attendance</th>
</tr>
<?php foreach ($query->result_array() as $row): {?>
<tr>
<td><?php echo $row['student_no'];?></td>
<td><?php echo $row['student_name'];?></td>
<td><?php echo $row['student_dob'];?></td>
<tr>
<label>
<label><input type="radio" name="attendance[<?php echo $row['player_id']; ?>]" value="Yes">Present</label>
 
<label><input type="radio" name="attendance[<?php echo $row['player_id']; ?>]" value="No">Absent</label>
</td> </tr>
<?php } ?>
<?php endforeach; ?>
</tr>
</tbody>
</table>
答案 0 :(得分:0)
student_no的表单字段在哪里?我没有看到它,它应该抛出一个未定义的通知。 假设$ row ['player_id']不为空,则$ this-&gt; input-&gt; post('attendance')将不存在。
<input type="radio" name="attendance_<?php echo $row['player_id']; ?>" value="Yes">
也许尝试这样并为student_no创建一个表单字段(隐藏字段?)。
您不需要
$this->db->set($data);
因为您已经在构建器的插入部分中传递了$ data数组。
编辑:
我更新了输入字段代码。将表单标记放在foreach语句中,以便每个学生都有自己的表单。
每个表单都需要一个隐藏字段来传递player_id。
<input type="hidden" name="player_id" value="<?php echo $row['player_id']; ?>">
在控制器中,验证POST数据并使用您传递的player_id:
$this->input->post('attendance_'. $this->input->post('player_id'))
或类似的
编辑2:
您也可以将<form>
标记放在foreach语句之外,然后我们需要遍历控制器中的所有POST数据。这允许您在整个表单上有一个提交按钮,但确实使您的后端工作更复杂。