分页类

<?php 

    class Page{
        private $total;            //总记录
        private $pagesize;        //每页显示多少条
        private $limit;            //limit
        private $page;            //当前页码
        private $pagenum;        //总页码
        private $url;            //地址
        private $bothnum;        //两边保持数子分页的量

        //构造方法
        public function __construct($_total, $_pagesize){
            $this->total = $_total;
            $this->pagesize = $_pagesize;
            $this->pagenum = ceil($this->total / $this->pagesize);
            $this->page = $this->setPage();
            $this->limit = "LIMIT ".($this->page-1)*$this->pagesize.", $this->pagesize";
            $this->url = $this->setUrl();
            $this->bothnum = 2;
        }

        //拦截器
        public function __get($_key){
            return $this->$_key;
        }

        //获取当前页码
        private function setPage(){
            if(!empty($_GET['page'])){
                if($_GET['page'] > 0 ){
                    if($_GET['page'] > $this->pagenum){
                        return $this->pagenum;
                    }else{
                        return $_GET['page'];
                    }
                }else{
                    return 1;
                }
            }else{
                return 1;
            }

        }

        //获取地址
        private function setUrl(){
            $_url = $_SERVER["REQUEST_URI"];
            $_par = parse_url($_url);
            if(isset($_par['query'])){
                parse_str($_par['query'], $_query);
                unset($_query['page']);
                $_url = $_par['path'].'?'.http_build_query($_query);
            }            
            return $_url;
        }

        //数字目录
        private function pageList(){
            for($i=$this->bothnum; $i>=1; $i--){
                $_page = $this->page-$i;
                if($_page < 1){
                    continue;
                }
                $_pagelist .= '<a href="'.$this->url.'&page='.$_page.'">'.$_page.'</a>';
            }
            $_pagelist .= '<span class="me">'.$this->page.'</span>';
            for($i=1; $i<=$this->bothnum; $i++){
                $_page = $this->page+$i;
                if($_page > $this->pagenum){
                    break;
                }
                $_pagelist .= '<a href="'.$this->url.'&page='.$_page.'">'.$_page.'</a>';
            }
            return $_pagelist;
        }
        //首页
        private function first(){
            if($this->page > $this->bothnum + 1){
                return ' <a href="'.$this->url.'">1</a>... ';
            }
        }

        //尾页
        private function last(){
            if(($this->pagenum - $this->page) >$this->bothnum ){
                return ' ...<a href="'.$this->url.'&page='.$this->pagenum.'">'.$this->pagenum.'</a> ';
            }
        }

        //上一页
        private function prev(){
            if($this->page == 1){
                return '<span class="disabled">上一页</span>';
            }
            return ' <a href="'.$this->url.'&page='.($this->page-1).'">上一页</a> ';
        }

        //下一页
        private function next(){
            if($this->page == $this->pagenum){
                return '<span class="disabled">下一页</span>';
            }
            return ' <a href="'.$this->url.'&page='.($this->page+1).'">下一页</a> ';
        }


        //分页信息
        public function showpage(){
            $_page .= $this->first();
            $_page .= $this->pageList();
            $_page .= $this->last();
            $_page .= $this->prev();
            $_page .= $this->next();
            return $_page;
        }
    }

 ?>

 

posted @ 2014-10-26 21:44  oceanden  阅读(144)  评论(0编辑  收藏  举报