2015-10-12 3 views
3

У меня есть две таблицы, первая таблица - это название темы, а вторая таблица - подтемы. Я хочу показать имя первой таблицы, затем выполнить поиск соответствующей подтемы и показать ее в поле зрения и так далее до тех пор, пока имена тем не будут найдены в первой таблице. Но проблема в том, что я могу получить только одну таблицу данных, т. Е. Таблицу основных тем. Я не знаю, как получить полные данные из обеих таблиц и использовать их.Как использовать данные двух таблиц в представлении Codeigniter

Структура базы данных:

enter image description here

Модель:

<?php 

    class Topics_Model extends CI_Model { 

    function __construct() 
     { 
       parent::__construct(); 
     } 

    function get_all_topics() 
    { 
     $this->load->database(); 
     $this->db->select("*"); 
     $this->db->from("topics"); 
     $query=$this->db->get(); 
     return $query->result(); 
    } 
    } 

>

Контроллер:

<?php 

class drag_drop_course_material extends CI_Controller { 

    function drag_drop_course_material() 
    { 
    parent::__construct(); 
    } 

    function index() 
    { 
    $this->load->model('topics_model'); 
    $data['query']=$this->topics_model->get_all_topics(); 
    $this->load->helper('url'); 
    $this->load->view('drag_drop_course_material', $data); 
    } 
} 

?> 

Вид:

<?php 
    foreach ($query as $row) { 
?> 
    <li> $row->topic_name </li> 
<? } ?> 

Обязательный выход:

enter image description here

+1

темы Foreach, получить подразделов, хранить в массиве и петли в поле зрения. –

+0

Вы пробовали 'mysql join' ?? –

+0

Я думаю, что это невозможно сделать, присоединившись. – user3653474

ответ

0

Ваш контроллер идеально подходит, ваша модель идеально подходит просто изменить вид:

Ввиду:

 foreach ($query as $row) 
     { ?> 
     <ul> 
      <li><?php echo $row['topic_name'];?> 
      <ul> 
      <?php $this->db->where('sub_topic_id',$row['id']) 
      $r = $this->db->get('subtopics'); 
      if($r->num_rows()>0) 
      { 
       foreach ($r -> result_array() as $row) { 
       $data1[] = $row; 
       } 
      } 
      foreach($data1 as $sub){?> 
      //print <li><?php echo $sub['subtopic_name']?></li> 
      <? }?> 
      </ul> 
     </li> 
     <? }?> 
     </ul> 
1

Попробуйте этот запрос. Мы оставим соединение обеих таблиц.

$CI->db->select('*'); 
$CI->db->from('topic'); 
$CI->db->join('sub-topics', 'topic.id = sub-topics.sub_topic_id', 'left'); 
$query = $CI->db->get(); 
$result = $query->result(); 

Вы получите результат в своей модели. вернуть этот результат из модели и получить доступ к нему в контроллере. После того, как вы напечатаете результат возврата в контроллере, вы получите представление о том, как это сделать, потому что вы уже сделали это выше.

+0

Как мы можем получить к нему доступ ... – user3653474

+0

@ user3653474 Пожалуйста, проверьте, что я отредактировал ответ. – sandeepsure

+0

он хочет отобразить все подтемы по основным темам, поэтому нам не следует использовать join ... –

Смежные вопросы