自己用的一个Smarty的分页函数
时间:2008-07-27
来源:互联网
复制PHP内容到剪贴板
<?php
//PAGE : $total总页数 $per每页显示条数 $show 列表条数
function count_page($total = 0 , $per )
{
$page_out = array(
'page_first' => '', //首页
'page_last' => '', //末页
'page_str' => '' , //分页
'now_page' => 1 , //当前页
'offset' => 0, //偏移量
);
$page_count = ceil($total / $per); //总页数
if($page_count <= 1){
return $page_out;
}
$page_out['now_page'] = @$_GET['page'] + 0;
if($page_out['now_page'] < 1){
$page_out['now_page'] = 1;
} elseif($page_out['now_page'] > $page_count){
$page_out['now_page'] = $page_count;
}
$page_out['offset'] = ($page_out['now_page'] - 1) * $per;
//URL正则
$SELF = "[url=http://{$_SERVER[]http://{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF'[/url]]}?";
@$QUERY = $_SERVER['QUERY_STRING'];
$query_page = preg_replace(array("!((&|^)page=([^&]+))|(page=)!" , "!(^&)|[&]{2,}|([&]$)!") , array('' , '') , $QUERY);
$query_page = $SELF . $query_page . ($query_page ? "&" : "");
/*first page*/
$page_out['page_first'] = '1';
if($page_out['page_first'] == $page_out['now_page']){
$page_out['page_first'] = '<li class="previous-off"><<首页</li>';
}else{
$page_out['page_first'] = '<li><a href="?page=1"><<首页</a></li>';
}
/*last page*/
$page_out['page_last'] = $page_count;
if($page_out['page_last'] == $page_out['now_page']){
$page_out['page_last'] = '<li class="next-off"">尾页>></li>';
}else{
$page_out['page_last'] = '<li><a href="?page=' . $page_count. '">尾页>></a></li>';
}
//限制分页 2008-6-2 Edit
$pageleft = $page_out['now_page'] >= 4 ? $page_out['now_page'] - 4 : 1;
$pageright = $page_out['now_page'] + 4 <= $page_count ? $page_out['now_page'] + 4 : $page_count;
for($i = $pageleft; $i <= $pageright; $i++) {
if($i == $page_out['now_page']){
$page_out['page_str'] .= '<li class="active">' . $i . '</li>';
} else {
$page_out['page_str'] .= '<li><a href="' . $query_page . 'page=' . $i . '">' . $i . '</a></li>';
}
}
return $page_out;
}
?>
PHP代码:
<?php
//PAGE : $total总页数 $per每页显示条数 $show 列表条数
function count_page($total = 0 , $per )
{
$page_out = array(
'page_first' => '', //首页
'page_last' => '', //末页
'page_str' => '' , //分页
'now_page' => 1 , //当前页
'offset' => 0, //偏移量
);
$page_count = ceil($total / $per); //总页数
if($page_count <= 1){
return $page_out;
}
$page_out['now_page'] = @$_GET['page'] + 0;
if($page_out['now_page'] < 1){
$page_out['now_page'] = 1;
} elseif($page_out['now_page'] > $page_count){
$page_out['now_page'] = $page_count;
}
$page_out['offset'] = ($page_out['now_page'] - 1) * $per;
//URL正则
$SELF = "[url=http://{$_SERVER[]http://{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF'[/url]]}?";
@$QUERY = $_SERVER['QUERY_STRING'];
$query_page = preg_replace(array("!((&|^)page=([^&]+))|(page=)!" , "!(^&)|[&]{2,}|([&]$)!") , array('' , '') , $QUERY);
$query_page = $SELF . $query_page . ($query_page ? "&" : "");
/*first page*/
$page_out['page_first'] = '1';
if($page_out['page_first'] == $page_out['now_page']){
$page_out['page_first'] = '<li class="previous-off"><<首页</li>';
}else{
$page_out['page_first'] = '<li><a href="?page=1"><<首页</a></li>';
}
/*last page*/
$page_out['page_last'] = $page_count;
if($page_out['page_last'] == $page_out['now_page']){
$page_out['page_last'] = '<li class="next-off"">尾页>></li>';
}else{
$page_out['page_last'] = '<li><a href="?page=' . $page_count. '">尾页>></a></li>';
}
//限制分页 2008-6-2 Edit
$pageleft = $page_out['now_page'] >= 4 ? $page_out['now_page'] - 4 : 1;
$pageright = $page_out['now_page'] + 4 <= $page_count ? $page_out['now_page'] + 4 : $page_count;
for($i = $pageleft; $i <= $pageright; $i++) {
if($i == $page_out['now_page']){
$page_out['page_str'] .= '<li class="active">' . $i . '</li>';
} else {
$page_out['page_str'] .= '<li><a href="' . $query_page . 'page=' . $i . '">' . $i . '</a></li>';
}
}
return $page_out;
}
?>
复制PHP内容到剪贴板
/*PAGE*/
#page li { border:0; margin:0; padding:0; font-size:11px; list-style:none; /* savers */ float:left; }
#page a { border:solid 1px #9aafe5; margin-right:2px; }
#page .previous-off,#page .next-off { border:solid 1px #DEDEDE; color:#888888; display:block; float:left; font-weight:bold; margin-right:2px; padding:3px 4px; }
#page .next a,#page .previous a { font-weight:bold; }
#page .active { background:#2e6ab1; color:#FFFFFF; font-weight:bold; display:block; float:left; padding:4px 6px; /* savers */ margin-right:2px; }
#page a:link,#page a:visited { color:#0e509e; display:block; float:left; padding:3px 6px; text-decoration:none; }
#page a:hover{ border:solid 1px #0e509e; }
PHP代码:
CSS 文件/*PAGE*/
#page li { border:0; margin:0; padding:0; font-size:11px; list-style:none; /* savers */ float:left; }
#page a { border:solid 1px #9aafe5; margin-right:2px; }
#page .previous-off,#page .next-off { border:solid 1px #DEDEDE; color:#888888; display:block; float:left; font-weight:bold; margin-right:2px; padding:3px 4px; }
#page .next a,#page .previous a { font-weight:bold; }
#page .active { background:#2e6ab1; color:#FFFFFF; font-weight:bold; display:block; float:left; padding:4px 6px; /* savers */ margin-right:2px; }
#page a:link,#page a:visited { color:#0e509e; display:block; float:left; padding:3px 6px; text-decoration:none; }
#page a:hover{ border:solid 1px #0e509e; }
复制PHP内容到剪贴板
<?php
$page_info = count_page($total , PER_PAGE );//分页参数
$smarty->assign('page_first' , $page_info['page_first']);
$smarty->assign('page_last' , $page_info['page_last']);
$smarty->assign('page_str' , $page_info['page_str']);
$sql = "SELECT * FROM `news` ORDER BY `id` DESC LIMIT {$page_info['offset']} , " . PER_PAGE;
?>
效果如图:PHP代码:
<?php
$page_info = count_page($total , PER_PAGE );//分页参数
$smarty->assign('page_first' , $page_info['page_first']);
$smarty->assign('page_last' , $page_info['page_last']);
$smarty->assign('page_str' , $page_info['page_str']);
$sql = "SELECT * FROM `news` ORDER BY `id` DESC LIMIT {$page_info['offset']} , " . PER_PAGE;
?>
[ 本帖最后由 phpcaicai 于 2008-7-27 13:41 编辑 ]
作者: phpcaicai 发布时间: 2008-07-27
分页和smarty的关系很大么,只是一个输出,离开了smarty,直接echo都可以
支持下,顶顶顶
支持下,顶顶顶
作者: 海底的鱼 发布时间: 2008-07-28
楼主说的非常不错!
作者: jia2188 发布时间: 2008-07-28
这不是php杂志第三期留言本实例中的一个函数?!
作者: alphalwei 发布时间: 2008-07-29
g
作者: 508z 发布时间: 2008-07-30
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28