CodeIgniter(CI 3.0)分頁類實踐記錄

最近在學習B/S,選擇了PHP CI框架做爲切入點。php

在嘗試製做我的CMS的時候遇到了須要分頁的狀況,網上好像搜不到3.0版本以上的例子,下面附上本地實驗的代碼,供參考。數據庫

 

數據庫狀況以下:框架

 

首先看Controllerpost

 

<?php
/**
 * Created by PhpStorm.
 * User: erdao
 * Date: 16-1-11
 * Time: 下午10:25
 */

class P extends CI_Controller
{

    /**
     * P constructor.
     */
    public function __construct()
    {
        parent::__construct();
        $this->load->model('article_model','article');
        $this->load->library('pagination');
    }

    /**
     * @param int $page 可看作offset
     */
    public function index($page=0)
    {
        //每頁顯示三條數據
        $limit['num']=3;
        $limit['offset']=$page;

        $config['base_url']=site_url('p/index');
        $config['total_rows']=$this->article->get_articles_num();//數據總條數
        $config['per_page']=$limit['num'];//每頁顯示條數

        $this->pagination->initialize($config);

        $data=array(
            'articles'=>$this->article->get_limit_articles($limit)
        );

        $this->load->view('page_ex',$data);
    }
}

 

再來Model學習

<?php
/**
 * Created by PhpStorm.
 * User: erdao
 * Date: 16-1-12
 * Time: 下午9:48
 */

class Article_model extends CI_Model
{

    /**
     * Article_model constructor.
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * 獲取所有數據
     * @return mixed
     */
    public function get_all_articles()
    {
        $this->db->from('my_article');
        $this->db->order_by('posttime', 'DESC');
        $query=$this->db->get();
        return $query->result_array();
    }

    /**
     * 獲取表內數據數量
     * @return mixed
     */
    public function get_articles_num()
    {
        return $this->db->count_all('my_article');
    }

    /**
     * 獲取有限個數的數據
     * @param array $arr
     * @return mixed
     */
    public function get_limit_articles($arr=array('num'=>FALSE,'offset'=>FALSE))
    {
        if(isset($arr['num']) and isset($arr['offset']) and ($arr['num']!==FALSE) and ($arr['offset']!==FALSE))
        {
            $query=$this->db->get('my_article',$arr['num'],$arr['offset']);
            return $query->result_array();
        }
        else
        {
            return $this->get_all_articles();
        }
    }
}

 

最後是viewthis

<?php
foreach($articles as $item)
{
    echo $item['title'];
}

echo $this->pagination->create_links();

 

 

附上運行效果截圖url

 

須要注意的是,index/9  這裏面的9能夠看作是數據庫中的索引(index),而不是頁數spa

 

 

我的博客:http://www.dingshuo89.topcode

相關文章
相關標籤/搜索