最新消息:文章中包含代码时,请遵守代码高亮规范!

网页的分页下标生成(PHP后端方法)【原创】

PHP Jay 1712浏览 0评论

55

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


 

测试图例:

11111

 


 

效果图:
截图1453701874




 /**

     * 

     * @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

                );

            }

    }

转载时请注明出处及相应链接,本文永久地址:http://blog.it985.com/15378.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者Jay的打赏,我们会更加努力!    如果您想成为作者,请点我

您必须 登录 才能发表评论!