又熟悉discuz的吗?熟悉得进,高分100啊 本帖最后由 pantera_650 于 2010-09-03 18:18:09 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没用过discuz,这个应该和它的业务逻辑相关性很大。 discuz我不熟...大概分析一下假如该帖子有23个回复,连主贴24,.....每页显示10个,下面这里: $totalpage=3 $page=1(第一页,因为是倒序,所以其实要显示最后10个) $thread['replies']=23 $ppp=10 $pagebydesc = $page > 50 && $page > ($totalpage / 2) ? TRUE : FALSE if($pagebydesc) { $firstpagesize = ($thread['replies'] + 1) % $ppp; // 这个firstpagesize其实是最后一页, =(23+1)%10=4, 就是最后一页显示的条数 $ppp3 = $ppp2 = $page == $totalpage && $firstpagesize ? $firstpagesize : $ppp; // ppp2= 1==3 && 4 ? 4:10 = 10 // 如果是最后一页($page=3) 就是 ppp2= 3==3 && 4 ? 4:10=4 了 $realpage = $totalpage - $page + 1; // realpage= 3-1+1 = 3, 正过来数的页数 $start_limit = max(0, ($realpage - 2) * $ppp + $firstpagesize); // start_limit = max(0, (3-2)*10+4)= 14 $numpost = ($page - 1) * $ppp; // 这个numpost不知哪里用,反正 = (1-1)*10=0 $pageadd = "ORDER BY dateline DESC LIMIT $start_limit, $ppp2"; // ok,这个sql最后是 limit 14, 10,就取到了最后10条 // 如果是page=3,那就 limit 0, 4, 就取最前面4条.... }够清楚了吧? 靠,超垃圾的写作风格, $ppp是什么来的, 下面的$start_limit 用下划线, 而$firstpagesize却堆成一块, 估计这几行代码不是同出一人, 说话有点过激.... //这行是判断是否要排序, $page可能是100, 也可能是1, 或者刚符合这里两个条件. $pagebydesc = $page > 50 && $page > ($totalpage / 2) ? TRUE : FALSE //如果要排序就继续往下 if($pagebydesc) { //如果只有一页, 或不够一页, 则直接把有多少条记录赋值给$firstpagesize $firstpagesize = ($thread['replies'] + 1) % $ppp; //每页要读多少条记录, 并给其它变量赋值 //如果只有一页当前的页数$page等于总页数$totalpage, 或少于一页时则$firstpagesize成立 //否则把预先指定的页数$ppp赋值变量$ppp3, $ppp2(这里分页的记录条数) $ppp3 = $ppp2 = $page == $totalpage && $firstpagesize ? $firstpagesize : $ppp; //真实的页面数, 即分页栏下面[1],[2],[3] ... 那样的字样一共有多少页 $realpage = $totalpage - $page + 1; //从第几条记录开始 $start_limit = max(0, ($realpage - 2) * $ppp + $firstpagesize); //帖子的数量,在这if()里判断暂时没用 $numpost = ($page - 1) * $ppp; //sql字符的排序条件, 整合个判断关键结果就为了这条, 还有一些杂碎的变量 $pageadd = "ORDER BY dateline DESC LIMIT $start_limit, $ppp2"; }我不是什么dz高手, 几乎没怎么研究, 以上纯属任个人经验, 对单词字, 计算方法来分析另外提一下, 分析代码要结合上下文才有意义, 断章取意毫毛意思, 大家都看到, 上面的变量$ppp3 , $ppp2 , 谁知是那什么来的.今晚喝了点酒有点晕, 忙中有错, 观众帮忙指正,另外, 问候一下helloyou0, 注解的风格在代码下面, 个人认为好像不太通用. 完全同意啊《Csdn收音机》,让哥不只是传说! 很遗憾,你弄错了!因为有 $pagebydesc = $page > 50 && $page > ($totalpage / 2) ? TRUE : FALSE;if($pagebydesc) { ...所以他不是 主题帖子内页面分页处理的代码要让 if($pagebydesc) 成立,必须 $totalpage >= 103,按 discuz 的默认设置每页30条,需要有3089条回复才能满足你说:在网上搜了一下,说这里是自动倒序很难想象这个 自动倒序 是什么样的需求,能在什么环境中得以使用以我经常去的创幻和macd(他们用的就是discuz)为例两三百也得热门贴比比皆是。当你辛辛苦苦的爬楼到1500楼后突然发现楼倒了,倒过来了。你是什么感觉,不骂娘才怪呢至于算法楼上都说了,我也没有必要重复 joomla下的问题 php webservice wsdl 错误。请高手帮忙 jquery做分页 通达OA 加密解密问题 xweibo 求高手指点 php simplexml_load_string在服务器上解析属性失败 php页面中的注册测试问题,在线等 调用其它搜索引擎时的网址是怎么提取出来的 thinkphp关联查询问题,join nginx worker process 30949 exited on signal 9 magento导入导出的问题 请教一个菜鸟问题
下面这里: $totalpage=3
$page=1(第一页,因为是倒序,所以其实要显示最后10个)
$thread['replies']=23
$ppp=10 $pagebydesc = $page > 50 && $page > ($totalpage / 2) ? TRUE : FALSE
if($pagebydesc) {
$firstpagesize = ($thread['replies'] + 1) % $ppp;
// 这个firstpagesize其实是最后一页, =(23+1)%10=4, 就是最后一页显示的条数 $ppp3 = $ppp2 = $page == $totalpage && $firstpagesize ? $firstpagesize : $ppp;
// ppp2= 1==3 && 4 ? 4:10 = 10
// 如果是最后一页($page=3) 就是 ppp2= 3==3 && 4 ? 4:10=4 了
$realpage = $totalpage - $page + 1;
// realpage= 3-1+1 = 3, 正过来数的页数
$start_limit = max(0, ($realpage - 2) * $ppp + $firstpagesize);
// start_limit = max(0, (3-2)*10+4)= 14
$numpost = ($page - 1) * $ppp;
// 这个numpost不知哪里用,反正 = (1-1)*10=0
$pageadd = "ORDER BY dateline DESC LIMIT $start_limit, $ppp2";
// ok,这个sql最后是 limit 14, 10,就取到了最后10条
// 如果是page=3,那就 limit 0, 4, 就取最前面4条....
}够清楚了吧?
说话有点过激....
//这行是判断是否要排序, $page可能是100, 也可能是1, 或者刚符合这里两个条件.
$pagebydesc = $page > 50 && $page > ($totalpage / 2) ? TRUE : FALSE //如果要排序就继续往下
if($pagebydesc) {
//如果只有一页, 或不够一页, 则直接把有多少条记录赋值给$firstpagesize
$firstpagesize = ($thread['replies'] + 1) % $ppp; //每页要读多少条记录, 并给其它变量赋值
//如果只有一页当前的页数$page等于总页数$totalpage, 或少于一页时则$firstpagesize成立
//否则把预先指定的页数$ppp赋值变量$ppp3, $ppp2(这里分页的记录条数)
$ppp3 = $ppp2 = $page == $totalpage && $firstpagesize ? $firstpagesize : $ppp; //真实的页面数, 即分页栏下面[1],[2],[3] ... 那样的字样一共有多少页
$realpage = $totalpage - $page + 1; //从第几条记录开始
$start_limit = max(0, ($realpage - 2) * $ppp + $firstpagesize); //帖子的数量,在这if()里判断暂时没用
$numpost = ($page - 1) * $ppp;
//sql字符的排序条件, 整合个判断关键结果就为了这条, 还有一些杂碎的变量
$pageadd = "ORDER BY dateline DESC LIMIT $start_limit, $ppp2";
}
我不是什么dz高手, 几乎没怎么研究, 以上纯属任个人经验, 对单词字, 计算方法来分析
另外提一下, 分析代码要结合上下文才有意义, 断章取意毫毛意思, 大家都看到, 上面的变量$ppp3 , $ppp2
, 谁知是那什么来的.
今晚喝了点酒有点晕, 忙中有错, 观众帮忙指正,
另外, 问候一下helloyou0, 注解的风格在代码下面, 个人认为好像不太通用.
因为有
$pagebydesc = $page > 50 && $page > ($totalpage / 2) ? TRUE : FALSE;
if($pagebydesc) { ...
所以他不是 主题帖子内页面分页处理的代码
要让 if($pagebydesc) 成立,必须 $totalpage >= 103,按 discuz 的默认设置每页30条,需要有3089条回复才能满足你说:在网上搜了一下,说这里是自动倒序
很难想象这个 自动倒序 是什么样的需求,能在什么环境中得以使用
以我经常去的创幻和macd(他们用的就是discuz)为例两三百也得热门贴比比皆是。当你辛辛苦苦的爬楼到1500楼后突然发现楼倒了,倒过来了。你是什么感觉,不骂娘才怪呢至于算法楼上都说了,我也没有必要重复