Home  >  Article  >  php教程  >  页码自动适应范围的分页代码

页码自动适应范围的分页代码

WBOY
WBOYOriginal
2016-06-21 08:57:461077browse

效果图:

记得以前看到过一个页码方式的分页效果,页码数多了折行继续显示一直到60多页,呵呵!有点影响美观!

于是写了一个,可以自动适应范围的页码分页程序
也就是说,页码格式如下
4 5 6 7 > >>
9 10 11 12 > >>
下划线为当前页,这样就可以固定显示一个相近的页码,避免太长影响美观
代码加了注释,主要是新手看看,呵呵 ,写这个函数,没有考虑表现结构分离问题,高手就不要追究了!

复制内容到剪贴板

代码:
<?php <br/>function page($page,$total,$phpfile,$pagesize=10,$pagelen=7){<br>    $pagecode = '';//定义变量,存放分页生成的HTML<br>    $page = intval($page);//避免非数字页码<br>    $total = intval($total);//保证总记录数值类型正确<br>    if(!$total) return array();//总记录数为零返回空数组<br>    $pages = ceil($total/$pagesize);//计算总分页<br>    //处理页码合法性<br>    if($page    if($page>$pages) $page = $pages;<br>    //计算查询偏移量<br>    $offset = $pagesize*($page-1);<br>    //页码范围计算<br>    $init = 1;//起始页码数<br>    $max = $pages;//结束页码数<br>    $pagelen = ($pagelen%2)?$pagelen:$pagelen+1;//页码个数<br>    $pageoffset = ($pagelen-1)/2;//页码个数左右偏移量<br>    <br>    //生成html<br>    $pagecode='<div class="page">';<br>    $pagecode.="<span>$page/$pages</span>";//第几页,共几页<br>    //如果是第一页,则不显示第一页和上一页的连接<br>    if($page!=1){<br>        $pagecode.="<a href="%5C%22%7B%24phpfile%7D?page=1%5C%22">";//第一页<br>        $pagecode.="</a><a href="%5C%22%7B%24phpfile%7D?page=%22.(%24page-1).%22%5C%22">";//上一页<br>    }<br>    //分页数大于页码个数时可以偏移<br>    if($pages>$pagelen){<br>        //如果当前页小于等于左偏移<br>        if($page            $init=1;<br>            $max = $pagelen;<br>        }else{//如果当前页大于左偏移<br>            //如果当前页码右偏移超出最大分页数<br>            if($page+$pageoffset>=$pages+1){<br>                $init = $pages-$pagelen+1;<br>            }else{<br>                //左右偏移都存在时的计算<br>                $init = $page-$pageoffset;<br>                $max = $page+$pageoffset;<br>            }<br>        }<br>    }<br>    //生成html<br>    for($i=$init;$i        if($i==$page){<br>            $pagecode.='<span>'.$i.'</span>';<br>        } else {<br>            $pagecode.="</a><a href="%5C%22%7B%24phpfile%7D?page=%7B%24i%7D%5C%22">$i</a>";<br>        }<br>    }<br>    if($page!=$pages){<br>        $pagecode.="<a href="%5C%22%7B%24phpfile%7D?page=%22.(%24page+1).%22%5C%22">></a>";//下一页<br>        $pagecode.="<a href="%5C%22%7B%24phpfile%7D?page=%7B%24pages%7D%5C%22">>></a>";//最后一页<br>    }<br>    $pagecode.='</div>';<br>    return array('pagecode'=>$pagecode,'sqllimit'=>' limit '.$offset.','.$pagesize);<br>}<br>?>函数参数:
$page 当前$_GET获得的页码
$total 总记录数
$phpfile 页码连接文件名
$pagesize 不用解释了吧 呵呵
$pagelen 最多显示几个页码 注意(奇数),对称嘛!
函数返回一个数组:
pagecode 索引对应的内容是 生成的HTML 代码
sqllimit 索引对应的是sql limit 后缀

使用方法:

复制内容到剪贴板

代码:
<?php <br/>$phpfile = 'index.php';<br>$page= isset($_GET['page'])?$_GET['page']:1;<br>$db = new Mysql();<br>$counts = $db->counts('select `id` from `test`');<br>$sql='select `id`,`title` from `test`';<br>$getpageinfo = page($page,$counts,$phpfile);<br>$sql.=$getpageinfo['sqllimit'];<br>$data = $db->getRows($sql);<br>?><br><?php <br/>echo $getpageinfo['pagecode'];//显示分页的html代码<br>?>补贴css

复制内容到剪贴板

代码:

<style type="text/css"><br/>body&#123;font-family:Tahoma;&#125;<br/>.page&#123;padding:2px;font-weight:bolder;font-size:12px;&#125;<br/>.page a&#123;border:1px solid #ccc;padding:0 5px 0 5px;margin:2px;text-decoration:none;color:#333;&#125;<br/>.page span&#123;padding:0 5px 0 5px;margin:2px;background:#09f;color:#fff;border:1px solid #09c;&#125;<br/></style>

 

<font face="Verdana">以下是HTML网页特效代码,点击运行按钮可查看效果:<p class="UBBContainer"></p> <p class="UBBTitle"> 以下是程序代码</p> <p class="UBBContent"><textarea rows="8" id="CodeText33417" class="UBBText"><style type="text/css"> .page &#123; width:auto; height:auto &#125; .page ul &#123; list-style:none; paddingL0; margin:0 &#125; .page li &#123; width:auto; height:20px; line-height:20px; float:left; margin-right:2px; color:#000; display:block; font-size:12px &#125; .page li a &#123; width:auto; height:20px; line-height:20px; border:1px solid #CCC; float:left; margin-right:2px; color:#000; TEXT-DECORATION: none; display:block; padding:0 5px; font-size:12px &#125; .page li a:hover &#123; background:blue; color:white; TEXT-DECORATION: none; border:1px solid blue &#125; </style> <div class="page"> <ul> <li><a href="#">1</a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> <li><a href="#">4</a></li> <li><a href="#">5</a></li> <li><a href="#">6</a></li> <li><a href="#">7</a></li> <li><a href="#">8</a></li> <li><a href="#">9</a></li> <li><a href="#">10</a></li> <li><a href="#">11</a></li> <li><a href="#">12</a></li> <li><a href="#">13</a></li> <li><a href="#">14</a></li> <li><a href="#">15</a></li> </ul> </div></textarea></p></font> 欢迎访问阿里西西网页特效代码站,js.alixixi.com

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn