php实现分页工具类分享


Posted in PHP onJanuary 09, 2014

代码:

    /**
    * 把中间的看成一个可以滑动的固定长度的尺子
    *
    * 把$this->_totalShowPages 当成一个可以滑动的固定长度尺子,
    * 然后$this->_totalPages就是一个给定长度的木块,尺子在这个
    * 木块上滑动。情况两种:
    * 1. 尺子长度大于木块长度,那么就直接输出所有的页码;
    * 2. 尺子长度小于木块长度,那么就只用找到输出这个尺子长度页
    * 数的起始点——$start, $end;
    * @Access protected
    * @Return void
    * @Exception none
    */
    protected function _getShowPageNumber()
    {
    $pageHtml = '';
    //找到$start点
    if($this->_curPage - 2 > 1) {
    $start = $this->_curPage - 2;
    } else {
    $start = 1;
    }
    //找到$end 点
    $end = $start + $this->_totalShowPages;
    if($end >= $this->_totalPages) {
    $end = $this->_totalPages;
    $start = $end - $this->_totalShowPages; //保证页面显示的长度为$this->_totalShowPages
    }
    if($start != 1) {
    $pageHtml .= $this->_getPageHtml(1);
    $preMore = $this->_curPage - $this->_totalShowPages;
    if($preMore < 1) {
    $preMore = 1;
    }
    $pageHtml .= $this->_getMorePageHtml($preMore);
    }
    for($page = $start; $page < $end; $page ++) {
    $pageHtml .= $this->_getPageHtml($page);
    }
    if($end != $this->_totalPages) {
    $pageHtml .= $this->_getMorePageHtml($end);
    }
    $pageHtml .= $this->_getNormalPageHtml($this->_totalPages);    return $pageHtml;
    }
 

第一种老想法的代码实现:

    /**
    * 一步步的来
    *
    * @desc
    *
    * @Access protected
    * @Return void
    * @Exception none
    */
    protected function _getShowPageNumberTwo()
    {
    if($this->_curPage < $this->_totalShowPages) {
    for($page = 1; $page < $this->_totalShowPages; $page ++) {
    $pageHtml .= $this->_getPageHtml($page);
    }
    $pageHtml .= $this->_getMorePageHtml($this->_totalShowPages);
    $pageHtml .= $this->_getNormalPageHtml($this->_totalPages);
    } else {
    $pageHtml .= $this->_getNormalPageHtml(1);
    if($this->_curPage == $this->_totalShowPages) {
    $pageHtml .= $this->_getMorePageHtml(1);
    } else {
    $pageHtml .= $this->_getMorePageHtml($this->_curPage - $this->_totalShowPages);
    }
    if($this->_curPage + $this->_totalShowPages >= $this->_totalPages) {
    for($page = $this->_totalPages - $this->_totalShowPages; $page < = $this->_totalPages; $page ++) {
    $pageHtml .= $this->_getPageHtml($page);
    }
    } else {
    $start = $this->_curPage - 2;
    $end = $this->_curPage + $this->_totalShowPages - 2;
    for($page = $start; $page < $end; $page ++) {
    $pageHtml .= $this->_getPageHtml($page);
    }
    $pageHtml .= $this->_getMorePageHtml($this->_curPage + $this->_totalShowPages - 2);
    $pageHtml .= $this->_getNormalPageHtml($this->_totalPages);
    }
    }    return $pageHtml;
    }
   
PHP 相关文章推荐
用PHP编写PDF文档生成器
Oct 09 PHP
PHP高级对象构建 工厂模式的使用
Feb 05 PHP
探讨PHP删除文件夹的三种方法
Jun 09 PHP
php实现兼容2038年后Unix时间戳转换函数
Mar 18 PHP
php实现转换ubb代码的方法
Jun 18 PHP
php制作的简单验证码识别代码
Jan 26 PHP
Zend Framework教程之Zend_Layout布局助手详解
Mar 04 PHP
php json中文编码为null的解决办法
Dec 14 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
PHP内置函数生成随机数实例
Jan 18 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 PHP
codeigniter框架批量插入数据
Jan 09 #PHP
eaglephp使用微信api接口开发微信框架
Jan 09 #PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 #PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 #PHP
php将mysql数据库整库导出生成sql文件的具体实现
Jan 08 #PHP
PHP修改session_id示例代码
Jan 08 #PHP
让PHP显示Facebook的粉丝数量方法
Jan 08 #PHP
You might like
PHP微信开发之二维码生成类
2015/06/26 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
json数据与字符串的相互转化示例
2013/09/18 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
2015/12/08 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
python八大排序算法速度实例对比
2017/12/06 Python
python实现人民币大写转换
2018/06/20 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
python计算二维矩形IOU实例
2020/01/18 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
Sephora丝芙兰澳洲官方网站:国际知名化妆品购物
2016/10/27 全球购物
C++的几个面试题附答案
2016/08/03 面试题
就业协议书样本
2014/08/20 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
学习三严三实心得体会
2014/10/13 职场文书
合作合同协议书范本
2015/01/27 职场文书
小学生安全教育主题班会
2015/08/12 职场文书
详解Javascript实践中的命令模式
2021/05/05 Javascript
Python selenium的这三种等待方式一定要会!
2021/06/10 Python
python ConfigParser库的使用及遇到的坑
2022/02/12 Python
python APScheduler执行定时任务介绍
2022/04/19 Python