• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 3年前 (2022-01-25) 19次浏览 已收录 0个评论
文章目录[隐藏]

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

<code>      <div class="page">         <?php if ($page != 1) { ?>               ">上一页                <?php }                 for ($i=1;$i<=$pagenum;$i++) {  //循环显示出页面                            if($i==$page){             echo '<b>'.$i.'</b>';          } else {            echo "".$i."";          }              }           if ($page               ">下一页        <?php } ?>      </div></code>

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

回复内容:

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

<code>      <div class="page">         <?php if ($page != 1) { ?>               ">上一页                <?php }                 for ($i=1;$i<=$pagenum;$i++) {  //循环显示出页面                            if($i==$page){             echo '<b>'.$i.'</b>';          } else {            echo "".$i."";          }              }           if ($page               ">下一页        <?php } ?>      </div></code>

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

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

<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 .= '上一页'   }</code>
  2. 中间的数字页码

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

      <code>if(($page - $bothnum) > 1) {    $pagestr .= '';    $pagestr .= '<span class="dotted">...</span>';}</code>
    • 当前页的左边

      <code>  for($i=$bothnum; $i>=1; $i--) {     if(($page - $i) < 1 ) { // 当前页左边花最多 bothnum 个数字         continue;     }     $pagestr .= ''; }</code>
    • 当前页

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

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

      <code>if(($page + $bothnum) < $pagenum) {    $pagestr .= '<span class="dotted">...</span>';    $pagestr .= '';}</code>
  3. 下一页

    <code>   if($page == $pagenum) {       $pagestr .= '<span>下一页</span>';   } else {       $pagestr .= '下一页'   }</code>

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

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

最后,实际上,还有比如并没有对分页参数进行处理,这个需要自己去做,只要把一些额外参数拼接本文来源gaodaimacom搞#^代%!码&网*

搞代gaodaima码

上了就可以了,比较简单。

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP简单分页如何省几个数字?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址