Codeigniter的CRUD问题

时间:2010-04-24 21:32:55

标签: php codeigniter

我有一个包含博客条目的数据库。我试图实现的所需输出是使用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个不同的查询,但不知道如何分隔所有的帖子显示。此外,一个查询总是覆盖第二个查询,并生成所有分割或所有字符限制的段落。

我迷失在这里哈哈。感谢

1 个答案:

答案 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);