交流: 一个我经常用的分页函数

340004 2004-01-28 03:46:22
/**
* Function: listpage($$$)
* AboutIt: 分页示例
* @return: HTML Page list
* Author: Aren Liu QQ:340004 2002/10/
*/
//这里用到了第三个参数,一个特殊需要,你可以理解为屏蔽总页数
//当然,这第三个参数一般不用:)_
function listpage($num,$prog,$real_num=0) {
global $list_num,$list_page_num,$page,$spn;

$RETURNS = "";
if(empty($spn) || (!isset($spn))) $spn = 1; // 起始拆分页
if(empty($page) || (!isset($page))) $page = 1;

$all_pnum = ceil($num/$list_num); // 总页数
if($all_pnum <= 1) {
if ($num == 0) $page = 0;
if ($real_num>0) $num=$real_num;
$RETURNS .= " 共有 <b>$num</b> 条记录,共 <b>$all_pnum</b> 页,第 <b>$page</b> 页\n";
return $RETURNS;
}

$split_pnum = ceil($all_pnum/$list_page_num); // 总拆分页数

$page = (int) $page;

if($page < 1 || $page >$all_pnum) {
$page = 1;
}

if($spn > $split_pnum) $spn = $split_pnum;
if($spn < 1) $spn = 1;

if(($all_pnum - ($spn - 1) * $list_page_num) > $list_page_num) { // 设置显示页数
$showpages = $list_page_num;
} else {
$showpages = $all_pnum - ($spn - 1) * $list_page_num;
}
// 样式: |< << 1 2 3 4 5 6 >> >|
if($spn > 1) {
$RETURNS .= "<a href=$prog&page=1&spn=1>|<</a> ";
$nowpage = ($spn - 2) * $list_page_num + 1;
$RETURNS .= "<a href=$prog&page=$nowpage&spn=".($spn-1)."><<</a> ";
} else {
$RETURNS .= "|< << ";
}

for($i=0; $i<$showpages; $i++) {
$nowpage = ($spn - 1) * $list_page_num + $i + 1;
if($page == $nowpage) {
$RETURNS .= "<b>[$nowpage]</b> ";
} else {
$RETURNS .= "<a href=$prog&page=$nowpage&spn=$spn>[$nowpage]</a> ";
}
}

if($spn < $split_pnum) {
$nowpage = $spn * $list_page_num + 1;
$RETURNS .= "<a href=$prog&page=$nowpage&spn=".($spn+1).">>></a> ";
$RETURNS .= "<a href=$prog&page=$all_pnum&spn=".($split_pnum).">>|</a>";
} else {
$RETURNS .= ">> >|";
}
if ($real_num>0) $num=$real_num;
$RETURNS .= " 共有 <b>$num</b> 条记录,共 <b>$all_pnum</b> 页,第 <b>$page</b> 页\n";
return $RETURNS;
}
?>
...全文
45 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dragonsdg3 2004-01-30
  • 打赏
  • 举报
回复
ding
AlexJia2046 2004-01-28
  • 打赏
  • 举报
回复
顶了
340004 2004-01-28
  • 打赏
  • 举报
回复
下面是调用方法:

$allnum = getAllRows($sql); //取得记录集的总数
//注意这个sql要和下边的$sql条件一致

$spn = $_REQUEST['spn'];
$page = $_REQUEST['page'];
$list_num = 20; // 列表每页显示记录数
$list_page_num = 10; // 列表显示页数
$page = (int) $page;
if($page<1) $page = 1;
$setid = $list_num * ($page-1);
if(empty($setid)) $setid = 0;

$sql = "select * from sometable where ..... LIMIT $setid , $list_num";
//注意使用 Limit,这个是mysql特有的.其他数据库自己解决:)

$rs = $db->Execute($sql); //取得记录集



//调用:

listpage($allnum,'?ok=1'); //这里给了一个假参数ok=1

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧