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

php中文网
发布: 2016-06-06 20:27:00
原创
2587人浏览过

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

<code>      <div class="page"> 
        <?php if ($page != 1) { ?>
        
       <a href="user_list.php?page=<?php echo $page - 1;?>">上一页</a> 
       
        <?php } 
        
        for ($i=1;$i<=$pagenum;$i++) {  //循环显示出页面  
        
        
          if($i==$page){ 
            echo '<b>'.$i.'</b>';
          } else {
            echo "<a href='user_list.php?page=".$i."'>".$i."</a>";
          } 
   
          }
           if ($page<$pagenum) { //如果page小于总页数,显示下一页链接
         ?>
       
        <a href="user_list.php?page=<?php echo $page + 1;?>">下一页</a>
        <?php } ?>
      </div></code>
登录后复制

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

回复内容:

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

<code>      <div class="page"> 
        <?php if ($page != 1) { ?>
        
       <a href="user_list.php?page=<?php echo $page - 1;?>">上一页</a> 
       
        <?php } 
        
        for ($i=1;$i<=$pagenum;$i++) {  //循环显示出页面  
        
        
          if($i==$page){ 
            echo '<b>'.$i.'</b>';
          } else {
            echo "<a href='user_list.php?page=".$i."'>".$i."</a>";
          } 
   
          }
           if ($page<$pagenum) { //如果page小于总页数,显示下一页链接
         ?>
       
        <a href="user_list.php?page=<?php echo $page + 1;?>">下一页</a>
        <?php } ?>
      </div></code>
登录后复制

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

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

立即学习PHP免费学习笔记(深入)”;

<code>$total 总记录数
$pagesize 每页的记录数
$pagenum 总页码数
$page 当前页
$bothnum 当前页码两边显示的页码数量
</code>
登录后复制

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

<code>$total = 100;
$pagesize = 10;
$pagenum = $total / $pagesize = 10;

$bothnum = 5; //表示当前页码两边显示 5 个页码数量
</code>
登录后复制

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

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

  1. 上一页

    <code>   if($page == 1) {
           $pagestr .= '<span>上一页</span>';
       } else {
           $pagestr .= '<a href="'.{$page-1}'">上一页</a>'
       }
    </code>
    登录后复制
  2. 中间的数字页码

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

      沉浸式翻译
      沉浸式翻译

      沉浸式翻译:全网口碑炸裂的双语对照网页翻译插件

      沉浸式翻译 205
      查看详情 沉浸式翻译
      <code>if(($page - $bothnum) > 1) {
          $pagestr .= '<a href="?page=1"></a>';
          $pagestr .= '<span class="dotted">...</span>';
      }
      </code>
      登录后复制
    • 当前页的左边

      <code> 
       for($i=$bothnum; $i>=1; $i--) {
           if(($page - $i) < 1 ) { // 当前页左边花最多 bothnum 个数字
               continue;
           }
           $pagestr .= '<a href="?page='.($page - $i)."></a>';
       }
      </code>
      登录后复制
    • 当前页

      <code> $pagestr .= '<span class="current">'.$page.'</span>'; 
      </code>
      登录后复制
    • 当前页的右边

      <code>for($i=1; $i<=$bothnum; $i++) {
          if(($page + $i) > $pagenum) { // 当前页右边最多 bothnum 个数字
              break;
          }
          $pagestr .= '<a href="?page='.($page + $i)."></a>';
      }
      </code>
      登录后复制
    • 尾页(第 100 页)

      <code>if(($page + $bothnum) < $pagenum) {
          $pagestr .= '<span class="dotted">...</span>';
          $pagestr .= '<a href="?page='.$pagenum.'"></a>';
      }
      </code>
      登录后复制
  3. 下一页

    <code>   if($page == $pagenum) {
           $pagestr .= '<span>下一页</span>';
       } else {
           $pagestr .= '<a href="?page='.{$page+1}'">下一页</a>'
       }
    </code>
    登录后复制

原理就基本差不多是这样,其实这是对制作分页时思路的一种整理,上面的代码并没有经过测试,可以自己调试一下。

当然了,你也可以把它封装称为一个分页类,如果搞掂,也希望能够分享出来吧。

最后,实际上,还有比如并没有对分页参数进行处理,这个需要自己去做,只要把一些额外参数拼接上了就可以了,比较简单。

你要先定义一个$limitPage,比如为10,最多显示10页。
那你的循环里面就不能用$pagenum,你要先比较和$limitPage的大小,然后选择来循环输出。多的就有省略号,和输出最后一页。
这里面有很多情况要考虑,总页面数为0,总页面数小于等于$limitPage,总页面数大于$limitPage。
当前页面数和剩余页面数跟$limitPage的比较。细节比较多,好好理一下。

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号