PHP在线考试设计

时间:2018-08-12 02:23:11

标签: php codeigniter-3

我在显示在线考试时遇到了麻烦。我正在使用CodeIgniter。

我正在创建一个在线考试应用程序。

在管理员方面,我将创建一个考试。在每次考试中,我都会选择要包括的模块/部分。

enter image description here

从屏幕截图中,我选择了该考试的两个模块。顺序栏是考试模块的显示顺序。

应试者将:

  • 参加考试
  • 采用第一个模块,然后,
  • 第二个模块。

在查询中,我将选择考试以及与之关联的模块。它已经在工作了。

代码

  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);

  }

代码只需选择考试的所有模块,并将其存储在数组中即可。然后,我将获得第一个元素,然后显示该模块的问题。然后是下一个模块,整个过程重复进行。

现在这对我来说是个挑战,比方说我已经选择了第一个模块,(考生已经完成了第一个模块。)如何选择下一个模块?因为如果我调用控制器,它将再次调用所有模块。

问题

  

如何按顺序显示模块,以及如何检测是否已使用模块。

0 个答案:

没有答案