search
HomeBackend DevelopmentPHP TutorialPHP简单分页如何省几个数字?

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

<code>      <div class="page"> 
        <?php if ($page != 1) { ?>
        
       <a href="user_list.php?page=<?php%20echo%20%24page%20-%201;?>">上一页</a> 
       
        <?php } 
        
        for ($i=1;$i<=$pagenum;$i++) {  //循环显示出页面  
        
        
          if($i==$page){ 
            echo '<b>'.$i.'';
          } else {
            echo "<a href="user_list.php?page=%22.%24i.%22">".$i."</a>";
          } 
   
          }
           if ($page
       
        <a href="user_list.php?page=<?php%20echo%20%24page%20+%201;?>">下一页</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%20echo%20%24page%20-%201;?>">上一页</a> 
       
        <?php } 
        
        for ($i=1;$i<=$pagenum;$i++) {  //循环显示出页面  
        
        
          if($i==$page){ 
            echo '<b>'.$i.'';
          } else {
            echo "<a href="user_list.php?page=%22.%24i.%22">".$i."</a>";
          } 
   
          }
           if ($page
       
        <a href="user_list.php?page=<?php%20echo%20%24page%20+%201;?>">下一页</a>
        <?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 .= '<a href="'.%7B%24page-1%7D'">上一页</a>'
       }
    </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 .= '<a href="?page=1"></a>';
          $pagestr .= '<span class="dotted">...</span>';
      }
      </code>
    • 当前页的左边

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

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

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

      <code>if(($page + $bothnum) ...';
          $pagestr .= '<a href="?page='.%24pagenum.'"></a>';
      }
      </code>
  3. 下一页

    <code>   if($page == $pagenum) {
           $pagestr .= '<span>下一页</span>';
       } else {
           $pagestr .= '<a href="?page='.%7B%24page+1%7D'">下一页</a>'
       }
    </code>

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

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

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

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

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace("&nbsp;","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.