首页 文章

将查询结果放在不同的div中

提问于
浏览
0

我'm trying to display query'的结果在我的视图中有不同的div,我花了一天时间阅读ellislab如果我正确理解result()函数返回一个对象如何显示结果,这是我的模型:

model

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();
    }
}

这就是我的控制器所做的:

controller

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中的第二个结果 .

<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中,第二个结果放在第二个div中 . 我还试图将foreach更改为控制器并使用for语句来保存返回到数据数组中的所有参数,但由于某些原因,这似乎非常低效 .

我希望你有更好的解决方案 .

3 回答

  • 1

    您应该将 $results 对象传递给视图并在那里使用 foreach

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

    这个想法是 $results 是结果对象的集合,所以当你在控制器中循环它们时(就像问题中的例子) - 你没有在视图中获得"collection"个对象 . 通过视图循环可以管理这些结果的集合(以及显示) .

  • 1

    如何改变它

    <?php
      $i=1;
      foreach ($results as $res) {
         echo '<div id="'.$i++.'">'.$res.'</div>';
      }
    ?>
    
  • 1

    foreach部分不正确 . 你必须分开php / html代码 .

    也许你可以在你的视图中尝试这样的事情:

    <?php foreach ($results as $key => $res) {
         echo '<div id="'.$key.'">'.implode(' ', $res).'</div>';
    }
    ?>
    

相关问题