我有一个包含博客条目的数据库。我试图实现的所需输出是使用css3多段显示的3个命令,然后使用codeigniter Character_limiter格式化另外3个(或更多)。所以我需要在同一页面上以3种方式格式化3种显示格式,另外3种格式化。
到目前为止,这就是我所拥有的,但我不知道如何格式化sql以实现我想要的。我可以按照我想要的降序调用所有帖子,但不知道如何分离代码以实现我的输出 控制器:
$this->db->order_by('id', 'DESC');
$this->db->limit('2');
$query = $this->db->get('posts');
if($query->result())
$data = array();
{
$data['blog'] = $query->result();
}
$data['title'] = 'LemonRose';
$data['content'] = 'home/home_content';
$this->load->view('template1', $data);
查看:
<?php if (isset($blog)): foreach ($blog as $row): ?>
<span class="title"><?php echo $row->title; ?> </span>
<?php echo $row->date; ?>
<div class="split"><?php echo $row->post =$this->typography->auto_typography($row->post); ?></div>
<?php echo 'Post #',$row->id; ?>
<p> Trackback URL: <? echo base_url()."trackbacks/track/$row->id";?></p>
<hr />
<?php endforeach;
endif;
?>
拆分类是多列。我尝试了2个不同的查询,但不知道如何分隔所有的帖子显示。此外,一个查询总是覆盖第二个查询,并生成所有分割或所有字符限制的段落。
我迷失在这里哈哈。感谢
答案 0 :(得分:1)
我需要在同一页面上格式化3种显示格式,3种格式化格式化。
这听起来像显示逻辑,这意味着它是您的视图的工作。您的控制器只需执行单个查询即可获取所有或部分条目(例如最近的10条)并将其传递给视图以决定如何显示数据。
在您的视图中,您可以在foreach()循环中使用条件逻辑来确定如何输出发布数据。
$limit = 3; // how many posts should we show in full?
$i = 1; // count
foreach ($blog as $row):
if( $i < $limit ) // we are under our limit
{
echo $row->post; // show full post
}
else // we are over our limit
{
echo $this->typography->auto_typography($row->post); // show truncated post
}
$i++; // increase count
endforeach;
unset($limit,$i,$row)
这意味着您的控制器可以将完整数据传递给任意数量的视图,每个视图都有自己的方式来显示数据,上面的视图可以由任何控制器调用,并忠实地显示以规定的方式传递给它的帖子
如果这不适合您,那么您可以使用array_walk()和辅助函数来操纵控制器或模型中的数据(或创建辅助函数):
// user function for array_walk
function truncate_post(&$value,$key,$limit)
{
if($key >= $limit)
{
$value->post = $this->typography->auto_typography($value->post);
}
}
$query = $this->db->get('posts', 10); // get 10 posts
$results = $query->result();
array_walk($results, 'truncate_post', 3); // truncate all but top 3 posts
$data['blog'] = $results;
$this->load->view('template1', $data);