• 技术文章 >后端开发 >PHP问题

    php页码怎么实现

    藏色散人藏色散人2019-10-19 14:58:58原创1821

    php入门到就业线上直播课:进入学习

    php页码怎么实现?

    PHP页码显示的实现

    效果:

    a83f1ea09259c09578e61b88fe5397b.png

    拿去后几乎直接用。pageNow #当前页,pageNumb #总共页码数 两个变量赋值方式改一下就行了。

    <?php
    ########################################################################
    #页码显示PHP脚本
    #ora
    #2019-04-22 19:49:57 
    #########################################################################
    #$pageNumb = $arrlen /$contentNumbOnePage ;  #总共页码数=内容数/每页内容数。
    $pageNumb = 7; 
    if (is_float($pageNumb)) { #总共页码数 取整。
    $pageNumb = (int)$pageNumb + 1;
    }elseif (is_integer($pageNumb)) {
    $pageNumb = $pageNumb;
    }else $pageNumb = 1; #出错,但重新定义总页码数为1,而不是退出。
    #$pageNow  #当前页
    #$_GET['page']  #url传递(请求)的页码。
    if (!empty($_GET['page']) && is_integer($_GET['page']/1) ) { #is_integer($_GET['page']/1) ,除1以后才是整数... 此处有问题。待修正。
    $pageNow = $page = $_GET['page'] ;
    }else {$pageNow = $page = 1;} #没有请求页码,给予初始化为1.
    #页码显示
    #规则:必有首尾页,当前页前后页码相同且给定。其他页码用...表示。
    /*
    四种情况。难得解释清楚,感兴趣自己用一串数字掩饰一下。
    比如:
       1 23 ...777 ; 1 2 34...777 ;12 3 45...777 ; 1...23 4 56...777;1...234_235 <236> 237_238 ...777; 
       1 23 ...7 ; 1 2 34...7 ; 12 3 45...7 ;123 4 567;
       1 23 ...5 ; 1 2 345; 12 3 45;
       1 ... 234_235 <236> 237 ; 1 ... 235 236 <237> ; 
       1 2 <3> 4 ;
    */
    #ye ma xian shi.
    $jiange=2;#ye ma jian ge.
    if (!is_integer($jiange) && $jiange<1){$jiange=2;}# jian ge bu xiao yu 1,qie wei zhengshu.
    ##########################################下面4个case是方法############################
    #case 1
    if ($pageNow - $jiange - 1 - 1 > 0 && $pageNumb -$jiange -1 -1 >$pageNow){ # 前面有首页1、$jiange定义的间隔页码、和它本身。
    echo " <a href=\"?page=1\" >1</a> " ;
    echo "<span class=\"extend\">...</span> ";
    for ($num = $pageNow - $jiange ;$num<$pageNow;$num++){
    echo "<a href=\"?page=$num\">$num</a> ";
    }
    echo "<span class=\"current\">$pageNow</span>"; #当前页
    for ($num = $pageNow + 1 ; $num<=$pageNow + $jiange ;$num++){
    echo "<a href=\"?page=$num\">$num</a> ";
    }
    $num = $pageNow + 1;
    echo "<span class=\"extend\">...</span> ";
    echo "<a href=\"?page=$pageNumb\"> $pageNumb</a>"; 
    }
    #case 2
    if ($pageNow - $jiange - 1 - 1 <= 0 && $pageNumb -$jiange -1 -1 >$pageNow){ # 到首页的间隔页少于等于定义间隔值。前面的页码全输出。后连续输出间隔页码。
    for($i=1;$i<=$pageNow + $jiange ;$i++){
    if($i==$pageNow){
    echo "<span class=\"current\">$pageNow</span>"; #当前页
    }else {echo "<a href=\"?page=$i\"> $i</a>"; }
    }
    echo "<span class=\"extend\">...</span> ";
    echo "<a href=\"?page=$pageNumb\"> $pageNumb</a>"; 
    }
    #case 3
    if ($pageNow - $jiange - 1 - 1 > 0 && $pageNumb -$jiange -1 -1 <=$pageNow){
    echo " <a href=\"?page=1\" >1</a> " ;
    echo "<span class=\"extend\">...</span> ";
    for ($num = $pageNow - $jiange ;$num<$pageNow;$num++){
    echo "<a href=\"?page=$num\">$num</a> ";
    }
    echo "<span class=\"current\">$pageNow</span>"; #当前页
    for ($num = $pageNow + 1 ; $num<=$pageNumb;$num++){
    echo "<a href=\"?page=$num\">$num</a> ";
    }
    }
    #case 4 
    if ($pageNow - $jiange - 1 - 1 <= 0 && $pageNumb -$jiange -1 -1 <=$pageNow){ # 
    for($i=1;$i<=$pageNumb ;$i++){
    if($i==$pageNow){
    echo "<span class=\"current\">$pageNow</span>"; #当前页
    }else {echo "<a href=\"?page=$i\"> $i</a>"; }
    }
    #echo "<span class=\"extend\">...</span> ";
    #echo "<a href=\"?page=$pageNumb\"> $pageNumb</a>"; 
    }

    html格式的代码:

    <?php
    ########################################################################
    #页码显示PHP脚本
    #ora
    #2019-04-22 19:49:57 
    #########################################################################
    #$pageNumb = $arrlen /$contentNumbOnePage ;  #总共页码数=内容数/每页内容数。
    $pageNumb = 7; 
    if (is_float($pageNumb)) { #总共页码数 取整。
    $pageNumb = (int)$pageNumb + 1;
    }elseif (is_integer($pageNumb)) {
    $pageNumb = $pageNumb;
    }else $pageNumb = 1; #出错,但重新定义总页码数为1,而不是退出。
    #$pageNow  #当前页
    #$_GET['page']  #url传递(请求)的页码。
    if (!empty($_GET['page']) && is_integer($_GET['page']/1) ) { #is_integer($_GET['page']/1) ,除1以后才是整数... 此处有问题。待修正。
    $pageNow = $page = $_GET['page'] ;
    }else {$pageNow = $page = 1;} #没有请求页码,给予初始化为1.
    #页码显示
    #规则:必有首尾页,当前页前后页码相同且给定。其他页码用...表示。
    /*
    四种情况。难得解释清楚,感兴趣自己用一串数字掩饰一下。
    比如:
       1 23 ...777 ; 1 2 34...777 ;12 3 45...777 ; 1...23 4 56...777;1...234_235 <236> 237_238 ...777; 
       1 23 ...7 ; 1 2 34...7 ; 12 3 45...7 ;123 4 567;
       1 23 ...5 ; 1 2 345; 12 3 45;
       1 ... 234_235 <236> 237 ; 1 ... 235 236 <237> ; 
       1 2 <3> 4 ;
    */
    #ye ma xian shi.
    $jiange=2;#ye ma jian ge.
    if (!is_integer($jiange) && $jiange<1){$jiange=2;}# jian ge bu xiao yu 1,qie wei zhengshu.
    #case 1
    if ($pageNow - $jiange - 1 - 1 > 0 && $pageNumb -$jiange -1 -1 >$pageNow){ # 前面有首页1、$jiange定义的间隔页码、和它本身。
    echo " <a href=\"?page=1\" >1</a> " ;
    echo "<span class=\"extend\">...</span> ";
    for ($num = $pageNow - $jiange ;$num<$pageNow;$num++){
    echo "<a href=\"?page=$num\">$num</a> ";
    }
    echo "<span class=\"current\">$pageNow</span>"; #当前页
    for ($num = $pageNow + 1 ; $num<=$pageNow + $jiange ;$num++){
    echo "<a href=\"?page=$num\">$num</a> ";
    }
    $num = $pageNow + 1;
    echo "<span class=\"extend\">...</span> ";
    echo "<a href=\"?page=$pageNumb\"> $pageNumb</a>"; 
    }
    #case 2
    if ($pageNow - $jiange - 1 - 1 <= 0 && $pageNumb -$jiange -1 -1 >$pageNow){ # 到首页的间隔页少于等于定义间隔值。前面的页码全输出。后连续输出间隔页码。
    for($i=1;$i<=$pageNow + $jiange ;$i++){
    if($i==$pageNow){
    echo "<span class=\"current\">$pageNow</span>"; #当前页
    }else {echo "<a href=\"?page=$i\"> $i</a>"; }
    }
    echo "<span class=\"extend\">...</span> ";
    echo "<a href=\"?page=$pageNumb\"> $pageNumb</a>"; 
    }
    #case 3
    if ($pageNow - $jiange - 1 - 1 > 0 && $pageNumb -$jiange -1 -1 <=$pageNow){
    echo " <a href=\"?page=1\" >1</a> " ;
    echo "<span class=\"extend\">...</span> ";
    for ($num = $pageNow - $jiange ;$num<$pageNow;$num++){
    echo "<a href=\"?page=$num\">$num</a> ";
    }
    echo "<span class=\"current\">$pageNow</span>"; #当前页
    for ($num = $pageNow + 1 ; $num<=$pageNumb;$num++){
    echo "<a href=\"?page=$num\">$num</a> ";
    }
    }
    #case 4 
    if ($pageNow - $jiange - 1 - 1 <= 0 && $pageNumb -$jiange -1 -1 <=$pageNow){ # 
    for($i=1;$i<=$pageNumb ;$i++){
    if($i==$pageNow){
    echo "<span class=\"current\">$pageNow</span>"; #当前页
    }else {echo "<a href=\"?page=$i\"> $i</a>"; }
    }
    #echo "<span class=\"extend\">...</span> ";
    #echo "<a href=\"?page=$pageNumb\"> $pageNumb</a>"; 
    }

    更多PHP相关知识,请访问PHP教程

    以上就是php页码怎么实现的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php
    上一篇:php判断两个字符串是否相等 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• PHP判断是不是数字• php判断是不是日期• php页面不提示报错• php判断两个字符串是否相等
    1/1

    PHP中文网