Uchome分页方法

< ?php/**@author he luan*@package 分页类,参考uchome开发,支持symfony项目*/class page{//判断项目类型,默认为普通项目,'sf'代表symfony项目使用public $projectType = "";public $totalCount;//记录总条数public $numPerPage;//每页显示数量public $currentPage;//当前页码public $pageUrl;//分页链接urlfunction __construct(){/**以下配置在一个项目里是统一的,所以放在构造函数里。*如果是symfony项目,可以读取app.yml。**///页码长度,假如当前设置是5,则表示只显示5个页码,多了用省略号代替。$this->page = 5;//sunqingli.cn$this->offSet = 2;//偏移量,例如第9页,前面显示7、8页,www.sunqingli.cn//后面显示10、11页,页码长度取决于上面的配置,前后多了的用省略号代替$this->maxPages = 50;//页面显示最大页码数量,并不把实际最大页面数量呈现在网页上}/**@package 生成分页HTML主程序*@param $totalCount 总信息条数*@param $numPerPage 每页显示数量*@param $currentPage 当前页码*@param $pageUrl 分页链接*/public function generatePage(){$totalCount = $this->totalCount;$numPerPage = $this->numPerPage;$currentPage = $this->currentPage;$pageUrl = $this->pageUrl;//初始化输出HTML代码$outPageHTML = "";//sunqingli.cn$pageUrl .= strpos($pageUrl,'?')?'&':'?';$realpages = 1;//初始化分页数量//只有在总页码大于2的情况下,才输出分页HTML代码if ($totalCount > $numPerPage){$realpages = ceil($totalCount / $numPerPage);//算出总页码数$pages = ($this->maxPages < $realpages)?$this->maxPages:$realpages;//如果总页码数小于页码长度,起始页码从1开始,末页就是总页码数if ($this->page > $pages){$from = 1;$to = $pages;}else{//如果总页码数大于页码长度,起始页码 = 当前页码 - 偏移量,即向前取偏移量个页码,//末页 = 起始页 + 页码长度 - 1,即向后取偏移量个页码。$from = $currentPage - $this->offSet;$to = $from + $this->page - 1;if ($from < 1){$to = $currentPage + 1 - $from;$from = 1;if ($to - $from < $this->page){$to = $this->page; //www.sunqingli.cn}}elseif ($to > $pages){$from = $pages - $this->page + 1;$to = $pages;}}//开始输出分页HTML代码 www.sunqingli.cnif ($currentPage - $this->offSet > 1 && $pages > $this->page){//满足条件1:如果当前页码减去偏移量大于1,例如偏移量是2,例如当前页码是5,5-2=3>1;//满足条件2:如果总页码数大于构造函数中的配置数,即可以显示省略号//构建出的HTML代码就是先显示第一页,然后显示省略号if ($this->projectType == 'sf'){$outPageHTML .= ''.link_to('1',$pageUrl.'page=1').'...';}else{$outPageHTML .= '1...';}}if ($currentPage > 1){//如果当前页码不是第一页,那么构造出来的HTML代码应该包含一个“上一页”的链接if ($this->projectType == 'sf'){$outPageHTML .= ''.link_to('上一页',$pageUrl.'page='.($currentPage - 1)).'';}else{$outPageHTML .= '上一页';}}//根据上面起始页数和结束页数,构建分页HTML代码for($i = $from; $i < = $to; $i++){if ($this->projectType == 'sf'){$outPageHTML .= ($i == $currentPage) ? ''.$currentPage.'' :''.link_to($i,$pageUrl.'page='.$i).'';}else{$outPageHTML .= ($i == $currentPage) ? ''.$currentPage.'' :''.$i.'';}}//当前页不是最后一页,显示一个“下一页”链接,www.sunqingli.cn//末页数小于总页数,显示省略号然后再显示最后一页的链接。if ($this->projectType == 'sf'){if ($currentPage < $pages){$outPageHTML .= ''.link_to('下一页',$pageUrl.'page='.($currentPage + 1)).'';}if ($to < $pages){$outPageHTML .= '...'.link_to($pages,$pageUrl.'page='.$pages).'';}}else{if ($currentPage < $pages){$outPageHTML .= '下一页';}//www.sunqingli.cnif ($to < $pages){$outPageHTML .= '...'.$pages.'';}}}return $outPageHTML;}}
?>

下面是使用上述类的例子:

< ?php
/******** 例子 ********/
$page = new page();$page->totalCount = 100;$page->numPerPage = 5;$page->currentPage = 9;$page->pageUrl = 'index.php';echo $page->generatePage();/***************************/
?>

Uchome分页方法相关推荐

  1. 新版数据库分页方法(Sql server2012)

    1. ROW_NUMBER() 的分页方法 dbcc freeproccache dbcc dropcleanbuffers set statistics time on set statistics ...

  2. sql server两种分页方法

    方法一: --分页方法一 select top 10 OrderID,CustomerID, EmployeeID,OrderDate,ShippedDate,ShipName,ShipAddress ...

  3. Sql Server 2012 分页方法分析(offset and fetch)

    最近在分析 Sql Server 2012 中 offset and fetch 的新特性,发现 offset and fetch 无论语法的简洁还是功能的强大,都是相当相当不错的.其中  offse ...

  4. Oracle、SQL Server、MySQL分页方法

    测试用例:查询TEST_TABLE表中TEST_COLUMN列的第10-20条数据 1,Oracle分页方法 [sql] view plain copy   SELECT A.* FROM ( SEL ...

  5. mysql 高效分页查询_PostgreSQL、MySQL高效分页方法探讨

    对于数据库相关的业务,逃不过的数据分页场景,无论是前台分页浏览还是划到页面底部自动加载.对于分页需求,各数据库也提供了成熟的SQL支持,类似于Hibernate等ORM框架也集成了相关的方法.但是基于 ...

  6. ASP.NET分页方法的了解程度

    ASP.NET分页方法的了解程度 [出现频率] ★★★★☆ [解答] ASP.NET分页的常用方法有以下几种. q 启用部分数据控件的内置分页功能,如设置GridView控件的"AllowP ...

  7. (转)几种常用存储过程分页方法

    我们先给出几种主要的分页方法和核心语句,然后直接给出结论,有兴趣的读者可以看看后面的数据 几种常用存储过程分页方法 TopN方法 select Top(@PageSize) from TableNam ...

  8. mysql分页概念_MySQL学习笔记之数据定义表约束,分页方法总结

    本文实例讲述了MySQL学习笔记之数据定义表约束,分页方法.分享给大家供大家参考,具体如下: 1. primary key 主键 特点:主键是用于唯一标识一条记录的约束,一张表最多只能有一个主键,不能 ...

  9. 给DataList分页有两个办法:1、自定义实现分页方法 2、用第三方控件(例如AspNetPager)

    给DataList分页有两个办法:1.自定义实现分页方法 2.用第三方控件(例如AspNetPager) 先介绍下如何自定义实现分页方法. 我的DataList分页方法的核心原理是利用PagedDat ...

  10. 纯JS前端分页方法(JS分页)

    1.JS分页函数:开发过程中,分页功能一般是后台提供接口,前端只要传page(当前页码)和pageSize(每页最大显示条数)及对应的其他查询条件,就可以返回所需分页显示的数据. 但是有时也需要前端本 ...

最新文章

  1. 默认HotSpot最大直接内存大小
  2. 学习Winform了解到switch和if-else的妙处
  3. (转)你的团队需要一个领袖,而不是一个主管
  4. 【Python学习】 - sklearn学习 - KNN
  5. deepin部署python开发环境_deepin系统下部署Python3.5的开发及运行环境
  6. python模拟上传多张图片
  7. 大数据管理:构建数据自己的“独门独院”
  8. ofo已还清蚂蚁金服欠款?回应:消息不实 但没有放弃
  9. SAP License:财务帐与后勤不一致情况
  10. 3年flash游戏开发小结
  11. 暴风影音硬件加速播放高清影片
  12. 基于GPIB接口的自动测试系统
  13. 单片机超声波测距模块原理与源码解析
  14. 压力测试流程及测试步骤
  15. DOTA2怎么清除缓存_第36期 只要一招:彻底重置Windows图标缓存
  16. P1540 机器翻译洛谷题解
  17. SmartCash会止步于替代葡萄牙及瑞士境内的西联汇款和TransferWise服务吗?
  18. css 文字超出三行展示省略号
  19. 桌面存放linux文件无法删除,桌面文件无法删除怎么办【图文教程】
  20. 使用轻量级虚拟桌面基础架构 (VDI) 解决方案降低 IT 成本并保护数字知识产权

热门文章

  1. 不用找,你想要的魏体字体素材都在这里
  2. 智能混音插件 – iZotope Neutron Advanced 3.11 win-mac
  3. OverFeat论文理解
  4. 清华大学马少平:一款智能硬件背后的“AI争霸”...
  5. 微信网页开发 /JS-SDK说明文档
  6. outlook哪个版本好用
  7. Tkinter模块GUI界面化编程实战(三)——2048小游戏(含详解及完整源码、完整程序下载链接)
  8. 手机麦克风结构原理图_麦克风的构造图解 麦克风偏置电路和滤波电路
  9. 跟我学折纸计算机教案,折纸活动教案
  10. 北大计算机python教程_北京大学数据结构与算法(C++版),全套视频教程学习资料通过百度云网盘下载...