我正在尝试在我的视图中显示不同div中的查询结果,我花了一天时间阅读ellislab如果我正确理解result()函数返回一个对象,如何显示结果,这是我的模特:
模型
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语句来保存返回到数据数组中的所有参数,但由于某些原因,这看起来非常低效。
我希望你有更好的解决方案。
答案 0 :(得分:1)
如何将其更改为
<?php
$i=1;
foreach ($results as $res) {
echo '<div id="'.$i++.'">'.$res.'</div>';
}
?>
答案 1 :(得分:1)
foreach部分不正确。你必须分开php / html代码。
也许你可以在你看来尝试这样的事情:
<?php foreach ($results as $key => $res) {
echo '<div id="'.$key.'">'.implode(' ', $res).'</div>';
}
?>
答案 2 :(得分: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
是结果对象的集合,所以当你在控制器中循环它们时(就像问题中的例子) - 你没有得到对象的“集合”视图。通过视图循环,您可以管理这些结果的集合(以及显示)。