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

<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 语句将返回的所有参数保存到数据数组中,但由于某些原因,这似乎非常低效。

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

4

3 回答 3

1

怎么改成

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

foreach 部分不正确。您必须将 php/html 代码分开。

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

<?php foreach ($results as $key => $res) {
     echo '<div id="'.$key.'">'.implode(' ', $res).'</div>';
}
?>
于 2013-01-14T22:35:37.127 回答
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 . '<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 回答