2012-12-07 112 views
0

我想與Codeigniter建立一個論壇。傳遞多個查詢與codeigniter查看

到目前爲止,我基於創建動態新聞教程,自己顯示論壇並顯示線程。

但是,這是2個不同的網頁,我需要他們顯然將顯示一個頁面,如下所示:

Forum 1 
- thread 1 
- thread 2 
- thread 3 
Forum 2 
- thread 1 
- thread 2 
etc. 

然後下一步顯然是要顯示在一個線程所有的職位。最有可能的一些分頁正在進行。但那是爲了以後。

現在我有論壇控制器(精簡版):

<?php 
class Forum extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->model('forum_model'); 
     $this->lang->load('forum'); 
     $this->lang->load('dutch'); 
    } 

    public function index() 
    { 
     $data['forums'] = $this->forum_model->get_forums(); 

     $data['title'] = $this->lang->line('title'); 
     $data['view'] = $this->lang->line('view'); 

     $this->load->view('templates/header', $data); 
     $this->load->view('forum/index', $data); 
     $this->load->view('templates/footer'); 
    } 

    public function view($slug) 
    { 
     $data['forum_item'] = $this->forum_model->get_forums($slug); 

     if (empty($data['forum_item'])) 
     { 
      show_404(); 
     } 

     $data['title'] = $data['forum_item']['title']; 

     $this->load->view('templates/header', $data); 
     $this->load->view('forum/view', $data); 
     $this->load->view('templates/footer'); 
    } 

} 
?> 

而且forum_model(也瘦身)

<?php 
class Forum_model extends CI_Model { 

    public function __construct() 
    { 
     $this->load->database(); 
    } 

    public function get_forums($slug = FALSE) 
    { 
     if ($slug === FALSE) 
     { 
      $query= $this->db->get('forum'); 
      return $query->result_array(); 
     } 

     $query = $this->db->get_where('forum', array('slug' => $slug)); 
     return $query->row_array(); 
    } 

     public function get_threads($forumid, $limit, $offset) 
    { 
      $query = $this->db->get_where('thread', array('forumid', $forumid), $limit, $offset); 
      return $query->result_array(); 
    } 


} 
?> 

和視圖文件現在

<?php foreach ($forums as $forum_item): ?> 

    <h2><?=$forum_item['title']?></h2> 
    <div id="main"> 
     <?=$forum_item['description']?> 
    </div> 
    <p><a href="forum/<?php echo $forum_item['slug'] ?>"><?=$view?></a></p> 

<?php endforeach ?> 

最後一個,我想有這樣的事情:

<?php foreach ($forums as $forum_item): ?> 

    <h2><?=$forum_item['title']?></h2> 
    <div id="main"> 
     <?=$forum_item['description']?> 
    </div> 
    <?php foreach ($threads as $thread_item): ?> 

    <h2><?php echo $thread_item['title'] ?></h2> 
    <p><a href="thread/<?php echo $thread_item['slug'] ?>"><?=$view?></a></p> 

    <?php endforeach ?> 

<?php endforeach ?> 

但問題是,如何讓模型返回到視圖的雙重查詢,以便它包含論壇和每個論壇內的線程。

我試圖讓在get_forum功能foreach循環,但是當我這樣做:

public function get_forums($slug = FALSE) 
    { 
     if ($slug === FALSE) 
     { 
      $query= $this->db->get('forum'); 
      foreach ($query->row_array() as $forum_item) 
      { 
       $thread_query=$this->get_threads($forum_item->forumid, 50, 0); 
      } 
      return $query->result_array(); 
     } 

     $query = $this->db->get_where('forum', array('slug' => $slug)); 
     return $query->row_array(); 
    } 

我得到的錯誤

A PHP Error was encountered 

Severity: Notice 

Message: Trying to get property of non-object 

Filename: models/forum_model.php 

Line Number: 16 

我希望任何人有一些好的建議,謝謝!

萊尼

*編輯* **

感謝您的反饋意見。

我一直百思不得其解,這似乎現在的工作:)

$query= $this->db->get('forum'); 
     foreach ($query->result() as $forum_item) 
     { 
      $forum[$forum_item->forumid]['title']=$forum_item->title; 
      $thread_query=$this->db->get_where('thread', array('forumid' => $forum_item->forumid), 20, 0); 
      foreach ($thread_query->result() as $thread_item) 
      { 
       $forum[$forum_item->forumid]['thread'][]=$thread_item->title; 
      } 
     } 
     return $forum; 
    } 

現在什麼是未來,是如何在視圖中顯示該多維數組,用foreach語句....

有什麼建議麼 ?

感謝

+0

在forum_model的第16行上顯示您的代碼。 –

+0

該行是:$ thread_query = $ this-> get_threads($ forum_item-> forumid,50,0); – LvS

+0

我認爲問題在於其他功能的調用,可能做得不正確。不管怎麼說,多謝拉。這個問題現在已經解決了。 – LvS

回答

0

您使用row_array()因此你的錯誤,改變你的get_forums()到:

$thread_query=$this->get_threads($forum_item['forumid'], 50, 0); 

但我相信你實際上應該使用result_array()因爲你希望所有論壇的列表。