2017-02-27 14 views
0

現在、私のデータベースからニュースアナウンスを読み込むために、次のコードを使用しています。コードイグナイターを使用して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

これは、コードイグナイタの新機能であり、まだそれを行う方法が完全にわからないということです。 –

+0

@Nikolas Shaffer、私の答えを確認してください –

答えて

0

私はCodeIgniterを行って以来、長いことがありましたが、ここには何かあります。

コントローラ

は、あなたが特定のビューに$dataを送信することができます、あなたのコントローラに次のコードを持っているでしょう。 your_view.phpそれを呼び出す

$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); 

ビュービューで次に

、あなたはをループのため$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

私はこの解決策を今日試みて、 "より良い"応答を得たが、私はアリのものからやったが、まだこの問題は私を困惑させている。クエリが返す行ごとに、適切に表示されたニュースではなく対応するエラーが表示されます。エラー:重大度:通知 メッセージ:非オブジェクトのプロパティを取得しようとしています –

+0

それは私の悪いです。配列はオブジェクトとして返されません。ビューの例を適宜更新しました。 – Joe

関連する問題