欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-09 17:29:04
测试图例: 效果图: 实现代码: /** * * @param $page 页码(1至正无穷) * @param $nu...

测试图例:

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

效果图:

网页的分页下标生成代码(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博客