如何用codeigniter的MVC原理显示这个联合表中的数据。

时间:2012-04-26 08:28:38

标签: database codeigniter view model controller

我在帖子中看到了这个答案,该帖子旨在发布来自特定set_id的数据库数据及其以下问题和答案。我觉得很难将它转换成必须分离成模型 - 控制器 - 视图的codeigniter原理。我需要一些帮助

它有3个表,并提出了这个代码:

<?php
$this->db->select('s.id as set, s.name as name, q.id as qid, q.question as qu, a.id as aid, a.answer as an, a.points as p')
     ->from('sets s')
     ->join('questions q', 'q.set_id = s.id')
     ->join('answers a', 's.set_id = s.id')
     ->where('s.id', 'SET ID');

$questions = $this->db->get();
$set = array('questions' => array());

foreach($questions as $s){
  $set['id'] = $s->set;
  $set['name'] = $s->name;
  $set['questions'][$s->qid]['id'] = $q->qid;
  $set['questions'][$s->qid]['question'] = $q->qu;
  if(!isset($set['questions'][$s->qid]['answers']))
    $set['questions'][$s->qid]['answers'] = array();
  $set['questions'][$s->qid]['answers'][] = array(
    'id' => $q->aid,
    'answer' => $q->an',
    'points' => $q->p
  );
}

echo '<h2>'.$set['name'].'</h2>';
foreach($set['questions'] as $q){
  echo '<div class="question">';
  echo '<h3>'.$q['question'].'</h3>';
  echo '<div class="answers">';
  foreach($q['answers'] as $a){
    echo '<label for="a'.$a['id'].'">'.$a['answer'].'<input type="checkbox         value="'.$a['id'].'" name="q'.$q['id'].'" /></label><br />';
  }
  echo '</div>';
  echo '</div>';
}

2 个答案:

答案 0 :(得分:0)

一旦你习惯了MVC模式很简单。模型组件基本上处理数据库查询。您可以为不同的查询编写简单的函数,并将它们放在模型类下。 Controller基本上提取模型数据并提交给View组件。 在控制器内部,您将定义逻辑如何以及将数据放入不同的View类的位置。以下链接是一个检查的好地方。

http://kyokasuigetsu25.wordpress.com/2012/01/06/codeigniter-beginner-tutorial-3-playing-with-the-database/

答案 1 :(得分:0)

在此说明中存在问题

$set = $questions->result_array();