0

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

我的帖子表是这样的:

id_post | title content | post_date | id_user

我已经成功创建了一个基于monthyear的存档列表

结构是这样的:

2012 年 10 月

  • 标题 - 内容
  • 标题 - 内容

2012 年 11 月

  • 标题 - 内容

2012 年 12 月

  • 标题 - 内容

2013 年 1 月

  • 标题 - 内容

2013年2月

  • 标题 - 内容

但我需要按年份显示档案库,所以它必须是这样的:

2012 年 1 月

  • 标题 - 内容

2012 年 2 月

  • 标题 - 内容 2012 年 3 月

  • 标题 - 内容

2012 年 4 月

  • 标题 - 内容

2012 年 5 月

  • 标题 - 内容

2012 年 6 月

  • 标题 - 内容

下一页是 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;
    }
}

知道如何按年创建分页基础吗?请..

问候。

4

1 回答 1

0

您应该向year模型发送一个参数,并在 sql 上按 YEAR 添加 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>
于 2019-11-13T08:09:25.420 回答