账号通
    

账号  

密码  

2896

查看

7

回复
主题:科汛V9.5新增SQL标签可自设分隔符随意拆分数据(拆分项可随机输出或制定输出) [收藏主题] 转到:  
anflash 当前离线

209

主题

2

广播

36

粉丝
添加关注
级别:二年级

用户积分:1084 分
登录次数:631 次
注册时间:2011/12/22
最后登录:2024/8/3
anflash 发表于:2014/6/19 16:24:19   | 只看该作者 查看该作者主题 楼主 
科汛很多数据以内容集的形式存放于是一个字段,比如图片系统里的图片地址。各个图片地址以|||隔开存放于PicUrls这个字段里,让建站者头疼的是怎样调用单个图片地址?由于笔者现需实现随机调取单个数据,因此从SQL标签下手开发出灵活运用的拆分数据标签。
标签:{$SPLITDATA(aaa[]b[]c)}
说明:aaa:字段;b:分隔符;c:输出数据所在位置(从0开始),当c=-1时随机输出拆分项
案例:{$SPLITDATA({$Field(PicUrls,Text,0,...,0,)}[],[]-1)}

创建该标签需修改同一asp三处:
/KS_Cls/Kesion.Label.SQLCls.asp

第一处:

Set objNode=Application(KS.SiteSN&"_sqllabellist").documentElement

For i=0 to objNode.ChildNodes.length-1

set objAtr=objNode.ChildNodes.item(i)

Str=Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(objAtr.Attributes.item(2).Text&"","{$Field","{#Field"),"{$AutoID}","{#AutoID}"),"{$DaoXiID}","{#DaoXiID}"),"{$IF","{#IF"),"{$Param","{#Param"),"{$GetItemUrl}","{#GetItemUrl}"),"{$REPLACE","{#REPLACE"),"{$SPLITDATA","{#SPLITDATA")
  '避免Field字段被替换掉,先转为#

Str=Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Str,"{$CurrClassID}","{#CurrClassID}"),"{$CurrTopClassID}","{#CurrTopClassID}"),"{$CurrClassName}","{#CurrClassName}"),"{$CurrChannelID}","{#CurrChannelID}"),"{$CurrClassChildID}","{#CurrClassChildID}"),"{$CurrUserName}","{#CurrUserName}"),"{$CurrInfoID}","{#CurrInfoID}"),"{$CurrSpecialID}","{#CurrSpecialID}"),"{$GetUserName}","{#GetUserName}")

Str=Rcls.ReplaceGeneralLabelContent(Str)

Str=Replace(Replace(Replace(Replace(Replace(Replace(Replace(Str,"{#Field","{$Field"),"{#AutoID}","{$AutoID}"),"{#DaoXiID}","{$DaoXiID}"),"{#IF","{$IF"),"{#Param","{$Param"),"{#REPLACE","{$REPLACE"),"{#SPLITDATA","{$SPLITDATA")

objAtr.Attributes.item(2).Text=Str

Next

set Rcls=nothing


第二处:
                    ReplaceCondition1=TempStr
        End Function




'拆分数据输出其中一项    {$SPLITDATA(aaa[]b[]c)}     aaa:拆分数据 b:分隔符 c:提取哪项范围,当c=-1时随机输出拆分项


Function ReplaceCondition3(byval str)

      Dim regEx, Matches, Match, TempStr,Bool
      Dim FieldParam,FieldParamArr,ReturnFieldValue,I,FieldParamArr1,k
                    on error resume next
                    Set regEx = New RegExp
                    regEx.Pattern = "{\$SPLITDATA\([^{\$}]*}"
                    regEx.IgnoreCase = True
                    regEx.Global = True
                    Set Matches = regEx.Execute(str)
                    TempStr=str
                    For Each Match In Matches
                      FieldParam    = Replace(Replace(Match.Value,"{$SPLITDATA(",""),")}","")
                      FieldParamArr = Split(FieldParam,"[]")
                      if Ubound(FieldParamArr)=2 then


   I=int(FieldParamArr(2))


if FieldParamArr(0)<>"" and FieldParamArr(1)<>"" then



FieldParamArr1=Split(FieldParamArr(0),FieldParamArr(1))



k=Ubound(FieldParamArr1)



if I>k then



   ReturnFieldValue=FieldParamArr(0) '超出拆分范围输出自身



else



   if I<0 then



Randomize Timer



I=Int((k+1)*Rnd)



ReturnFieldValue=FieldParamArr1(I) '输出随机项


else



ReturnFieldValue=FieldParamArr1(I) '输出指定项


end if



end if





end if



end if




                      if err then
                       err.clear
                      else
                      TempStr=Replace(TempStr,"{$SPLITDATA(" &FieldParam &")}",ReturnFieldValue)
                      end if
                    Next
                    ReplaceCondition3=TempStr
        End Function



'取得分页标志

Function GetPageStr(SqlLabel)



第三处:

CleanLabel=ReplaceCondition(Replace(Content,"$KS:Page$",vbcrlf))

CleanLabel=ReplaceCondition1(CleanLabel)

CleanLabel=ReplaceCondition3(CleanLabel)

End Function

'替换循环部分内容


Function GetCirLabelContent(CirLabelContent,ByRef KS_RS_Obj,LoopTimes,ByVal NN)

备注:红色为添加部分
 
个人QQ:845977434
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
classical7002 当前离线

43

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:49 分
登录次数:12 次
注册时间:2014/5/7
最后登录:2014/6/19
classical7002 发表于:2014/6/19 16:32:04   | 只看该作者 查看该作者主题 沙发 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
hzh567 当前离线

215

主题

8

广播

2

粉丝
添加关注
级别:二年级

用户积分:555 分
登录次数:21 次
注册时间:2012/9/10
最后登录:2015/3/2
hzh567 发表于:2014/6/19 16:32:47   | 只看该作者 查看该作者主题 藤椅 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
anflash 当前离线

209

主题

2

广播

36

粉丝
添加关注
级别:二年级

用户积分:1084 分
登录次数:631 次
注册时间:2011/12/22
最后登录:2024/8/3
anflash 发表于:2014/6/19 16:36:55   | 只看该作者 查看该作者主题 板凳 
做在线知识付费 选科汛云开店

举例:

sql语句:

select top 1 FolderName,ClassDefineContent from KS_class

内容:

[loop=1]{$Field(foldername,Text,0,...,0,)}{$SPLITDATA({$Field(ClassDefineContent,Text,0,...,2,)}[],[]1)}[/loop]

输出以英文逗号隔开第二项

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
tianyi021com 当前离线

350

主题

12

广播

3

粉丝
添加关注
级别:三年级

用户积分:643 分
登录次数:212 次
注册时间:2010/5/6
最后登录:2023/12/15
tianyi021com 发表于:2014/6/19 16:38:11   | 只看该作者 查看该作者主题 报纸 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
yunuo2009 当前离线

204

主题

11

广播

1

粉丝
添加关注
级别:二年级

用户积分:1719 分
登录次数:301 次
注册时间:2009/6/26
最后登录:2021/9/22
yunuo2009 发表于:2014/6/19 17:08:37   | 只看该作者 查看该作者主题 地板 
科汛在线网校系统
这标签不错,标记下!!
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
meishandr 当前离线

168

主题

16

广播

3

粉丝
添加关注
级别:一年级

用户积分:1176 分
登录次数:111 次
注册时间:2013/12/16
最后登录:2024/4/20
meishandr 发表于:2014/6/19 17:18:49   | 只看该作者 查看该作者主题 7楼 
科汛智能建站系统

楼主强大,顶一个。

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
houfayou 当前离线

25

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:52 分
登录次数:40 次
注册时间:2012/10/30
最后登录:2021/1/26
houfayou 发表于:2015/3/20 1:09:00   | 只看该作者 查看该作者主题 8楼 
科汛智能建站系统

点击查看原图

楼主指点一下,我这怎么这样显示呢?

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