帝国论坛帝国网站管理系统交流区帝国CMS使用交流[求助]求更正帝国cms 上下一篇 【本版专题贴子】  
 1/3     1 2 3 ›› ›|
主题:[求助]求更正帝国cms 上下一篇 [加入收藏夹]   

mrlelong
用户头衔:秀才

精华贴   :0
发贴数   :99
经验值   :521
注册时间:2011-06-25
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
[求助]求更正帝国cms 上下一篇
例如 数据 如下
id  title newstime
1   a     2012-06-01
2   b     2012-08-01
3   c     2012-05-01
4   d     2012-07-01
5   e     2012-04-01
6   f     2012-09-01

如果列表栏目 采用了 newstime asc 排序后  也可能是其他排序方式哈

id  title newstime
5   e     2012-04-01
3   c     2012-05-01
1   a     2012-06-01
4   d     2012-07-01
2   b     2012-08-01
6   f     2012-09-01


现在 信息的 id 为4 的信息
那么 它 的下一条(id:1) 上一条(id:2) 的 sql语句怎么写呢

帝国cms 的默认的是错误的


个人解决方式用 数组存储当前栏目排序的id 遍历数组 返回当前id的前后信息id

在e/class/function.php 添加如下函数
===================
//通过id判断上下一条
function nextprev($classid,$id)
{//$public_r[newsurl]
        global $empire,$dbtbpre,$emod_r,$public_r,$class_r,$class_zr,$fun_r,$class_tr,$level_r,$etable_r;
        $a=array();$r=array();
        $ii=0;
        if(empty($class_r[$classid][reorder])){$addorder="newstime desc";}else{$addorder=$class_r[$classid][reorder];}
        $sqltext="select titleurl,groupid,classid,newspath,filename,id,title from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where classid='$classid' and checked=1 order by ".ReturnSetTopSql('list').$addorder." ";
        //echo $sqltext;exit;
        $sql=$empire->query($sqltext); //查询新闻表最新10条记录
        while($rs=$empire->fetch($sql))        //循环获取查询记录
        {
                $a[]=$rs["id"];
                if($rs[id]==$id){$dqid=$ii;}
                $ii++;
        }
        $r[0]=$a[$dqid-1];
        $r[1]=$a[$dqid+1];
        //print_r($a);
        return $r;

}
===================
//$r[0] 为下一篇id ,$r[1]为上一篇id;


===================
//下一篇
        if(strstr($newstemptext,'[!--info.next--]'))
        {
                $next_r=$empire->fetch1("select titleurl,groupid,classid,newspath,filename,id,title from {$dbtbpre}ecms_".$class_r[$add[classid]][tbname]." where id>$add[id] and classid='$add[classid]' and checked=1 order by id limit 1");
                if(empty($next_r[id]))
                {
                        $infonext="<a href='".$classurl."'>".$fun_r['HaveNoNextLink']."</a>";
                }
                else
                {
                        //链接
                        $nexttitleurl=sys_ReturnBqTitleLink($next_r);
                        $infonext="<a href='".$nexttitleurl."'>".$next_r[title]."</a>";
                }
                $newstempstr=str_replace('[!--info.next--]',$infonext,$newstempstr);
        }
        //上一篇
        if(strstr($newstemptext,'[!--info.pre--]'))
        {
                $next_r=$empire->fetch1("select titleurl,groupid,classid,newspath,filename,id,title from {$dbtbpre}ecms_".$class_r[$add[classid]][tbname]." where id<$add[id] and classid='$add[classid]' and checked=1 order by id desc limit 1");
===================
为:
===================
$np=nextprev($add[classid],$add[id]);
//下一篇
        if(strstr($newstemptext,'[!--info.next--]'))
        {
                $next_r=$empire->fetch1("select titleurl,groupid,classid,newspath,filename,id,title from {$dbtbpre}ecms_".$class_r[$add[classid]][tbname]." where id='$np[0]' and classid='$add[classid]' and checked=1 order by id limit 1");
                if(empty($next_r[id]))
                {
                        $infonext="<a href='".$classurl."'>".$fun_r['HaveNoNextLink']."</a>";
                }
                else
                {
                        //链接
                        $nexttitleurl=sys_ReturnBqTitleLink($next_r);
                        $infonext="<a href='".$nexttitleurl."'>".$next_r[title]."</a>";
                }
                $newstempstr=str_replace('[!--info.next--]',$infonext,$newstempstr);
        }
        //上一篇
        if(strstr($newstemptext,'[!--info.pre--]'))
        {
                $next_r=$empire->fetch1("select titleurl,groupid,classid,newspath,filename,id,title from {$dbtbpre}ecms_".$class_r[$add[classid]][tbname]." where id='$np[1]' and classid='$add[classid]' and checked=1 order by id desc limit 1");
===================
以上修改能完成效果,但是 资源耗用太大,求精改

上传以下图片:


[该贴被修改 4 次,最后修改时间 2012-08-29 14:55:58 ]


BLOG 百度
2012-08-29 09:04:24 已设置保密 顶部 回复 引用 报告 编辑 删除

455ax
用户头衔:探花

精华贴   :0
发贴数   :7144
经验值   :19059
注册时间:2007-05-29
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]

扯淡,没看后面是按id调用吗?如果当前id=4,你发的就没错
这个调用是要按表调用,不是按栏目

[该贴被修改 1 次,最后修改时间 2012-08-29 09:37:35 ]



2012-08-29 09:37:17 已设置保密 顶部 回复 引用 报告 编辑 删除

455ax
用户头衔:探花

精华贴   :0
发贴数   :7144
经验值   :19059
注册时间:2007-05-29
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]

如果你是要按发布时间排那就把id改为newstime




2012-08-29 09:39:19 已设置保密 顶部 回复 引用 报告 编辑 删除

浅浅爱
用户头衔:举人

精华贴   :0
发贴数   :494
经验值   :1074
注册时间:2012-05-02
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 4 楼]

如果当前id=4,你发的就没错



北京java培训|http://www.sinoest.com/javapeixun/
http://www.chtip.org
2012-08-29 09:43:08 已设置保密 顶部 回复 引用 报告 编辑 删除

mrlelong
用户头衔:秀才

精华贴   :0
发贴数   :99
经验值   :521
注册时间:2011-06-25
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 5 楼]

原帖由 浅浅爱 于 2012-08-29 09:43:08 发表
如果当前id=4,你发的就没错


如果我栏目列表 采用的自定义排序方式是 newstime asc的话,内容页却还是id排序的,难道这个没错?
id=4 我是说当前信息所属id

[该贴被修改 1 次,最后修改时间 2012-08-29 09:59:31 ]


BLOG 百度
2012-08-29 09:56:17 已设置保密 顶部 回复 引用 报告 编辑 删除

455ax
用户头衔:探花

精华贴   :0
发贴数   :7144
经验值   :19059
注册时间:2007-05-29
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 6 楼]

上面所有id都要换成newstime,不止是排序参数




2012-08-29 10:06:26 已设置保密 顶部 回复 引用 报告 编辑 删除

mrlelong
用户头衔:秀才

精华贴   :0
发贴数   :99
经验值   :521
注册时间:2011-06-25
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 7 楼]

原帖由 455ax 于 2012-08-29 10:06:26 发表
上面所有id都要换成newstime,不止是排序参数


那帝国 内容页默认 是不是根据id 来的,也就是说 默认的,如果 列表排序变了,内容页的上下一篇 就是错的顺序了?



BLOG 百度
2012-08-29 10:11:55 已设置保密 顶部 回复 引用 报告 编辑 删除

455ax
用户头衔:探花

精华贴   :0
发贴数   :7144
经验值   :19059
注册时间:2007-05-29
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 8 楼]

列表页排序和内容半毛钱关系都没有




2012-08-29 10:12:57 已设置保密 顶部 回复 引用 报告 编辑 删除

oosofa
用户头衔:举人

精华贴   :0
发贴数   :624
经验值   :1415
注册时间:2012-06-29
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 9 楼]

这个不懂哦  学习下再说



贷款 郑州贷款 武汉贷款广州贷款郑州ktv沙发
2012-08-29 10:14:00 已设置保密 顶部 回复 引用 报告 编辑 删除

mrlelong
用户头衔:秀才

精华贴   :0
发贴数   :99
经验值   :521
注册时间:2011-06-25
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 10 楼]

哥,能不能加一个QQ

上传以下图片:


[该贴被修改 1 次,最后修改时间 2012-08-29 10:20:27 ]


BLOG 百度
2012-08-29 10:19:44 已设置保密 顶部 回复 引用 报告 编辑 删除
 1/3     1 2 3 ›› ›|

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1