网页的分页下标生成代码(PHP后端方法)

5年以前  |  阅读数:696 次  |  编程语言:PHP 

测试图例:

效果图:

实现代码:


     /**
       *
       * @param $page   页码(1至正无穷)
       * @param $num   数据中多上行为一页
       * @param $rows   数据的总行数
       * @param $length  下标的最大长度
       * @return array
       */
      public function PageDate($page, $num , $rows , $length){
        //初始化数据
        $MaxPage = 0;         //最大页码
        $MinPage = 0;         //最小页码
        $ServerPage = 0;        //下拉框中显示的页码
        $PageData = array();      //全部的页码集合(用户下拉框选择)
        $PageShowData = array();    //用于显示下标的页码集合
        $page = intval($page);

        if($rows == 0){
          return $data = array(
            'page' => $page,
            'MaxPage' => $MaxPage,
            'MinPage' => $MinPage,
            'ServerPage' => $ServerPage,
            'PageData' => $PageData,
            'PageShowData' => $PageShowData
          );
        }

        //得到最大分页和最小分页
        $MaxPage = intval($rows / $num);
        $double = $rows % $num;
        if($double > 0.000000001)
        {
          $MaxPage += 1;
        }
        $MinPage = 1;
        $ServerPage = 1;
        //得到页码的全部项目
        for($i = 1; $i <= $MaxPage; $i++ ){
          $PageData[$i] = $i;
        }
        //对页码进行正确性改正
        if($page < $MinPage){
          $page = 1;
        }

        if($page > $MaxPage){
          $page = 1;
        }
        /*生成显示的页码标签*/
          //生成左侧的代码快
          if($page == $MinPage){
            $PageShowData[1] = $page;
          }
          if($page > $MinPage){
            $PageShowData[1] = $MinPage;
    //        $PageShowData[2] = $page - 1; // <<
            $PageShowData[2] = '<<'; // <<
            if($page -2 > $MinPage ){
              $PageShowData[3] = $page - 2;
              $PageShowData[4] = $page - 1;
            }elseif($page -2 == $MinPage){
              $PageShowData[3] = $page - 1;
            }
            //确定选中的页码代码快
            $PageShowData[count($PageShowData) + 1] = $page;
          }
        $COUNT = count($PageShowData) + 1;
        //生成右侧的代码块
          if($page == $MaxPage){
            return $data = array(
              'page' => $page,
              'MaxPage' => $MaxPage,
              'MinPage' => $MinPage,
              'ServerPage' => $ServerPage,
              'PageData' => $PageData,
              'PageShowData' => $PageShowData
            );
          }
          if($page < $MaxPage) {
            if($MaxPage - $page >= 2){
              $j = 1;
              for($i = $COUNT; $i <= $length ; $i++){
                $PageShowData[$i] = $page + $j;
                $j ++;
                if($PageShowData[$i] == $MaxPage -1){
                     break;
                  }
              }
            }

            $COUNT = count($PageShowData) + 1;
    //        $PageShowData[$COUNT] = $page + 1; //>>
            $PageShowData[$COUNT] = '>>';
            $PageShowData[$COUNT + 1] = $MaxPage;

            //得到选中的参数
            $ServerPage = $PageShowData[$COUNT-1] + 1;
            if($ServerPage > $MaxPage){
              $ServerPage = 1;
            }

            return $data = array(
              'page' => $page,
              'MaxPage' => $MaxPage,
              'MinPage' => $MinPage,
              'ServerPage' => $ServerPage,
              'PageData' => $PageData,
              'PageShowData' => $PageShowData
            );
          }
      }

本文出自 IT985博客

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例