今天为大家献上一段代码,这是一段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

最新文章

  1. mysql字符串处理例子
  2. Java进击C#——语法之基础
  3. linq学习笔记
  4. c++调用lua注册的带参数的回调
  5. 新萝卜家园GHOST WIN7系统32,64位极速装机特别版
  6. C#命名管道通信
  7. OTL使用总结
  8. 笔记:Maven 私服 Nexus 权限控制
  9. 网站开发进阶(十七)Html元素隐藏的几种方式
  10. tomcat 构建问题记录
  11. Oracle中的substr()函数 详解及应用
  12. 忘记MySQL root密码,如何不重启修改
  13. CF113D 高斯消元、dp
  14. 每月IT摘录201901
  15. python基础学习5----字典
  16. FrameLayout和handle实现霓虹灯效果
  17. Hive Web Interface的安装
  18. Memcached 数据导出与导入
  19. Linux下应急工具
  20. DOM EVENT

热门文章

  1. easyui的datagrid用js插入数据等编辑功能的实现
  2. Linux —— shell认识与基础命令
  3. P2184 贪婪大陆 树状数组
  4. Educational Codeforces Round 66 (Rated for Div. 2) B. Catch Overflow!
  5. 解决git commit报错问题
  6. jquery扩展方法详解
  7. exportExcel()方法注意事项
  8. (转)启动网卡报错(Failed to start LSB: Bring up/down networking )解决办法总结
  9. 第十九章 排查和调试Web程序 之 防止和排查运行时问题
  10. 集合(Map、可变参数、Collections)