2017-02-27 90 views
0

我目前使用下面的代碼從我的數據庫加載新聞公告。用Code Igniter顯示MySql數據庫的幾個結果

  <?php 
      $query = $this->db->query("SELECT * FROM news"); 
      foreach ($query->result() as $row) 
      { 
       if($row->active == 1) 
       { 
        echo "<p>".$row->content."</p>"; 
       } 
      } 
     ?> 

但是,我在CodeIgniter中的模板文件中使用了這段代碼。有沒有更好的方法讓我做到這一點,以便將代碼分成模型和控制器文件,因爲它應該是?

我在CodeIgniter文檔網站上找到了文檔,它告訴我要做到以上幾點,但我真的想堅持框架的設計方式。

+0

爲什麼在模型/控制器不能做到這一點,並暴露數據到視圖? –

+0

與此相關的問題是,我對Code Igniter非常陌生,所以我不完全確定如何執行此操作。 –

+0

@Nikolas Shaffer,請在 –

回答

0

自從我做了CodeIgniter已經很長時間了,但這裏有一些東西。

控制器

你會在你的控制器,它可以讓您發送$data到特定視圖下面的代碼。

$query = $this->db->query("SELECT * FROM news"); 
$data = array(); 
foreach ($query->result() as $row) 
    { 
    if($row->active == 1) 
     { 
     array_push($data, $row); 
     } 
    } 
$this->load->view('your_view', $data); 

查看在您看來

然後,稱這是your_view.php,你必須訪問$data的循環通過。

<?php foreach($data as $row) { ?> 
    <p> <?php $row->content ?> </p> 
<?php } ?> 
+1

以下檢查我的回答.OP想分開數據庫調用,邏輯和輸出。這個答案只是演示了MVC的VC。 :) – Joe

+0

那麼,如果他正在閱讀本文,那麼我可以說,他應該檢查你的答案。 :) –

0

查詢後是否有原因使用IF語句?

型號

public function get_news() { 
    $query = $this->db->query("SELECT * FROM news WHERE active = 1"); 
    if ($query->num_rows() > 0) { // Only return if there is data 
     foreach($query->result() AS $row) { 
      $array[] = get_object_vars($row); // Just dump the values into an array 
     } 
     return $array; 
    } 
} 

控制器

public function index() { 
    $this->load->model('MODEL_NAME'); // Load the model that access the database 
    $data['news'] = $this->MODEL_NAME->get_news(); // Assign the results of the function to the "news" index 
    $this->load->view('view_page', $data); // Profit 
} 

查看

<?php 
    foreach($news AS $row) { 
     echo '<p>' . $row['content'] . '</p>'; 
    } 
?> 
+0

我今天嘗試了這個解決方案,並做了一個「更好的」響應,然後我使用了來自Ali的這個解決方案,但這個問題仍令我困惑。對於查詢返回的每一行,我都會得到相應的錯誤,而不是正確顯示新聞。錯誤:嚴重性:通知 消息:試圖獲取非對象的屬性 –

+0

這是我的錯。該數組不作爲對象返回。相應地更新了視圖示例。 – Joe