我有这个测验应用程序正在使用codeigniter框架,但是在检查所选答案与正确答案时遇到问题。问题从数据库填充,数据库如下:
id | questions | opt1 | opt2 | opt3 | opt4 | correctAns
请给出这种结构,我如何能够再次检查正确的答案,以便在测验结束时给候选人打分,并向他们展示他们得到的正确和错误的问题。 我的问题控制器中有一个displayQuestions():
public function displayQuestions()
{
$this->load->model('questions_model');
$classLevel = $this->input->post('class_level');
$subject = $this->input->post('subject');
$result = $this->questions_model->selectQuestions($classLevel, $subject);
if ($result == false) {
redirect('users/home');
}
$data['questions'] = $result;
// $this->load->view('layouts/header');
$this->load->view('users/questions', $data);
// $this->load->view('layouts/sidebar');
// $this->load->view('layouts/footer');
}
我的Questions_model中的selectQuestions():
public function selectQuestions($classLevel, $subject)
{
$query = $this->db
->where('class_level', $classLevel)
->where('subj_code', $subject)
->get('questions');
if ($query->num_rows() > 0) {
return $query->result();
}
return false;
}
这就是我在视图中显示它的方式:
<div id="questions">
<?php
// declare counter
$i = 1;
// array to hold correct answer
$correctAns = [];
?>
<form method="POST" action="result/check">
<fieldset>
<legend>
<h2>Answer the following questions</h2>
</legend>
<ol class="question">
<?php foreach ($questions as $question): ?>
<?php if ($i <= 5): ?>
<li><?php echo $question->ques; ?> </li>
<ol type="A">
<li><input type="radio" name="option" value="<?php echo $question->ansOpt1 ?>"><?php echo $question->ansOpt1 ?></li>
<li><input type="radio" name="option" value="<?php echo $question->ansOpt2 ?>"><?php echo $question->ansOpt2 ?></li>
<li><input type="radio" name="option" value="<?php echo $question->ansOpt3 ?>"><?php echo $question->ansOpt3 ?></li>
<li><input type="radio" name="option" value="<?php echo $question->ansOpt4 ?>"><?php echo $question->ansOpt4 ?></li>
</ol>
<?php endif ?>
<!-- increase $i -->
<?php $i++; ?>
<?php endforeach ?>
</ol>
<input type="hidden" name="correct_ans">
</fieldset>
</form>
</div>
答案 0 :(得分:0)
提供的代码中没有实际检查正确答案的功能。您需要在表单验证规则中使用回调。
CodeIgniter Form Validation Callbacks
在您的控制器中:
private function verify_answer($q, $a) {
$sql = "SELECT id FROM table WHERE id = ? AND correctAns = ?";
$query = $this->db->query($sql, array($q, $a);
if ($query->num_rows() > 0) {
return TRUE;
} else {
return FALSE;
}
然后,您需要创建一个正确和/或错误答案的数组,具体取决于您希望如何处理输出,具体取决于是返回true还是false值。也许你把它们存储为一个关联数组,问题编号作为键,并循环通过那个和测验结束。
这绝不是最有效的方法。只是“一种方式”。
答案 1 :(得分:0)
超文本传输协议(HTTP)是Web浏览器和网站之间的通信协议,数据以明文形式显示。 选择一个: 真实正确 假