您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
discuz分页函数分析
韦烽凌2025-07-13Discuz教程已有人查阅
导读这个分页函数是discuz中的,感觉这个分页函数相当经典,而且看到好多其他程序的分页效果也是用的这个函数。读完这个分页函数后给我的感觉是这个分页 函数做的太全面了
discuz的分页函数
这个分页函数是discuz中的,感觉这个分页函数相当经典,而且看到好多其他程序的分页效果也是用的这个函数。读完这个分页函数后给我的感觉是这个分页 函数做的太全面了,作者考虑的太全面了,在用的同时也给我们写程序树立了个榜样,multi这个函数确实被很多程序用到。而且Discuz!的很多处理机 制也被很多程序作者引用了。
下面请看blankyao分析的Discuz!分页函数代码:复制PHP内容到剪贴板PHP代码:
这个分页函数是discuz中的,感觉这个分页函数相当经典,而且看到好多其他程序的分页效果也是用的这个函数。读完这个分页函数后给我的感觉是这个分页 函数做的太全面了,作者考虑的太全面了,在用的同时也给我们写程序树立了个榜样,multi这个函数确实被很多程序用到。而且Discuz!的很多处理机 制也被很多程序作者引用了。
下面请看blankyao分析的Discuz!分页函数代码:复制PHP内容到剪贴板PHP代码:
//先看下几个参数吧
//$num 为总共的条数 比如说这个分类下共有15篇文章
//$perpage为每页要显示的条数
//$curpage为当前的页数
//$mpurl为url的除去表示页数变量的一部分,
//$page为$multipage这个字符串中要显示的表示页数的变量个数
//$maxpages为较大的页数值 此函数之后有一句$maxpage = $realpages;
function multi($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = TRUE, $= FALSE) {
global $maxpage;
$ajaxtarget = !emptyempty($_GET['ajaxtarget']) ? " ajaxtarget=\"".dhtmlspecialchars($_GET['ajaxtarget'])."\" " : '';
$multipage = '';
$mpurl .= strpos($mpurl, '?') ? '&' : '?';
$realpages = 1;
//判断总条数是否大于设置的每页要显示的条数
if($num > $perpage) {
//设置在$multipage中当前页数之前还要输出几个页数
$offset = 2;
$realpages = @ceil($num / $perpage);
//总共的页数(不知道$maxpages的意思),这里假设是15条
$pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages;
//如果总页数小于multipage中要输出的页数$page,则只输出到实际页数为止
if($page > $pages) {
$from = 1;
$to = $pages;
//如果大于的话,就要输出$page个页数(我们假设的的15条就符合这个条件)
} else {
$from = $curpage - $offset;
$to = $from + $page - 1;
//假设curpage为4,目前为止,from为2,to为11
//下面假设curpage为1
if($from < 1) {
$to = $curpage + 1 - $from;(****不明白***)
$from = 1;
//目前为止from为1,to为3
if($to - $from < $page) {
//因为这里的前提条件是总条数大于page,所以,如果$to-$from小于page的话显然达不到目的,应把$to设置为$page
$to = $page;
}//目前为止 from为1 ,to为10
} elseif($to > $pages) {//to是不可以大于总页数的
$from = $pages - $page + 1;
$to = $pages;
}
}
$multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="'.$mpurl.'page=1" class="first"'.$ajaxtarget.'>1 ...</a>' :'').
($curpage > 1 && !$? '<a href="'.$mpurl.'page='.($curpage - 1).'" class="prev"'.$ajaxtarget.'>??</a>' :'');
for($i = $from; $i <= $to; $i++) {
$multipage .= $i == $curpage ? '<strong>'.$i.'</strong>' :
'<a href="'.$mpurl.'page='.$i.($ajaxtarget && $i == $pages && $autogoto ? '#' : '').'"'.$ajaxtarget.'>'.$i.'</a>';
}
$multipage .= ($curpage < $pages && !$? '<a href="'.$mpurl.'page='.($curpage + 1).'" class="next"'.$ajaxtarget.'>??</a>' : '').
($to < $pages ? '<a href="'.$mpurl.'page='.$pages.'" class="last"'.$ajaxtarget.'>... '.$realpages.'</a>' : '').
(!$&& $pages > $page && !$ajaxtarget ? '<kbd><input type="text" name="custompage" size="3" /></kbd>' : '');
$multipage = $multipage ? '<div class="pages">'.(!$? '<em> '.$num.' </em>' : '').$multipage.'</div>' : '';
}
$maxpage = $realpages;
return $multipage;
}
函数:
function multi($num, $perpage, $curpage, $mpurl) {
$multipage = '';
$mpurl .= strpos($mpurl, '?') ? '&' : '?';
if($num > $perpage) {
$page = 10;
$offset = 5;
$pages = @ceil($num / $perpage);
if($page > $pages) {
$from = 1;
$to = $pages;
} else {
$from = $curpage - $offset;
$to = $curpage + $page - $offset - 1;
if($from < 1) {
$to = $curpage + 1 - $from;
$from = 1;
if(($to - $from) < $page && ($to - $from) < $pages) {
$to = $page;
}
} elseif($to > $pages) {
$from = $curpage - $pages + $to;
$to = $pages;
if(($to - $from) < $page && ($to - $from) < $pages) {
$from = $pages - $page + 1;
}
}
}
$multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="'.$mpurl.'page=1">第一页</a> ' : '').($curpage > 1 ? '<a href="'.$mpurl.'page='.($curpage - 1).'">上一页</a> ' : '');
for($i = $from; $i <= $to; $i++) {
$multipage .= $i == $curpage ? $i.' ' : '<a href="'.$mpurl.'page='.$i.'">['.$i.']</a> ';
}
$multipage .= ($curpage < $pages ? '<a href="'.$mpurl.'page='.($curpage + 1).'">下一页</a>' : '').($to < $pages ? ' <a href="'.$mpurl.'page='.$pages.'">之后一页</a>' : '');
$multipage = $multipage ? '共'.$pages.'页: '.$multipage : '';
}
return $multipage;
}
用法:
$pagesize = 10; // 每页记录数
$query = mysql_query("SELECT count(*) FROM table");
$row = mysql_fetch_array($query);
$amount = $row[0]; // 查询记录总数
$pagecount = $amount ? (($amount < $pagesize) ? 1 : (($amount % $pagesize) ? ((int)($amount / $pagesize) + 1) : ($amount / $pagesize))) : 0; // 计算总页数
$page = !empty($_GET['page']) ? max(1, intval($_GET['page'])) : 1;
$page = $page > $pagecount ? 1 : $page; // 取得当前页值
$startlimit = ($page - 1) * $pagesize; // 查询起始的偏移量
$result=mysql_query("SELECT * FROM table order by id desc LIMIT {$startlimit}, {$pagesize}"); // 查询记录集
while( $row = mysql_fetch_array($result) )
{
//你要显示的格式。
}
输出分页:
$multipage = multi($amount, $pagesize, $page, 'index.php?action=listadmin'); // 显示分页
echo $multipage;
本文标签:
很赞哦! ()
相关教程
图文教程
项目整合Discuz论坛的实现方法
市场就是力量,discuz是国内人气较高,使用最广泛的论坛系统,发展到今天它已经整合了论坛、门户、博客、CMS等版块,内容丰富,深受用户的喜爱
discuz修改admin.php的方法
discuz修改admin.php的方法:1、打开根目录,修改“admin.php”文件名为“study.php”;2、修改“header.htm”文件内容。
discuz UCenter对接常见问题解答
1、登录用户需激活问题 discuz/api/uc.php问题原因:与UCenter用户对接,网站用户首次登录论坛,需要先注册用户到UCenter,api写入数据至Ucenter用户表,数据没有立即发送到discuz用户表
discuz论坛常见问题解决方法
自带的是用php sendmail,好在可以用smtp如果用企业邮箱,一般都是ssl,需要设置为,参考此帖STMP服务器 - QQ 企业邮
相关源码
-
(自适应响应式)蓝色环保机械设备网站pbootcms模板HTML5源码下载基于PbootCMS的生态环境技术展示平台,通过内容调整可应用于新能源设备、污水处理、空气净化等环保相关领域。设备参数采用对比表格展示,技术原理支持图文混排;查看源码 -
帝国CMS7.5二次元COS漫展网站模板源码免费下载本模板基于帝国CMS 7.5版本深度开发,为二次元文化分享领域设计。采用UTF-8编码,支持中文内容展示,特别适用于COSPLAY作品展示、漫展信息发布等二次元相关内容的网站建设。模板结构清晰,布局合理,充分考虑了二次元用户群体的浏览习惯和审美需求。查看源码 -
(PC模板)工商公司注册会计财务记账pbootcms模板源码下载基于PbootCMS的工商财税行业网站系统,手工编写前端代码确保执行效率,双端自适应设计,支持后台实时更新服务价格和政策文件。查看源码 -
自适应黑色建筑装饰设计公司个人工作室pbootcms模板基于PbootCMS内核开发的黑金风格模板,为建筑装饰、工程设计类企业打造,采用开源架构,支持跨行业快速适配,核心优势如下: 查看源码 -
(自适应)五金配件机械蓝色营销型pbootcms模板免费下载基于PbootCMS的工业配件展示系统,精简DIV+CSS架构确保响应速度,自适应设计呈现参数表格,支持后台实时更新产品规格、在线留言等内容。查看源码 -
(自适应响应式)蓝色律师事务所法务团队网站pbootcms模板为律师事务所和法律服务机构打造的专业网站模板,展现法律专业性与权威性,手工编写标准DIV+CSS代码,结构清晰优化,确保高效运行,自动适配电脑、平板和手机等各类设备,提供更好浏览体验查看源码
| 分享笔记 (共有 篇笔记) |
