尝试让我的控制器从两个查询返回数据,然后显示它们以供查看。第一个查询的结果为一个记录,即练习,第二个查询的结果为多个记录,即问题。
我的看法既不加载练习的段落,也不加载练习的问题。
运动控制器:
public function exquestdisplay()
{
$this->load->model('Exercise_model');
$data['exquest'] = $this->Exercise_model->get_ex_quest();
$this->load->view('readeralter/header');
$this->load->view('readeralter/menu_2');
$this->load->view('readeralter/dashboard_view');
$this->load->view('readeralter/play_quiz', $data);
$this->load->view('readeralter/footer');
}
锻炼模型:
function get_ex_quest(){
//get exercise's paragraphs
$this->db->select("exercise_id, exercise_difficulty, exercise_title, exercise_par1, exercise_par2, exercise_par3, exercise_par4, exercise_par5, exercise_par6");
$this->db->from("exercises");
$this->db->where("exercise_id","1");
$query1 = $this->db->get();
//get exercise's questions
$this->db->select("question_id, question_title, question_choice1, question_choice2, question_choice3, question_answer");
$this->db->from("questions");
$this->db->where("question_exercise_id","1");
$query2 = $this->db->get();
if ($query1->num_rows() < 1 && $query2->num_rows() < 1) {
echo "There is no data in the database";
exit();
}
elseif($query1->num_rows() == 1 && $query2->num_rows() < 1){
echo "There is no data in the database";
exit();
}
else {
$paragraphs = $query1->row();
$questions = $query2->result();
return array($paragraphs, $questions);
}
}
锻炼视图:
<p><b><?=$row->exercise_id?>.<?=$row->exercise_difficulty?>.<?=$row->exercise_title?></b></p>
<p><?=$row->exercise_par1?></p>
<p><?=$row->exercise_par2?></p>
<p><?=$row->exercise_par3?></p>
<p><?=$row->exercise_par4?></p>
<p><?=$row->exercise_par5?></p>
<p><?=$row->exercise_par6?></p>
<?php } ?>
<?php foreach($exquest['questions'] as $row) { ?>
<?php $ans_array = array($row->question_choice1, $row->question_choice2, $row->question_choice3, $row->question_answer);?>
<p><b><?=$row->question_id?>.<?=$row->question_title?></b></p>
<input type="radio" name="ex_id<?=$row->question_id?>" value="<?=$ans_array[0]?>" required> <?=$ans_array[0]?>
<input type="radio" name="ex_id<?=$row->question_id?>" value="<?=$ans_array[1]?>"> <?=$ans_array[1]?>
<input type="radio" name="ex_id<?=$row->question_id?>" value="<?=$ans_array[2]?>"> <?=$ans_array[2]?>
<input type="radio" name="ex_id<?=$row->question_id?>" value="<?=$ans_array[3]?>"> <?=$ans_array[3]?><br>
<?php } ?>
答案 0 :(得分:0)
我看到的问题,一旦解决,该问题将有所帮助:
select方法接受以逗号分隔的字段名称字符串,而不是看起来像数组元素的字符串。
所以,不要这样做:
$this->db->select('a','b','c');
您应该这样做:
$this->db->select('a, b, c');
然后,where方法也未正确使用。它应该接受两个参数。
所以您的用法如下:
$this->db->where('a = 1');
您应该简单地这样做:
$this->db->where('a', 1);
您可能还有其他问题,但是我看到的另一个问题是,在您看来,您的数据应该可以作为查询对象$exquest['paragraphs']
和$exquest['questions']
来使用,但是它们不能立即使用,因为您从未应用{ {1}}或->result()
。通常,在执行查询时,您将需要检查是否有结果,因此请回到模型中,执行以下操作:
->row()
或者如果您只期望一行:
$query = $this->db->get();
if( $query->num_rows() > 0 ){
// you can use the result
$results = $query->result();
}
这些信息应该可以帮助您正常工作。
答案 1 :(得分:0)
也许您应该在模型中尝试一下:
$query1 = $this->db->select('...')->from('...')->where('...')->get();
$query2 = $this->db->select('...')->from('...')->where('...')->get();