Home >Backend Development >PHP Tutorial >Example of paging class that passed the test in codeigniter_PHP tutorial

Example of paging class that passed the test in codeigniter_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:32:13774browse

Universal paging class (tested with Codeigniter)

Example of paging class that passed the test in codeigniter_PHP tutorial

page_list.php

Copy code The code is as follows:

/**
* 分页类
*/
class Page_list {

/**
* 总数据
* @var int
*/
private $total;
/**
* 每页显示数据
* @var int
*/
private $size;
/**
* 当前页数
* @var int
*/
private $page;
/**
* 页数列表左右页数
* @var int
*/
private $len;

/**
* 总页数
* @var int
*/
private $page_total;
/**
* 页码列表
* @var array
*/
private $page_list;

/**
* 基准地址
* @var string
*/
private $base_url;
/**
* 替换标志
* @var string
*/
private $place;
/**
* 分页样式
* @var string
*/
private $style;


/**
* 构造函数
*
* @param array $config 配置数组
*/
public function __construct($config = array()){
// 初始化默认值
$this->total = 0;
        $this->size = 20;
        $this->page = 1;
        $this->len = 4;
        $this->page_total = 1;
        $this->page_list = array();
        $this->base_url = '?page=-page-';
        $this->place = '-page-';
        $this->style = $this->get_default_style();
        $this->initialize($config);
    }

    /**
     * 初始化分页
     *
     * @param array $config 配置数组
     */
    public function initialize($config = array()){
        // 取得配置值
        if(is_array($config)){
            if(array_key_exists('total', $config)) $this->total = @intval($config['total']);
            if(array_key_exists('size', $config)) $this->size = @intval($config['size']);
            if(array_key_exists('page', $config)) $this->page = @intval($config['page']);
            if(array_key_exists('len', $config)) $this->len = @intval($config['len']);
            if(array_key_exists('base_url', $config)) $this->base_url = @strval($config['base_url']);
            if(array_key_exists('place', $config)) $this->place = @strval($config['place']);
            if(array_key_exists('style', $config)) $this->style = @strval($config['style']);
        }
        // 修正值
        if($this->total<0) $this->total = 0;
        if($this->size<=0) $this->size = 20;
        if($this->page<=0) $this->page = 1;
        if($this->len<=0) $this->len = 4;
        // 执行分页算法
        $this->page_total = ceil($this->total/$this->size);
        if($this->page_total<=0) $this->page_total = 1;
        if($this->page>$this->page_total) $this->page = $this->page_total;
        if($this->page-$this->len>=1){
            for($i=$this->len; $i>0; $i--){
                $this->page_list[] = $this->page - $i;
            }
        }else{
            for($i=1; $i<$this->page; $i++){
                $this->page_list[] = $i;
            }
        }
        $this->page_list[] = $this->page;
        if($this->page+$this->len<=$this->page_total){
            for($i=1; $i<=$this->len; $i++){
                $this->page_list[] = $this->page + $i;
            }
        }else{
            for($i=$this->page+1; $i<=$this->page_total; $i++){
                $this->page_list[] = $i;
            }
        }
    }

    /**
     * 默认分页样式
     *
     * @return string
     */
    public function get_default_style(){
        $style = '';
        return $style;
    }

    /**
     * 是否是第一页
     *
     * @return bool
     */
    public function is_first_page(){
        return $this->page == 1;
    }

    /**
     * 获取第一页页码
     *
     * @return int
     */
    public function get_first_page(){
        return 1;
    }

    /**
     * 是否是最后一页
     *
     * @return bool
     */
    public function is_last_page(){
        return $this->page == $this->page_total;
    }

    /**
     * 获取最后一页页码
     *
     * @return int
     */
    public function get_last_page(){
        return $this->page_total;
    }

    /**
     * 是否存在上一页
     *
     * @return bool
     */
    public function has_prev_page(){
        return $this->page > 1;
    }

    /**
     * 是否存在下一页
     *
     * @return bool
     */
    public function has_next_page(){
        return $this->page < $this->page_total;
    }

    /**
     * 获取上一页页码
     *
     * @return int
     */
    public function get_prev_page(){
        return $this->has_prev_page() ? $this->page - 1 : $this->page;
    }

    /**
     * 获取下一页页码
     *
     * @return int
     */
    public function get_next_page(){
        return $this->has_next_page() ? $this->page + 1 : $this->page;
    }

    /**
     * 获取当前页页码
     *
     * @return int
     */
    public function get_curr_page(){
        return $this->page;
    }

    /**
* Get the total number of data
*
* @return int
*/
    public function get_total(){
        return $this->total;
    }

    /**
* Get the number of data displayed on each page
*
* @return int
*/
    public function get_size(){
        return $this->size;
    }

    /**
* Get the total number of pages
*
* @return int
*/
    public function get_total_page(){
        return $this->page_total;
    }

    /**
* Construct and return the paging code
*
* @param string $base_url base address
* @param string $place replacement flag
* @param string $style paging style
* @return string paging HTML code
*/
    public function display($base_url = '', $place = '', $style = ''){
        if($base_url==='') $base_url = $this->base_url;
        if($place==='') $place = $this->place;
        if($style==='') $style = $this->style;
        $str = $style.'

';
        if( ! $this->is_first_page()){
            $str .= '首页';
        }
        if($this->has_prev_page()){
            $str .= '上一页';
        }
        foreach($this->page_list as $v){
            if($v==$this->page){
                $str .= '' . $v . '';
            }else{
                $str .= ''.$v.'';
            }
        }
        if($this->has_next_page()){
            $str .= '下一页';
        }
        if( ! $this->is_last_page()){
            $str .= '尾页';
        }
        $str .= '
';
        return $str;
    }

}
?>

/application/view/pagelist.php

复制代码 代码如下:

    class Pagelist extends CI_Controller {

        public function page(){
            $this->load->helper('url');
            $page = $this->input->get('page');
            $page = @intval($page);
            if($page<=0) $page = 1;
            $this->load->library('page_list',array('total'=>10000,'size'=>16,'page'=>$page));
            $pl = $this->page_list->display(site_url('pagelist/page/page/-page-'));
            $this->load->view('pagelist', array('pl' => $pl));
        }

    }
?>

/application/view/pagelist.php

复制代码 代码如下:




   
    分页测试





www.bkjia.comtruehttp://www.bkjia.com/PHPjc/755840.htmlTechArticle通用分页类(以Codeigniter测试) page_list.php 复制代码 代码如下: ?php if( ! defined('BASEPATH')) die('No Access'); /***Paging class*/ class Page_list { /** * 总数...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn