PHP分页功能使用类封装实现

//Page.class.php(分页类封装)------------------------------
<?php 
header("Content-Type:text/html;charset=utf-8");
class Page{
    public $total; //总记录数
    public $page_size; //每页显示记录数
    public $total_page; //总页数
    public $cur_page;   //当前页

    //定义构造方法,给成员属性赋初值
    function __construct($total,$page_size){
        $this->total = $total;
        $this->page_size = $page_size;
        $this->total_page = $this->getTotalPage();
        $this->cur_page = $this->getCurPage();
    }
    //定义出口程序,用于输出分页类的效果
    function pages(){
        echo "共".$this->total_page."页&nbsp;
             当前第".$this->cur_page."页&nbsp;"
             .$this->flist()
             .$this->listNum()
             .$this->llist();
    }

    //定义成员方法,获取总页数
    private function getTotalPage(){
        //ceil(总记录数/每页显示记录数)
        $total_page = ceil($this->total/$this->page_size);
        return $total_page;
    }

    //获取当前页
    private function getCurPage(){
        //http://localhost/Page.class.php
        $cur_page = isset($_GET['p'])?$_GET['p']:1;
        //$cur_page = 1
        //$this->total_page = 0
        //对当前页的取值进行判断
        if($cur_page<1){
            $cur_page=1;
        }else if($cur_page>$this->total_page&&$this->total_page!=0){
            $cur_page=$this->total_page;

        }
         return $cur_page;     
    }
    // 1 2 3 4 5 6 7
    private function listNum(){
        //定义队列长度
        $num = 3;
        //1 2 3
        $lists = "";
        for($i=$num;$i>=1;$i--){
            $n = $this->cur_page-$i;
            if($n>=1){
                $lists.="&nbsp;<a href='?p=".$n."'>$n</a>&nbsp;";
            }
        }

        //连接上当前页
        $lists .= "&nbsp;".$this->cur_page."&nbsp;";
        //5 6 7
        for($i=1;$i<=$num;$i++){
            //$n = 11+1=12
            $n = $this->cur_page+$i;
            if($n<=$this->total_page){
                $lists.="&nbsp;<a href='?p=".$n."'>$n</a>&nbsp;";
            }
        }
        return $lists;
    }

    //首页 上一页
    private function  flist(){
        //$prev = 1-1 = 0
        //$prev = 2-1 = 1
        $prev = $this->cur_page-1;
        $lists = "";
        if($prev>=1){      
            $lists = "<a href='?p=1'>首页</a>&nbsp;
                  <a href='?p=".$prev."'>上一页</a>";
        }
        return $lists;
    }

    //下一页 尾页
    private function  llist(){
        //$next = 10+1 = 11
        //$next = 11+1 = 12
        $next = $this->cur_page+1;
        $lists = "";               
        if($next<=$this->total_page){
            $lists = "&nbsp;<a href='?p=".$next."'>下一页</a>&nbsp;
                  <a href='?p=".$this->total_page."'>尾页</a>";
        }
        return $lists;
    }
}
//总记录数52
$total = 52;
//每页显示的记录数
$page_size = 5;
$p = new Page($total,$page_size);
$p->pages();
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值