0

この回答は、特定の set_id からのデータベース データを次の質問と回答とともに投稿することを目的とした投稿から見ました。コードイグナイターのモデル-コントローラー-ビューの原則に分離する必要があることを変換するのは難しいと思います。ここで助けが必要です

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>';
}
4

2 に答える 2

0

この命令には問題があります

$set = $questions->result_array();
于 2012-04-26T09:20:23.500 に答える
0

MVCのパターンは慣れれば簡単です。モデル コンポーネントは、基本的にデータベース クエリを処理します。さまざまなクエリに対して単純な関数を記述し、モデル クラスの下に配置できます。Controller は基本的にモデル データをプルし、View コンポーネントに渡します。コントローラー内で、データをさまざまな View クラスに配置する方法と場所のロジックを定義します。次のリンクは、チェックアウトするのに適した場所です。

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

于 2012-04-26T08:36:28.443 に答える