K9 通用版 博客版 主题版 地方门户版 企业版 |   企业(ASP) 分类 使用 分享 疑问 模板 建议 帮助 错误 其他
+新建主题 [Ajax]
填写帐号密码即可完成注册
+新建话题 最新回复排序 最新主题排序 精华帖子

文章显示的中的上一篇和下一篇SQL

1Next >

pktsandy 发表于:10-09-17 09:39 [添加收藏] 楼主 [回复] #Top#
pktsandy 人气:1181 积分:3438 金币:29313
VIP 管理团队 EST团队 技术精英 灌水狂人

类4 BLOG中的!如果不明白看看我的BLOG吧!随便推广一下:
我的BLOG
SELECT MAX(p.kid) AS ID,ktitle,IFNULL(kpath,'')AS path FROM king__article p WHERE p.kid<13
UNION
SELECT MIN(n.kid) AS ID,ktitle,IFNULL(kpath,'')AS path FROM king__article n WHERE n.kid>13;

pktsandy 发表于:10-09-17 09:41 沙发 [回复] #Top#
pktsandy 人气:1181 积分:3438 金币:29313
VIP 管理团队 EST团队 技术精英 灌水狂人
不明白怎么调用的看我写的另一篇:
文章的相关记录SQL语句
http://www.kingcms.com/forums/Share/t11119/
这个只要开启dbquery模块就可以了
pktsandy 发表于:10-09-17 09:45 板凳 [回复] #Top#
pktsandy 人气:1181 积分:3438 金币:29313
VIP 管理团队 EST团队 技术精英 灌水狂人
如果你用的不是MySQL只要对应手册找关于null的判断即可.KC PHP的kpath的列定义不允许NULL.当当前文章是第一条或最后一条时上一条或下一条为NULL
pktsandy 发表于:10-09-17 10:35 4楼 [回复] #Top#
pktsandy 人气:1181 积分:3438 金币:29313
VIP 管理团队 EST团队 技术精英 灌水狂人
templateinsidearticle[page]default.htm
<h1>{king:title/}</h1>

<p>
来源:
{king:_source split="|"}
    <a href="{king:_source_2/}" target="_blank">{king:_source_1/}</a>
{/king:_source}

作者:{king:_author/}

热度:{king:hit/}

日期:{king:date formatdate="y-m-d, h:i A"/}
<div id="article_navi">
<ul>
     {king:dbquery query="SELECT MAX(p.kid) AS ID,ktitle,IFNULL(kpath,'')AS path FROM king__article p WHERE p.kid<(king:kid/) and p.listid=(select listid from king__article where kid=(king:kid/)) UNION SELECT MIN(n.kid) AS ID,ktitle,IFNULL(kpath,'')AS path FROM king__article n WHERE n.kid>(king:kid/) and n.listid=(select listid from king__article where kid=(king:kid/))"}
             <li><a href="{king:path/}">{king:ktitle/}</a></li>
     {/king:dbquery}
</ul>
</div>
...
用一幅宽500px高35的背景图+下面的CSS
#article_navi{float:left;width:100%;border:1px solid #ddd;}
#article_navi ul{float:left;margin:0;padding:0;list-style:none;height:35px;width:500px;background-image:url(_r1_c1.gif);}
#article_navi ul li{float:left;width:200px;padding:10px 0 0 50px;}
效果图如下:

文章显示的中的上一篇和下一篇SQL[图1]

pktsandy 发表于:10-09-17 14:59 编辑于:09-17 16:48 5楼 [回复] #Top#
pktsandy 人气:1181 积分:3438 金币:29313
VIP 管理团队 EST团队 技术精英 灌水狂人
非图片背景版:
<div id="article_navi"><ul>
     {king:dbquery query="SELECT MAX(p.kid) AS ID,p.ktitle,IFNULL(p.kpath,'')AS path,pd.pd_ID AS PID FROM king__article p,(select listid AS m_id,kid AS pd_ID from king__article where kid=(king:kid/)) pd WHERE p.kid<pd.pd_ID and p.listid=pd.m_id UNION SELECT MIN(n.kid) AS ID,n.ktitle,IFNULL(n.kpath,'')AS path,nd.nd_ID AS PID FROM king__article n,(select listid AS m_id,kid AS nd_ID from king__article where kid=(king:kid/)) nd WHERE n.kid>nd.nd_ID and n.listid=nd.m_id"}
             <?php
             $prom_title=({king:ID/}<{king:PID/})?"上一篇":"下一篇";
             if(!is_null("{king:ktitle/}")){
                  echo "<li>".$prom_title.": <a href="{king:path/}">{king:ktitle/}</a></li>";
             }?>
     {/king:dbquery}
</ul></div>
pktsandy 发表于:10-09-17 15:04 6楼 [回复] #Top#
pktsandy 人气:1181 积分:3438 金币:29313
VIP 管理团队 EST团队 技术精英 灌水狂人
SQL语句的可读版
SELECT MAX(p.kid) AS ID,
       p.ktitle,
       IFNULL(p.kpath,'')AS path,
       pd.pd_ID AS PID
FROM
       king__article p,
       (select listid AS m_id,kid AS pd_ID from king__article where kid=11) pd
WHERE
       p.kid<pd.pd_ID and p.listid=pd.m_id

UNION

SELECT
       MIN(n.kid) AS ID,
       n.ktitle,
       IFNULL(n.kpath,'')AS path,
       nd.nd_ID AS PID
FROM
       king__article n,
       (select listid AS m_id,kid AS nd_ID from king__article where kid=11) nd
WHERE
       n.kid>nd.nd_ID and n.listid=nd.m_id;
pktsandy 发表于:10-09-17 15:08 7楼 [回复] #Top#
pktsandy 人气:1181 积分:3438 金币:29313
VIP 管理团队 EST团队 技术精英 灌水狂人
文章显示的中的上一篇和下一篇SQL[图1]
pktsandy 发表于:10-09-18 07:50 8楼 [回复] #Top#
pktsandy 人气:1181 积分:3438 金币:29313
VIP 管理团队 EST团队 技术精英 灌水狂人
即使你用有背景的图片来显示上一篇和下一篇也推荐用下面的SQL。
这条SQL需要的开销比较大:
SELECT 
      MAX(p.kid) AS ID,
      ktitle,
      IFNULL(kpath,'')AS path 
FROM 
      king__article p 
WHERE 
      p.kid<(king:kid/) 
      and 
      p.listid=(select listid from king__article where kid=(king:kid/)) 
UNION 
SELECT 
      MIN(n.kid) AS ID,
      ktitle,
      IFNULL(kpath,'')AS path 
FROM 
      king__article n 
WHERE 
      n.kid>(king:kid/) 
      and 
      n.listid=(select listid from king__article where kid=(king:kid/))

1Next >

发表回复

帐号 匿名发布 审核后可见 [加载完整在线编辑器]
内容
验证码
KingCMS 内容管理系统

关于我们 联系我们 广告报价 付款方式 站点导航

Copyright © 2004-2015 Focuznet All rights reserved.

广州唯众网络科技有限公司 粤ICP备08008106号