本文介绍一款原生的PHP分页类,分页样式有点类似bootstrap。

  1. <?php
  2. /* * *********************************************
  3. * @类名:   page
  4. * @参数:   $myde_total - 总记录数
  5. *          $myde_size - 一页显示的记录数
  6. *          $myde_page - 当前页
  7. *          $myde_url - 获取当前的url
  8. * @功能:   分页实现
  9. * @作者:   宋海阁
  10. */
  11. class page {
  12. private $myde_total;          //总记录数
  13. private $myde_size;           //一页显示的记录数
  14. private $myde_page;           //当前页
  15. private $myde_page_count;     //总页数
  16. private $myde_i;              //起头页数
  17. private $myde_en;             //结尾页数
  18. private $myde_url;            //获取当前的url
  19. /*
  20. * $show_pages
  21. * 页面显示的格式,显示链接的页数为2*$show_pages+1。
  22. * 如$show_pages=2那么页面上显示就是[首页] [上页] 1 2 3 4 5 [下页] [尾页]
  23. */
  24. private $show_pages;
  25. public function __construct($myde_total = 1, $myde_size = 1, $myde_page = 1, $myde_url, $show_pages = 2) {
  26. $this->myde_total = $this->numeric($myde_total);
  27. $this->myde_size = $this->numeric($myde_size);
  28. $this->myde_page = $this->numeric($myde_page);
  29. $this->myde_page_count = ceil($this->myde_total / $this->myde_size);
  30. $this->myde_url = $myde_url;
  31. if ($this->myde_total < 0)
  32. $this->myde_total = 0;
  33. if ($this->myde_page < 1)
  34. $this->myde_page = 1;
  35. if ($this->myde_page_count < 1)
  36. $this->myde_page_count = 1;
  37. if ($this->myde_page > $this->myde_page_count)
  38. $this->myde_page = $this->myde_page_count;
  39. $this->limit = ($this->myde_page - 1) * $this->myde_size;
  40. $this->myde_i = $this->myde_page - $show_pages;
  41. $this->myde_en = $this->myde_page + $show_pages;
  42. if ($this->myde_i < 1) {
  43. $this->myde_en = $this->myde_en + (1 - $this->myde_i);
  44. $this->myde_i = 1;
  45. }
  46. if ($this->myde_en > $this->myde_page_count) {
  47. $this->myde_i = $this->myde_i - ($this->myde_en - $this->myde_page_count);
  48. $this->myde_en = $this->myde_page_count;
  49. }
  50. if ($this->myde_i < 1)
  51. $this->myde_i = 1;
  52. }
  53. //检测是否为数字
  54. private function numeric($num) {
  55. if (strlen($num)) {
  56. if (!preg_match("/^[0-9]+$/", $num)) {
  57. $num = 1;
  58. } else {
  59. $num = substr($num, 0, 11);
  60. }
  61. } else {
  62. $num = 1;
  63. }
  64. return $num;
  65. }
  66. //地址替换
  67. private function page_replace($page) {
  68. return str_replace("{page}", $page, $this->myde_url);
  69. }
  70. //首页
  71. private function myde_home() {
  72. if ($this->myde_page != 1) {
  73. return "<a href='" . $this->page_replace(1) . "' title='首页'>首页</a>";
  74. } else {
  75. return "<p>首页</p>";
  76. }
  77. }
  78. //上一页
  79. private function myde_prev() {
  80. if ($this->myde_page != 1) {
  81. return "<a href='" . $this->page_replace($this->myde_page - 1) . "' title='上一页'>上一页</a>";
  82. } else {
  83. return "<p>上一页</p>";
  84. }
  85. }
  86. //下一页
  87. private function myde_next() {
  88. if ($this->myde_page != $this->myde_page_count) {
  89. return "<a href='" . $this->page_replace($this->myde_page + 1) . "' title='下一页'>下一页</a>";
  90. } else {
  91. return"<p>下一页</p>";
  92. }
  93. }
  94. //尾页
  95. private function myde_last() {
  96. if ($this->myde_page != $this->myde_page_count) {
  97. return "<a href='" . $this->page_replace($this->myde_page_count) . "' title='尾页'>尾页</a>";
  98. } else {
  99. return "<p>尾页</p>";
  100. }
  101. }
  102. //输出
  103. public function myde_write($id = 'page') {
  104. $str = "<div id=" . $id . ">";
  105. $str.=$this->myde_home();
  106. $str.=$this->myde_prev();
  107. if ($this->myde_i > 1) {
  108. $str.="<p class='pageEllipsis'>...</p>";
  109. }
  110. for ($i = $this->myde_i; $i <= $this->myde_en; $i++) {
  111. if ($i == $this->myde_page) {
  112. $str.="<a href='" . $this->page_replace($i) . "' title='第" . $i . "页' class='cur'>$i</a>";
  113. } else {
  114. $str.="<a href='" . $this->page_replace($i) . "' title='第" . $i . "页'>$i</a>";
  115. }
  116. }
  117. if ($this->myde_en < $this->myde_page_count) {
  118. $str.="<p class='pageEllipsis'>...</p>";
  119. }
  120. $str.=$this->myde_next();
  121. $str.=$this->myde_last();
  122. $str.="<p class='pageRemark'>共<b>" . $this->myde_page_count .
  123. "</b>页<b>" . $this->myde_total . "</b>条数据</p>";
  124. $str.="</div>";
  125. return $str;
  126. }
  127. }
  128. ?>
复制代码

分页演示地址:http://www.sucaihuo.com/php/223.html

PHP简单漂亮的分页类的更多相关文章

  1. THinkPHP简单漂亮的分页类 DownLoad

    PHP include_once("config.php"); require_once('page.class.php'); //分页类 $showrow = 10; //一页显 ...

  2. 一个简单的php分页类代码(转载)

    入门级php分页类 原文地址:http://www.xfcodes.com/php/fenye/3608.htm 时间:2015-12-16 20:52:00来源:网络 php分页类. 复制代码代码如 ...

  3. 简单实用的分页类-python

    django自带的分页虽然挺好,但是就想自己弄个通用的 自己写了个分页的类,用的是python,   其他语言改下语法就能用了. #定义好类.class pagemanage: def __init_ ...

  4. php漂亮的分页类

    <?php    /*    * PHP分页类    * @package Page    * @Created 2013-03-27    * @Modify  2013-03-27    * ...

  5. 一个简单的CI分页类

    [php] view plaincopy <span style="font-size:16px;">/** * * 关于 页码有效性的判断需要加在 控制器中判断,即当 ...

  6. 简单实用的原生PHP分页类

    一款简单实用的原生PHP分页类,分页按钮样式简洁美观,页码多的时候显示“...”,也是挺多网站用的效果 核心分页代码 include_once("config.php"); req ...

  7. php 简单分页类

    /**  file: page.class.php   完美分页类 Page  */ class Page {  private $total;          //数据表中总记录数  privat ...

  8. 好用的ASP.NET 分页类 简单好用 支持 AJAX 自定义文字

    在做网站没用 JS UI控件时 很实用 用法: var ps=new PageString(); /*可选参数*/ ps.SetIsEnglish = true;// 是否是英文 (默认:false) ...

  9. 用PHP写的一个简单的分页类 1.0版

    <?php /* 分页类 用于实现对多条数据分页显示 version:1.0 author:Knight E-Mail:S.Knight.Work@gmail.com Date:2013-10- ...

随机推荐

  1. 【BZOJ-4127】Abs 树链剖分 + 线段树 (有趣的姿势)

    4127: Abs Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 381  Solved: 132[Submit][Status][Discuss] ...

  2. UOJ #10 pyx的难题

    pyx的难题 被这题搞得生无可恋. 容易看出 题目完成时间与优先级之间的关系是单调的,故可以二分答案. 用于二分的答案可以取\(O(n)\)个离散值, 这样就很方便地保证了优先级各不相同. 可以用优先 ...

  3. LuaLaTeX \documemtclass{standalone} 编译错误

    最近在学习用LaTeX中的TikZ包画图 (graph), 必须要用LuaLaTeX编译. 然而却出现了奇怪的错误. \documentclass{standalone} \usepackage{ti ...

  4. 大一上学期C语言学习心得总结

    经过一个学期的C语言学习,大体算是在这个编程语言上入了门,能够通过一些代码解决特定的问题.当然,每次成功将问题转换成代码都小有激动,虽然只是在黑框上输出了一些数字或是字符串. 编程,虽然还不是很懂,但 ...

  5. Code笔记 之:防盗链(图片)

    图片防盗链   参考:http://bbs.csdn.net/topics/330080045    应该是”10种图片防盗的方法“,而不是”10种图片防盗链的方法“,不过看搜索防盗链的人要多一点,所 ...

  6. log4net配置和获取ILog实例

    名称 描述 File 文件路径,如果RollingStyle为Composite或Date,则这里设置为目录,文件名在DatePattern里设置,其他则这里要有文件名.已经扩展支持虚拟目录 Roll ...

  7. Python基本数据类型之set

    一.定义 set是一个无序且不重复的元素集合. 集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键.集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), ...

  8. Ubuntu学习总结-08 Ubuntu运行Shell脚本报 shell /bin/bash^M: bad interpreter错误问题解决

    错误原因之一很有可能是运行的脚本文件是DOS格式的, 即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A.可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MA ...

  9. O(1)快速乘注意事项

    O(1)快速乘是经典玄学优化啦~由于刚挂了一次特此总结一番. ll mul(ll u,ll v){ return(u*v-ll((long double)u*v/p)*p+p)%p; } double ...

  10. c#优化

    优化反射 http://kb.cnblogs.com/page/172119/ http://www.2cto.com/kf/201301/182765.html http://blog.sina.c ...