php分页查询mysql|PHP生成分页下标生成例子

更新时间:2020-04-18    来源:mysql教程    手机版     字体:

【www.bbyears.com--mysql教程】

例子一

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


  测试图例: 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
 
                );
 
            }
 
    }

例子二

这样在某些情况下会严重影响页面的布局,而且文章页面过多全部显示出来的话 ,也会影响用户体验,因此这篇教程围绕dede分页数量无法控制的问题,以修改{dede:pagebreak/}标签为主进行讲解。

情况如下:


dede系统的pagebreak文章页面分页数量控制方法 - 第1张  jquery1113039202655479582715="6" tangram_guid="TANGRAM_9" data-bd-imgshare-binded="1" src="http://filesimg.111cn.net/2016/01/26/20160126135725195.jpg" />
这是分了15页,假如更多呢,不感想象,自己辛苦花钱做出来的模板就完全走样了! 改后效果: 1
dede系统的pagebreak文章页面分页数量控制方法 - 第2张  jquery1113039202655479582715="7" tangram_guid="TANGRAM_10" data-bd-imgshare-binded="1" src="http://filesimg.111cn.net/2016/01/26/20160126135727250.jpg" /> 2
dede系统的pagebreak文章页面分页数量控制方法 - 第3张  3
dede系统的pagebreak文章页面分页数量控制方法 - 第4张  修改方法: 在include/arc.archives.class.php这个类,这个主是来解析文章内容的类
找到 function GetPagebreak($totalPage,$nowPage,$aid) 这是一个静态分页解析的一个方法,在这个方法里找到:for($i=1;$i<=$totalPage$i++) 在这个循环前面加上 : if($totalPage>=8){//这个是在分页数量大于的情况下执行下面的语句
$totallist=7+$nowPage;//这里是要显示几页,如果是10页就写9
if($totallist>$totalPage){
$totallist=$totalPage;
}
$d=$nowPage;
$dqys=$totallist-($d-1);
if($dqys<8){
$d=$totalPage-7;
}
}else{
$totallist=$totalPage;
$d=1;
} 然后再改
for($i=1;$i

本文来源:http://www.bbyears.com/shujuku/92779.html

热门标签

更多>>

本类排行