自己写的简单一个分页函数
几乎任何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);


欢迎订阅:
最新评论
热评文章