自己写的简单一个分页函数

森森 2009-11-30 42 views

几乎任何PHP项目都要用到分页程序,这里自己写了一个,以便自己重复使用的分页函数,比较简单。

先看看测试效果吧:http://blog.yuing.cn/demo/page_test.php

再上代码:

PHP部分
/**
 * 初始化分页
 * Coded By Jenen.WangSen http://blog.yuing.cn
 *
 * 使用$_GET['page']区分页数
 *
 * @param Templet $tpl
 * @param Number $page
 * @param Number $perpage
 * @param Number $count
 */
function init_pages($page=1, $perpage, $count){
 function build_page($uri, $n, $sel = false, $alias = ''){
  $uri['page'] = 'page='.$n;
  $alias = $alias?$alias:$n;
  $url = 'http://'.$_SERVER['HTTP_HOST'].'/'.$_SERVER['PHP_SELF'].'?'.implode('&', $uri);
  return '<a href="'.$url.'">'.$alias.'</a>';
 }
 $perloop = 5;
 $page_count = ceil($count / $perpage);
 $out = '';
 if ($page_count>1){
  $uri = array();
  foreach ($_GET as $key=>$val){
   $uri[$key] = $key.'='.$val;
  }
  $page_prev = $page-1<1?1:$page-1;
  $page_next = $page+1<=$page_count?$page+1:$page_count;
  $loop_start = $page - $page % $perloop - 1;
  $loop_start = $loop_start>0?$loop_start:1;
  if ($page_count-$loop_start>=$perloop+3){
   $out.=build_page($uri, $page_prev, false, '上一页');
   $out.=build_page($uri, $page_next, false, '下一页');
   ($loop_start>1)&&$out.=build_page($uri, 1, false, '首页');
   for ($i=$loop_start;$i<=$loop_start+$perloop+1;$i++) $out.=build_page($uri, $i, $i==$page);
   $out .= '..';
   for ($i=$page_count-1;$i<=$page_count;$i++) $out.=build_page($uri, $i, $i==$page);
  }else {
   $loop_end = $page_count-($perloop+3)<1?1:$page_count-($perloop+3);
   for ($i=$page_count;$i>=$loop_end;$i--) $out = build_page($uri, $i, $i==$page).$out;
   ($loop_start>1&&$page_count>$perloop+3)&&$out=build_page($uri, 1, false, '首页').$out;
   $out=build_page($uri, $page_next, false, '下一页').$out;
   $out=build_page($uri, $page_prev, false, '上一页').$out;
  }
 }
 return $out;
}

$perpage = 10;
$count = 1000;
$page = isset($_GET['page'])?intval($_GET['page']):1;
echo init_pages($page, $perpage, $count);

Tags: , / Posted in PHP应用
欢迎订阅: Google Reader | 鲜果 | 抓虾 | 九点 | QQ邮箱 | 有道 | 更多

评论暂缺

  • (Required)
  • (Required, will not be published)

友情链接

Design By CKSKY TEAM VERSION 3.0 他说博客不用备案... © Copyright 2010 All Rights Reserved