0

クエリの結果をさまざまなdivのビューに表示しようとしていますが、result()関数がオブジェクトを返すことを正しく理解している場合、結果を表示する方法をellislabで読んでいます。これが私のモデルです。

モデル

function get_post(){
    $this->db->select(*);
    $this->db->order_by('date_time', 'desc');
    $this->db->limit(2);
    $results = $this->db->get('post');

    if($results->num_rows()<1){
          return false;
    }
    else{
          return $results->result();
    }
}

そして、これは私のコントローラーが行うことです:

コントローラ

foreach($results as $res){
    $data['post_signature']     =  $res->signature;
    $data['post_title']         =  $res->title;
    $data['post_article']       =  $res->article;
    $data['post_date']          =  date('d-M-Y', strtotime($res->date_time));
    $data['post_time']      =  date('H:i', strtotime($res->date_time));
}

私の見解で示したいのは、あるdivでの一連の結果と、別のdivでの2番目の結果です。

<div id="1">First Result</div>
<div id="2">Second Result</div>

私がやろうとしたのは、クエリ結果全体をビューに渡し、次のようにforeachを使用することでした。

<?php foreach ($results as $res)
     <div id="1">First Result</div>
     <div id="2">Second Result</div>
?>

明らかに、このアプローチの問題は、このforeachが両方のdivを複製するだけであり、最初の結果を最初のdivに、2番目の結果を2番目のdivに配置したいということです。また、foreachをコントローラーに変更し、forステートメントを使用して、返されたすべてのパラメーターをデータ配列に保存することも考えましたが、いくつかの理由で、これは非常に非効率的です。

より良い解決策があることを願っています。

4

3 に答える 3

1

に変えてみてはどうでしょうか

<?php
  $i=1;
  foreach ($results as $res) {
     echo '<div id="'.$i++.'">'.$res.'</div>';
  }
?>
于 2013-01-14T22:33:33.633 に答える
1

$resultsオブジェクトをビューに渡し、そこで a を使用する必要foreachがあります。

// in your view (assuming you passed the $results as-is
<?php
foreach ($results as $res)
{
    echo '<div id="' . $res->id . '">';
    echo $res->title . '<br />';
    echo 'Posted ' . date('d-M-Y', strtotime($res->date_time)) . ' ';
    echo 'at ' . date('H:i', strtotime($res->date_time)) . '<br />';
    echo '<p>' . $res->article . '</p>';
    echo '</div>'; 
}
/**
you'll get something like the following
<div id="1">
    My Title<br />
    Posted 14 Jan 2012 at 16:40<br />
    <p>Lorem ipsum dolor sit amet.</p>
</div>
<div id="2">
    Another Title<br />
    Posted 14 Jan 2012 at 16:45<br />
    <p>Lorem ipsum dolor sit amet also.</p>
</div>
*/

これ$resultsは結果オブジェクトのコレクションであるため、コントローラーでそれらをループすると(質問の例のように)、ビュー内のオブジェクトの「コレクション」が取得されません。ビューをループすると、これらの結果のコレクション (および表示) を管理できます。

于 2013-01-14T22:36:49.430 に答える
1

foreach の部分が正しくありません。php/html コードを分離する必要があります。

たぶん、あなたのビューでこのようなことを試すことができます:

<?php foreach ($results as $key => $res) {
     echo '<div id="'.$key.'">'.implode(' ', $res).'</div>';
}
?>
于 2013-01-14T22:35:37.127 に答える