欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP简单分页如何省几个数字?

程序员文章站 2022-05-26 21:39:02
...
这是我写的PHP简单分页 正常输出 1234567 没有问题,但是 要是100多页, 怎样在 12345....100 省略中间 多个数字呢?
      

原效果: 上一页 123456 下一页
要是100个页面 变成: 上一页 123456.......100 下一页

回复内容:

这是我写的PHP简单分页 正常输出 1234567 没有问题,但是 要是100多页, 怎样在 12345....100 省略中间 多个数字呢?

      

原效果: 上一页 123456 下一页
要是100个页面 变成: 上一页 123456.......100 下一页

涉及到这种变量较多的需求,可以先里清楚:哪些变量在一定条件是是不变的,而哪一些又是动态变化的。为了把问题说清楚,下面模拟定义几个涉及到分页的变量:

$total 总记录数
$pagesize 每页的记录数
$pagenum 总页码数
$page 当前页
$bothnum 当前页码两边显示的页码数量

好了,对于分页,涉及到变量就这么几个。为了解决这个问题,我们先固定住几个变量,如下

$total = 100;
$pagesize = 10;
$pagenum = $total / $pagesize = 10;

$bothnum = 5; //表示当前页码两边显示 5 个页码数量

因此,实际上目前就只有一个变量了就是 $page 表示当前页,所以在组装分页格式的时候,你只要关注 $page 参数的变化就可以了。

为了方便理解,我们准备把组装的分页信息都存储到一个字符串 $pagestr 中。好了准备工作已经完毕,下面就开始制作分页吧~~。

  1. 上一页

       if($page == 1) {
           $pagestr .= '上一页';
       } else {
           $pagestr .= '上一页'
       }
    
  2. 中间的数字页码

       // 想象分页如下,目前第 10 页,它两边最多只有 5 (bothnum) 个数字
       1 ... 5 6 7 8 9 *10* 11 12 13 14 15 ... 100
    
    • 首页(第 1 页)

      if(($page - $bothnum) > 1) {
          $pagestr .= '';
          $pagestr .= '...';
      }
      
    • 当前页的左边

       
       for($i=$bothnum; $i>=1; $i--) {
           if(($page - $i) ';
       }
      
    • 当前页

       $pagestr .= ''.$page.''; 
      
    • 当前页的右边

      for($i=1; $i $pagenum) { // 当前页右边最多 bothnum 个数字
              break;
          }
          $pagestr .= '';
      }
      
    • 尾页(第 100 页)

      if(($page + $bothnum) ...
相关标签: php