文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>一种分页导航样式的实现

一种分页导航样式的实现

时间:2006-07-22  来源:一地风飞

本文介绍的分页样式效果描述如下:
只显示第一页,最后页,当前页,及当前页的前两页,当前页的后两页导航,中间用..代替
例:假设总页数为20
当前页是10,则显示如下:
1..8 9 10 11 12..20
当前页18,显示为:
1..16 17 18 19 20
当前为第2页,显示为:
1 2 3 4..20

实现方法:

$pages = 20; //总页数
$cpage = 10; //当前页
foreach(range(1,$pages) as $v){
    if($v!=1 && $v$cpage+2) $pager[] = '-';
    else $pager[] = $v;
}
$pager = array_unique($pager);

上述代码返回一个数组$pager,该数组保存了要显示的页码数字,而要省略的则用0和'-'代替,之后,便可直接循环显示结果或使用模板引擎来解析显示出实际效果,下面用smarty演示:
{foreach item=item from=$pager}
{if $item eq 0 || $item eq '-'}..
{else}
{$item}
{/if}
{/foreach}
当然,你也可以使用自定义的样式去美化显示结果
关于分页的几点注意:
1)分页的处理最后与数据库处理分离,分页操作只接受必要的参数:如总页数(或总纪录数),当前页等.
2)如果是对查询搜索等的结果分页,要注意post变量的再传递,否则,翻页后,查询结果会丢失
修改:
经实践测试,上述的方法由于循环了所有页码,当页数很大时,效率有时显的下降,改成下面的方法,效率不错,而且不受页数的影响:

$pager[] = 1;
if($cpage > 4) $pager[] = '-';
foreach(range($cpage-2,$cpage+2) as $v){
    if($v>1 && $v $pages) $pager[] = $v;
}
if($cpage $pages-3) $pager[] = '-';
$pager[] = $pages;


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载