【php基础】PHP分页类

class Page
{
    //信息总条数
    protected $total;
    //当前页数
    protected $page;
    //每页显示条数
    public $num;
    //开始搜索的位置
    public $start;
    //当前url
    protected  $url;
    //分页链接
    protected $result;

    /**
     * 构造函数
     * @param int $total
     * @param int $page
     * @param int $num
     */
    public function __construct($total,$page,$num)
   {
        $this->total = $total;
        $this->page = $page;
        $this->num = $num;
    }
    
    /**
     * 获取分页链接
     */
    public function getPage()
   {
        //分析当前路径,获取参数
        $this->anaylistUrl();
        //获取路径信息
        $this->makeLinks();
        //计算开始查询位置
        $this->start = ($this->page-1)*$this->num;
        
        return $this->result;
    }
    
    /**
     * 分析当前url
     */
    private function anaylistUrl()
   {
        $param  = $_SERVER["QUERY_STRING"];
        if(empty($param)){
            $this->url = '?';
            return ;
        }
        $paramArr = explode('&',$param);
        $param = '?';
        foreach($paramArr as $val){
            $valArr = explode('=',$val);
            if('p'!=$valArr[0]){
                $param .= "{$valArr[0]}={$valArr[1]}&";
            }
        }
        $this->url = $param;
    }
    
    /**
     * 生成链接数组
     */
    protected function makeLinks()
   {
        $before = array();
        $after = array();
        $totalPage = (0 == $this->total)?1:ceil($this->total/$this->num);
        if(1 != $this->page){
            $before[] = '<a href="'.$this->url.'p=1" title="首页">首页</a>';
        }
        if($this->page > 3){
            $before[] = '<a href="'.$this->url.'p='.($this->page-3).'" title="前三页"><<</a>';
        }
        
        for($i = (($this->page-3)<=1?1:($this->page-3));$i<$this->page;$i++){
            $before[] = '<a href="'.$this->url.'p='.$i.'">'.$i.'</a>';
        }
        if($this->page != $totalPage){
            $after[] = '<a href="'.$this->url.'p='.$totalPage.'" title="末页">末页</a>';
        }
        if(($totalPage-$this->page) >= 3){
            $after[] = '<a href="'.$this->url.'p='.($this->page+3).'" title="后三页">>></a>';
        }
        for($i = ($this->page+3>$totalPage?$totalPage:($this->page+3));$i>$this->page;$i--){
            $after[] = '<a href="'.$this->url.'p='.$i.'">'.$i.'</a>';
        }
        $after = array_reverse($after);
        
        $this->result = array_merge($before,array("<li>{$this->page}</li>"),$after);
    }
}



使用方法:

$count   ---  总条目数

$page   ---  当前页数

$num   ----  一页显示的行数

$page = new page($count,$page,$num);

$pageLinks = $page->getPage();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值