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

新闻分页下标生成

程序员文章站 2022-04-30 18:10:36
...
后台生成装有下标页码的数组,到网页上打印出来(可以定义下标页码的长度)

1. [代码]后台页码下标生成

/**
     *分页下标生成
     * 
     * @param $page    页码
     * @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
                );
            }

    }

2. [图片] 截图1453701874.png


新闻分页下标生成

3. [图片] lALOBuS0o80BT80D3w_991_335.png

新闻分页下标生成