基于年份在归档博客上创建分页

时间:2013-07-28 14:45:07

标签: mysql codeigniter pagination blogs archive

我需要在我的简单博客网站上为我的存档页面创建分页,使用codeigniter从头开始构建。

我的帖子表是这样的:

id_post | title content | post_date | id_user

我已成功创建基于monthyear的存档列表

结构是这样的:

2012年10月

  • title - content
  • title - content

2012年11月

  • title - content

2012年12月

  • title - content

2013年1月

  • title - content

2013年2月

  • title - content

但我需要在年份上显示存档,所以它必须是这样的:

2012年1月

  • title - content

2012年2月

  • 标题 - 内容 2012年3月

  • 标题 - 内容

2012年4月

  • title - content

2012年5月

  • title - content

2012年6月

  • title - content

,下一页是2013年,2014年,2015年..

到目前为止,这是我用于测试结果数据的控制器和模型:

控制器:

    $this->load->model('model_test');

    $arsip = $this->model_test->get_all();

    //print_r($arsip);
    foreach ($arsip as $time_period => $news_items)
    {
        //display bulan tahun atau display period yang udah di tentuin di model
        echo '<div class="date">' . $time_period . '</div>';
        echo '<ul class="press">';

        //print_r($news_items);

        //display looping judul, content
        foreach ($news_items as $item)
        {
            echo '<li>';
            echo $item->title.' - '.$item->content;
            echo '</li>';
        }

        echo '</ul>';
        echo '</div>';
    }

模型:

function get_all()
{
    $this->db->select('
        id_post,
        title,
        content,
        post_date,
    ');
    $this->db->from('posts');
    $this->db->order_by('YEAR(post_date), MONTH(post_date)', 'asc');

    $hasil = $this->db->get();
    if( $hasil->num_rows() > 0)
    {
        $news_array = array();
        foreach($hasil->result() as $arsip){

            $time_period = date("F Y", strtotime($arsip->post_date));
            if (!isset($news_array[$time_period]))
            {
              // buat sub array kalo butuh
              $news_array[$time_period] = array();
            }
            $news_array[$time_period][] = $arsip;
        }
        return $news_array;
    }
}

任何想法如何创建一年的分页基础?请..

问候。

1 个答案:

答案 0 :(得分:0)

您应该向模型发送一个year参数,并通过YEAR在sql上添加where条件。您可以从输入获得year

您的控制器;

$this->load->model('model_test');
$year = $this->input->get('year');
$arsip = $this->model_test->get_all($year);
...

您的模型;

 function get_all($year = null){
    $this->db->select('id_post,title,content,post_date');
    $this->db->from('posts');
    if (null !== $year){
        $this->db->where('YEAR(date(post_date))', $year)
    }

    $this->db->order_by('YEAR(post_date), MONTH(post_date)', 'asc');

    $hasil = $this->db->get();
    if( $hasil->num_rows() > 0)
    {
        $news_array = array();
        foreach($hasil->result() as $arsip){

            $time_period = date("F Y", strtotime($arsip->post_date));
            if (!isset($news_array[$time_period]))
            {
             // buat sub array kalo butuh
             $news_array[$time_period] = array();
            }
           $news_array[$time_period][] = $arsip;
        }
       return $news_array;
     }
 }

您的视图;

<ul>
  <li><a href="?year=2013">2013</a></li>
  <li><a href="?year=2014">2015</a></li>
  <li><a href="?year=2015">2015</a></li>
  <li><a href="?year=2016">2016</a></li>
  <li><a href="?year=2017">2017</a></li>
</ul>