Итак, у меня есть эта форма:
<?php echo flash_message_success('status_msg'); ?>
<?php echo form_open('students/mark_attendance/'.$session.'/'.$term.'/'.$class_id); ?>
<input type="checkbox" id="toggle_all" data-toggle="toggle" data-on="All Present" data-off="All Absent" data-onstyle="success" data-offstyle="danger" />
<?php
$i = 0;
foreach ($students as $s) {
$student_id = $s->id; ?>
<input type="hidden" name="student_id[]" value="<?php echo $student_id; ?>" />
<input class="bulk_select_present" type="radio" name="status[<?php echo $i; ?>]" value="Present" />Present
<input class="bulk_select_absent" type="radio" name="status[<?php echo $i; ?>]" value="Absent" />Absent
<input type="date" class="form-control" name="date" value="<?php echo set_value('date'); ?>" required />
<button class="btn btn-success" type="submit">Mark Attendance</button>
<?php echo form_close() //mark_attendance ?>
И эта функция обрабатывает мою форму:
public function attendance($session, $term, $slug) {
$class_details = $this->common_model->get_class_details_by_slug(school_id, $slug);
$page_title = 'Attendance: ' . $class_details->class;
$this->admin_header($page_title, $page_title);
$data['session'] = $session;
$data['term'] = $term;
$data['class_id'] = $class_details->id;
$data['slug'] = $slug;
$data['students'] = $this->common_model->get_students_list_by_class($class_details->id);
$this->load->view('admin/students/attendance', $data);
$this->admin_footer();
}
public function mark_attendance($session, $term, $class_id) {
$this->form_validation->set_rules('date', 'Date', 'trim|required');
$this->form_validation->set_rules('student_id[]', 'Student ID', 'trim');
$student_id = $this->input->post('student_id', TRUE);
$status = $this->input->post('status', TRUE);
$date = $this->input->post('date', TRUE);
$slug = $this->common_model->get_class_details($class_id)->slug;
if ($this->form_validation->run()) {
for ($i = 0; $i < count($student_id); $i++) {
$d_id = $student_id[$i];
$d_status = $status[$i];
//check if student was marked absent or absent
if ($d_status == 'Present') {
$this->students_model->mark_student_present($session, $term, $class_id, $d_id);
} else {
$this->students_model->mark_student_absent($session, $term, $class_id, $d_id);
}
}
$this->session->set_flashdata('status_msg', "Attendance marked successfully");
redirect('students/attendance/'.$session.'/'.$term.'/'.$slug);
} else {
$this->attendance($session, $term, $slug); //reload page with validation errors
}
}
Проблема в том, что данные не будут отправлены вбаза данных (моя модель работает нормально, я проверил ее).Некоторые проверки показали, что $student_id
не анализируется как массив (я попытался проверить с помощью функции is_array, и она вернула false).У меня нет объяснения этому поведению, я сделал аналогичную реализацию в другом модуле, и она отлично работает.Я практически вывернул функцию наизнанку, но проблема сохраняется.Интересно, что я делаю не так?Буду признателен, если кто-нибудь укажет мне правильное направление.
Примечание. Выше приведен упрощенный вариант кода, я удалил то, что, по моему мнению, не нужно для этого вопроса.