zoukankan      html  css  js  c++  java
  • PHP分页类代码

    今天为大家献上一段代码,这是一段php分页代码:

    <?php
    //创建分页类
    class Page {
        private $_all_num;                                                            //数据总个数
        private $_page_size;                                                        //每页显示几条数据
        private $_page;                                                                //当前页面
        private $_all_page;                                                            //总页码
        private $_url;                                                                //页面地址
        private $_limit;                                                            //数据库查询语句
        private $_sign;                                                                //地址符号
        
        //拦截器
        public function __get($_key) {
            return $this->$_key;
        }
        
        public function __construct($_all_num,$_page_size) {
            $this->_all_num = $_all_num;
            $this->_page_size = $_page_size;
            $this->_all_page = ceil($this->_all_num / $this->_page_size);
            $this->_page = $this->setPage();
            $this->_url = $this->setUrl();
            $this->_limit = 'LIMIT '.($this->_page * $this->_page_size - $this->_page_size).','.$this->_page_size;
        }
        
        //获取当前页码
        private function setPage() {
            if (!empty($_GET['page']) && $_GET['page'] > 0) {
                if ($_GET['page'] <= $this->_all_page) {
                    return ceil($_GET['page']);
                } else {
                    return $this->_all_page;
                }
            } else {
                return 1;
            }
        }
        
        //获取地址
        private function setUrl() {
            $_url = $_SERVER['REQUEST_URI'];    
            if (!empty($_url)) {
                $_par_url = parse_url($_url);
                if (isset($_par_url['query'])) {
                    parse_str($_par_url['query'],$_arr);
                    if (isset($_arr['page'])) {
                        unset($_arr['page']);
                    }
                    if (!empty($_arr)) {
                        $_http = http_build_query($_arr);
                        $_end_url = $_par_url['path'] . '?' . $_http;
                        $this->_sign = '&';
                    } else {
                        $_end_url = $_par_url['path'];
                        $this->_sign = '?';
                    }
                } else {
                    $_end_url = $_par_url['path'];
                    $this->_sign = '?';
                }
            }
            return $_end_url;
        }
        
        //显示分页
        public function numPage() {
            $_num = '';
            //前面
            for ($i=1; $i<$this->_page; $i++) {
                if ($i<1) continue;
                $_num .= "<a href='".$this->_url. $this->_sign ."page=".$i."'>".$i."</a>";
            }
            //自己
            $_num .= "<a class='me' href='".$this->_url. $this->_sign ."page=".$this->_page."'>".$this->_page."</a>";
            //后面
            for ($i=$this->_page+1; $i<=$this->_all_page; $i++) {
                if ($i>$this->_all_page) continue;
                $_num .= "<a href='".$this->_url. $this->_sign ."page=".$i."'>".$i."</a>";
            }
            return $_num;
        }
    }
    ?>

    大家可以将上面一段代码复制到文本编辑器中这样看的会舒服一点!下面讲一下具体步骤:

    1、创建一个分页类:class Page {};
    2、获取需要显示数据的个数,并且记录在Page类中,这里数据的个数通过数据去获取就不详细说了!然后设置每页显示数据的条数!
    3、获取当前页面地址!
        这段代码大概意思就是当你的地址跟着?时,那么点击分页就用&page=;当你的地址后面没有后缀或者只有?page=,那么点击分页就用?page=

    4、获取当前页码
        这里的页码必须是整数,所以可以用ceil这个函数,还要注意用户的恶意修改地址!

    4、做分页元素,这里只是做一个简单的数字分页,更复杂用户体验更好的,大家可以自行扩展!

    5、设置数据库库的查询条数,也就是LIMIT;举个例子:比如我现在有10条数据,设置每页显示5条数据,那么
        当用户点击第一页时,LIMIT 0,5
        当用户点击第二页时,LIMIT 5,5
    6、这段代码的调用:
        $_page = new Page(10,5);
        $_page->page();
        上面的10是总的数据个数,5是你想要每页显示数据的个数,$_page->page()就是页面的分页,直接echo出来就行啦,注意你还得将Page类中的$_limit调用出来放到数据库查询语句中,这样基本的php分页就出来啦!

    此文章属于王业楼的个人博客原创,若要转载请注明出处:王业楼的个人博客 www.ly89.cn

  • 相关阅读:
    MongoDb
    js暴露内部方法属性等
    JS闭包
    k8s设计模式
    scrum
    死锁
    Linux下安装php 扩展fileinfo
    linux中whereis、which、find、location的区别和用法
    Linux 命令学习记录
    windows 下 redis 的安装及使用
  • 原文地址:https://www.cnblogs.com/ly89cn/p/4544704.html
Copyright © 2011-2022 走看看