请选择 进入手机版 | 继续访问电脑版
绿茶科技社区

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
网页的分页选择效果直接影响用户的使用体验。类似功能的方法有很多,我在这里写的方法主要是的优势在于前后端分离,可以自己定义长度和分页的行数
测试图例:

效果图:

实现代码:
  1. /**
  2.    *
  3.    * @param $page   页码(1至正无穷)
  4.    * @param $num   数据中多上行为一页
  5.    * @param $rows   数据的总行数
  6.    * @param $length  下标的最大长度
  7.    * @return array
  8.    */
  9.   public function PageDate($page, $num , $rows , $length){
  10.     //初始化数据
  11.     $MaxPage = 0;         //最大页码
  12.     $MinPage = 0;         //最小页码
  13.     $ServerPage = 0;        //下拉框中显示的页码
  14.     $PageData = array();      //全部的页码集合(用户下拉框选择)
  15.     $PageShowData = array();    //用于显示下标的页码集合
  16.     $page = intval($page);
  17.    
  18.     if($rows == 0){
  19.       return $data = array(
  20.         'page' => $page,
  21.         'MaxPage' => $MaxPage,
  22.         'MinPage' => $MinPage,
  23.         'ServerPage' => $ServerPage,
  24.         'PageData' => $PageData,
  25.         'PageShowData' => $PageShowData
  26.       );
  27.     }
  28.    
  29.     //得到最大分页和最小分页
  30.     $MaxPage = intval($rows / $num);
  31.     $double = $rows % $num;
  32.     if($double > 0.000000001)
  33.     {
  34.       $MaxPage += 1;
  35.     }
  36.     $MinPage = 1;
  37.     $ServerPage = 1;
  38.     //得到页码的全部项目
  39.     for($i = 1; $i <= $MaxPage; $i++ ){
  40.       $PageData[$i] = $i;
  41.     }
  42.     //对页码进行正确性改正
  43.     if($page < $MinPage){
  44.       $page = 1;
  45.     }
  46.    
  47.     if($page > $MaxPage){
  48.       $page = 1;
  49.     }
  50.     /*生成显示的页码标签*/
  51.       //生成左侧的代码快
  52.       if($page == $MinPage){
  53.         $PageShowData[1] = $page;
  54.       }
  55.       if($page > $MinPage){
  56.         $PageShowData[1] = $MinPage;
  57. //        $PageShowData[2] = $page - 1; // <<
  58.         $PageShowData[2] = '<<'; // <<
  59.         if($page -2 > $MinPage ){
  60.           $PageShowData[3] = $page - 2;
  61.           $PageShowData[4] = $page - 1;
  62.         }elseif($page -2 == $MinPage){
  63.           $PageShowData[3] = $page - 1;
  64.         }
  65.         //确定选中的页码代码快
  66.         $PageShowData[count($PageShowData) + 1] = $page;
  67.       }
  68.     $COUNT = count($PageShowData) + 1;
  69.     //生成右侧的代码块
  70.       if($page == $MaxPage){
  71.         return $data = array(
  72.           'page' => $page,
  73.           'MaxPage' => $MaxPage,
  74.           'MinPage' => $MinPage,
  75.           'ServerPage' => $ServerPage,
  76.           'PageData' => $PageData,
  77.           'PageShowData' => $PageShowData
  78.         );
  79.       }
  80.       if($page < $MaxPage) {
  81.         if($MaxPage - $page >= 2){
  82.           $j = 1;
  83.           for($i = $COUNT; $i <= $length ; $i++){
  84.             $PageShowData[$i] = $page + $j;
  85.             $j ++;
  86.             if($PageShowData[$i] == $MaxPage -1){
  87.                  break;
  88.               }
  89.           }
  90.         }
  91.    
  92.         $COUNT = count($PageShowData) + 1;
  93. //        $PageShowData[$COUNT] = $page + 1; //>>
  94.         $PageShowData[$COUNT] = '>>';
  95.         $PageShowData[$COUNT + 1] = $MaxPage;
  96.    
  97.         //得到选中的参数
  98.         $ServerPage = $PageShowData[$COUNT-1] + 1;
  99.         if($ServerPage > $MaxPage){
  100.           $ServerPage = 1;
  101.         }
  102.    
  103.         return $data = array(
  104.           'page' => $page,
  105.           'MaxPage' => $MaxPage,
  106.           'MinPage' => $MinPage,
  107.           'ServerPage' => $ServerPage,
  108.           'PageData' => $PageData,
  109.           'PageShowData' => $PageShowData
  110.         );
  111.       }
  112.   }
复制代码




分享到 :
0 人收藏

2 个回复

倒序浏览
Dragon龙  高级会员 | 2019-1-16 10:55:42
支持,赞一个
WizardWu  高级会员 | 2019-2-14 09:30:07
求沙发
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

举报|Archiver|手机版|小黑屋|Lvchakeji Inc.  

Powered by Discuz! X3.3 © 2001-2016 Comsenz Inc.

返回顶部