如何使用php codeigniter将多行值添加到数据库中

时间:2017-03-28 09:04:19

标签: php codeigniter null radio-button time-and-attendance

我正在尝试使用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> 
    &emsp;
<label><input type="radio" name="attendance[<?php echo  $row['player_id']; ?>]" value="No">Absent</label>

                    </td> </tr>

                    <?php } ?>

                    <?php endforeach; ?>

                    </tr>
                    </tbody>
                    </table>

1 个答案:

答案 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数据。这允许您在整个表单上有一个提交按钮,但确实使您的后端工作更复杂。