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
 
                );
 
            }
 
    }

例子二

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

情况如下:




这是分了15页,假如更多呢,不感想象,自己辛苦花钱做出来的模板就完全走样了!

改后效果:

1

2

3

修改方法:

在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<=$totalPage;$i++)为for($i=$d;$i<=$totallist;$i++)

这个是静态页面分页的修改,动态的和这个方法一样

时间: 2024-11-29 16:16:09

PHP生成分页下标生成例子的相关文章

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

测试图例: 效果图: 实现代码: /** * * @param $page 页码(1至正无穷) * @param $num 数据中多上行为一页 * @param $rows 数据的总行数 * @param $length 下标的最大长度 * @return array */ public function PageDate($page, $num , $rows , $length){ //初始化数据 $MaxPage = 0; //最大页码 $MinPage = 0; //最小页码 $Serv

超长文章内容如何进行分页并生成HTML文件?

分页|生成html 以下是程序源代码:<%  dim fname,fso,fout,htmlcode  dim htmlbody,htmlbody1,page_n  htmlbody=request.form("body")  page_n=len(htmlbody)-len(replace(htmlbody,"$",""))  '生成文件名的函数  function makefilename(fname)  fname = fname 

excel表格自动生成分页小计的方法

  excel表格自动生成分页小计的方法           如下图所示的数据表,需要完成分页小计功能.(每5行一页) 操作步骤: 步骤1 :在最前面插入一列,在2至6行输入1,7至11行输入2.然后先取A2:A11,双击右下角向下填充,填充方式为复制单元格. 步骤2:选取整个数据表,数据 - 分类汇总 ,在打开的分类汇总窗口中,汇总项选数量和金额.另外还要选中"每组数据分页"的选项. 设置完成后即完成自动分页小计的设置,如下图所示.

帮忙看下这个分页为什么生成的数据是乱的呢?

问题描述 <%@LANGUAGE="VBscript"CODEPAGE=65001%><%OptionExplicitResponse.Charset="UTF-8"Response.Buffer=TrueSession.CodePage=65001'----------------------------------------------------------------------------------'本页:'列表生成处理页面'说明:'

Asp.Net之JS生成分页条的方法_javascript技巧

Default.aspx.cs中的代码 protected int pageIndex = 1; protected int pageSize = 10; protected int pageCount = 100; protected string name = string.Empty; protected void Page_Load(object sender, EventArgs e) { int.TryParse(Request.QueryString["pageIndex"

php文章内容分页并生成对应的htm静态文件实例

php教程 文章内容分页并生成对应的htm静态文件实例 $tmpBody = "fjka;fjsa;{page}批量生成分成文件并且加上分页代码";         $tmpUrl = 'www.jzread.com';     $tmpUrlarray = explode('.',$url);         $tmpArray = explode('{page}',$tmpBody);     $total = count($tmpArray);         if( $tota

GridView用存储过程自定义分页分页的完整例子

问题描述 谁有GridView用存储过程自定义分页分页的完整例子(C#)给一个 解决方案 解决方案二:datalist,repeater存储过程分页带1,2,3,4,5,6,7导航的记住把分都给我哦存储过程:直接复制进去CREATEprocup_GetTopicList@a_TableListVarchar(200),@a_TableNameVarchar(30),@a_SelectWhereVarchar(500),@a_SelectOrderIdVarchar(20),@a_SelectOr

求人帮写自动生成试卷和生成WORD 很急 在线等

问题描述 我在做一个VB.NET和SQLSERVER的题库管理系统毕业设计其他功能模块都已经完成,就差最后的自动生成试卷和把生成的试卷生成WORD文档,并可以选择存放的文件夹因为实力有限,明天要交,想找看看有没有人愿意帮我完成...需要用的表有三个:1.课程表:系别名课程名2.章节表:章节名3.试题表:题号题型章节难度分值题目答案选中4题型表:题号题型分值通过建立三个commobox来分别连接课程表的系别名课程名2.章节表的:章节名通过系别名和课程名值来确定确定选题的范围,通过章节名来确定所选的

java-求帮助,如何关闭Eclipse生成类时自动生成的构造方法

问题描述 求帮助,如何关闭Eclipse生成类时自动生成的构造方法 我这找了好长时间实在是不知道在哪里设置,哪位好心人帮忙回答一下呗 解决方案 eclipse中创建java类的时候:去掉Constructors from superclass前面的勾选 解决方案二: http://developer.51cto.com/art/200906/132322.htm 解决方案三: 你这个是什么版本的?还有如此功能. 解决方案四: 解决方案五: 创建是,去掉Constructors from supe