我在显示在线考试时遇到了麻烦。我正在使用CodeIgniter。
我正在创建一个在线考试应用程序。
在管理员方面,我将创建一个考试。在每次考试中,我都会选择要包括的模块/部分。
从屏幕截图中,我选择了该考试的两个模块。顺序栏是考试模块的显示顺序。
应试者将:
在查询中,我将选择考试以及与之关联的模块。它已经在工作了。
代码
public function take_exam()
{
$modules_array = [];
$questions_array = [];
$this->load->model('exam/exams/ExamsModel');
$this->result = $this->ExamsModel->fetch_exam_modules();
foreach ($this->result as $key => $value) {
$modules_array[] = $value['module_id'];
}
$this->session->set_userdata('exam_modules', $modules_array);
$exam_questions = $this->ExamsModel->fetch_exam_module_questions($this->session->userdata('exam_modules')[0]);
foreach ($exam_questions as $key => $value) {
if (!isset($questions_array[$value['question_id']])) {
$questions_array[$value['question_id']]['choices'] = [];
$questions_array[$value['question_id']]['question_description'] = $value['question_description'];
}
$questions_array[$value['question_id']]['choices'][] = $value['question_choices_description'];
}
echo '<pre>';
print_r($questions_array);
echo '</pre>';
$data['title'] = 'Managerial Exam';
$data['main_view'] = 'applicant/applicant-exam/exam-template';
// $this->load->view('index-applicant', $data);
}
代码只需选择考试的所有模块,并将其存储在数组中即可。然后,我将获得第一个元素,然后显示该模块的问题。然后是下一个模块,整个过程重复进行。
现在这对我来说是个挑战,比方说我已经选择了第一个模块,(考生已经完成了第一个模块。)如何选择下一个模块?因为如果我调用控制器,它将再次调用所有模块。
问题
如何按顺序显示模块,以及如何检测是否已使用模块。