账号通
    

账号  

密码  

166993

查看

146

回复
主题:[注意]KesionCMS SQL标签中条件语句使用的说明一[3-10整理] [收藏主题] 转到:  
科汛官方 当前离线

47268

主题

145

广播

405

粉丝
添加关注
级别:管理员

用户积分:101604 分
登录次数:7935 次
注册时间:2006/12/7
最后登录:2023/12/14
科汛官方 发表于:2009/3/10 12:17:00   | 显示全部帖子 查看该作者主题 楼主 
科汛在线网校系统

经常在坛子里看到一些用户对sql标签的条件使用不够了解,导致得不到预期的效果.今天给大家讲一下使用sql标签条件里,需要注意的一些细节问题.

 

标签格式:

 

{$IF(condition||out1||out2)} 

 

 

标签说明:当满足 condition 条件,输出out1,否则输出 out2,类似c,c#等语言里的三元运算符a?b:c,需要注意的时每个条件对都必须包含两个||
condition可以是任何支持asp的条件运行符(如=,〉,〈,〉=,〈=,〈〉等)和函数(如datediff,isdate,isarray等)

 

注意点说明:

  1. 这个标签只能应用于sql标签的循环体中,且不能嵌套,但可以平行出现多对使用
  2. 标签的condition部分必须是严格按照asp的语法书写
    举例说明
      a.如我们希望字段intro(varchar类型)为空时,输出"---",不为空时,原文输出. 
       正确写法1:
              "{$Field(intro,Text,0,...,0,)}"=""
       正确写法2:
              "{$Field(intro,Text,0,...,0,)}"=""

       错误写法1:
             {$Field(intro,Text,0,...,0,)}=""
       错误写法2:
          {$Field(intro,Text,0,...,0,)}="空"

    关键在于上面加色的双引号是必须的,不能少
    比如intro字段为 "kesioncms",那么我们可以将上面理解为:
      正确写法1:
              "kesioncms"=""
       正确写法2:
              "kesioncms"=""

       错误写法1: 
             kesioncms=""
       错误写法2: 
           kesioncms="空"
    这样就可以清楚看出,1,2种是正确写法,后面的都是错误的,少了双引号
    再比如intro字段为空时,即没有内容.那么我们可以将上面理解为:

    正确写法1:
              "空"=""
       正确写法2:
              ""=""

       错误写法1: 
             空=""
       错误写法2: 
           ="空"

    b.如我们希望最最近三天内发布的文章,输出new标签,日期字段为AddDate(datetime类型). 
      正确写法1: 
              {$IF(datediff("d","{$Field(adddate,Date,YYYY-MM-DD)}",now)<3||<font color=red><b>new</b></font>||<font color="#cccccc">{$Field(adddate,Date,MM-DD)}</font>)}
    错误写法: 
              {$IF(datediff("d",{$Field(adddate,Date,YYYY-MM-DD)},now)<3||<font color=red><b>new</b></font>||<font color="#cccccc">{$Field(adddate,Date,MM-DD)}</font>)}
    关键还是上面的双引号不能少.假设我们这里的adddate值为2009-3-10号,那么以上就转变为

    正确:datediff("d","2009-3-10",now)<3     ---符合asp语法
    错误:datediff("d",2009-3-10,now)<3        ---不符合asp语法


    经过以上说明,我想你也大概明白了,为什么经常会得不到预期的效果了,特别应该注意的就是第二点条件部分的写法,比较有讲究,如果是文本型字段,我们往往可以加一个"空"字替代,如下图


    此主题相关图片如下:未命名.jpg
    未命名.jpg



       

 


 

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
科汛官方 当前离线

47268

主题

145

广播

405

粉丝
添加关注
级别:管理员

用户积分:101604 分
登录次数:7935 次
注册时间:2006/12/7
最后登录:2023/12/14
科汛官方 发表于:2009/3/10 12:27:00   | 显示全部帖子 查看该作者主题 沙发 
做在线知识付费 选科汛云开店

附带使用举例:


 


1、判断是否推荐文章,如果是就在标题后显示推荐
[loop=10]
<li>
〈a href="{$Field(id,GetInfoUrl,1,1)}" target="_blank"〉{$Field(title,Text,35,,0,)}〈/a〉
{$IF({$Field(recommend,Num,0,2)}=1||推荐||)}
 </li>
[/loop]


 


2、判断是否是最近三天发布的文章,如果说日期加红显示
[loop=10] 
 <li>
   <a href="{$Field(id,GetInfoUrl,1,1)}" target="_blank">{$Field(title,Text,35,,0,)}</a>
{$IF(datediff("d","{$Field(adddate,Date,YYYY-MM-DD)}",now)〈3
||〈font color=red〉{$Field(adddate,Date,MM-DD)}〈/font〉||{$Field(adddate,Date,MM-DD)})}
</li>
[/loop]



3、隔行文章显示不同背景颜色
 <table border="0">
[loop=10]
 <tr> 
 {$IF({$AutoID} mod 2=0|| <td bgcolor="#ffffff">||<td bgcoloe="#efefef">)}
  <a href="{$Field(id,GetInfoUrl,1,1)}" target="_blank">{$Field(title,Text,35,,0,)}</a>
</td>
</tr>
[/loop] 
</table>

 
  支持(27) | 反对(28) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.09766秒 powered by KesionCMS 9.0