账号通
    

账号  

密码  

6090

查看

9

回复
主题:[分享]利用强大的SQL打造个性评论系统 [收藏主题] 本贴被认定为精华 转到:  
jxz_211 当前离线

340

主题

0

广播

1

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

用户积分:3974 分
登录次数:356 次
注册时间:2008/6/12
最后登录:2011/4/23
jxz_211 发表于:2009/5/9 22:55:00   | 只看该作者 查看该作者主题 楼主 
科汛智能建站系统

已经有很多大侠说过这个话题了,思路也很简单。但可能有些朋友需要的是完整的代码演示,那么我来给大家唠叨点。


步骤1:新建表单


添加自定义表单,且将其命名为-评论表单 数据库为-ks_form_comment


表单添加成功后,我们来添加字段(以下字段仅供示范,想添加什么自己随意):


字段一:所属信息ID号 KS_InfoId  数字型或者单行文本都可


字段二:评论标题   KS_Title 单行文本型


字段三:评分   KS_Point 单选项 选项值 1  2  3  4  5


字段四:评论内容 KS_Content 多行文本型


OK,添加成功这些字段后,大事就完成一半了。


接下来,在表单操作里自动生成模板。复制这些代码,放到你需要加评论的内容页中。


步骤2:加进内容页模板,并修改评论表单模板


如果就是这样把表单模板直接COPY进去,当然还不如把表单js代码放进去来得方便。要把它抠出来,是因为我们要修改里面一个重要的东西,这就是KS_InfoID字段。因为它的值表示了这条评论归属于哪条信息。


将 KS_InfoID前的字段提示 所属信息ID号 去掉,将它的类型更改为 type="hidden" 在value选项后加上value="{$InfoID}"  ,这个{$InfoID}大家可以在添加标签里找到,它是信息的小ID号。改了这个后,大事就真的成了。


还有一些细节你也可以改改,比如评分radio选项后你可以添加“分”这个字进去,即形如<input type="radio" name="KS_Point" value="1">1分 这样子的。


完成这些后,第二步就宣告完毕了。现在我们要做的只是如何用SQL标签来调用这些评论了。


步骤三:建SQL标签,读数据


新建一个名为:评论列表标签 的SQL标签,类型选择为终极列表标签。


sql语句可以这样写:select id,AddDate,KS_Content,KS_Point,KS_InfoId,KS_Title,UserIP,UserName,(select count(id) from ks_form_comment) as commentnum from KS_Form_Comment where KS_InfoId='{$CurrInfoID}' order by adddate desc


这里的 '{$CurrInfoID}' 的单引号要不要加可能会因为你在定义 ks_infoid的类型时有所区别,如果是单行文本型,则如上即可。红色部分是你可以自由发挥的东西,因为这里面有UserName在,如果你设置不允许游客评论的话,你可以通过username字段在ks_user表中获取很多有关该用户的信息。这点随你发挥了。


 


接下来就是写循环体了。


我自己随意写的循环体如下,没加样式,你可以自己去修改:


[loop=10]
<p>添加时间:{$Field(AddDate,Date,YYYY-MM-DD)}  用户IP:{$Field(UserIP,Text,0,...,0,)} 用户名:{$Field(UserName,Text,0,...,0,)}  {$AutoID}楼</p>
<p>给予评分:{$Field(KS_Point,Text,0,...,0,)} 该用户共有{$Field(commentnum,Num,0,2)}条评论</p>
<p>标题:{$Field(KS_Title,Text,0,...,0,)}</p>
<p>评论内容:{$Field(KS_Content,Text,0,...,0,)}</p>
[/loop]


 


好了,基本完工了了。


再加一个平均得分标签吧:评论平均得分标签


SQL语句:


select AVG(KS_Point) AS AvgPoint from KS_Form_Comment where KS_ProId='{$CurrInfoID}'


循环体(没加样式):


[loop=1]


<p>平均得分:{$Field(AvgPoint,Num,0,2)}</p>


[/loop]


 


OK,打完收工。把你的{SQL_评论列表标签}和{SQL_评论平均得分标签}放到内容页模板里看看,效果不错吧。

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

334

主题

0

广播

0

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

用户积分:2745 分
登录次数:179 次
注册时间:2008/7/17
最后登录:2014/4/1
yuxiang1986 发表于:2009/6/20 9:19:00   | 只看该作者 查看该作者主题 沙发 
科汛在线考试系统(NET)

有个问题, 提示一个参数未被定义,查了一下,原来是 KS_ProId='{$CurrInfoID}' 格式好象不对,或者是

 

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

334

主题

0

广播

0

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

用户积分:2745 分
登录次数:179 次
注册时间:2008/7/17
最后登录:2014/4/1
yuxiang1986 发表于:2009/6/7 13:10:00   | 只看该作者 查看该作者主题 藤椅 
科汛在线商城系统(NET)

如果我想加上如果是会员就显示会员头像,

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

454

主题

0

广播

0

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

用户积分:2920 分
登录次数:119 次
注册时间:2006/11/11
最后登录:2013/3/10
swcml 发表于:2009/5/23 17:27:00   | 只看该作者 查看该作者主题 板凳 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
liaohongchu 当前离线

150

主题

0

广播

0

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

用户积分:1797 分
登录次数:121 次
注册时间:2008/10/13
最后登录:2011/10/21
liaohongchu 发表于:2009/5/23 12:58:00   | 只看该作者 查看该作者主题 报纸 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
zhitaige 当前离线

1196

主题

0

广播

0

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

用户积分:7830 分
登录次数:267 次
注册时间:2006/11/8
最后登录:2015/9/4
zhitaige 发表于:2009/5/10 18:28:00   | 只看该作者 查看该作者主题 地板 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
ks1w 当前离线

2796

主题

4

广播

1

粉丝
添加关注
级别:大一

用户积分:14338 分
登录次数:665 次
注册时间:2006/11/3
最后登录:2019/7/26
ks1w 发表于:2009/5/10 16:43:00   | 只看该作者 查看该作者主题 7楼 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
wiki 当前离线

1001

主题

3

广播

6

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

用户积分:4722 分
登录次数:206 次
注册时间:2008/12/22
最后登录:2017/7/26
wiki 发表于:2009/5/10 11:41:00   | 只看该作者 查看该作者主题 8楼 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
jxz_211 当前离线

340

主题

0

广播

1

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

用户积分:3974 分
登录次数:356 次
注册时间:2008/6/12
最后登录:2011/4/23
jxz_211 发表于:2009/5/10 10:28:00   | 只看该作者 查看该作者主题 9楼 
科汛智能建站系统
以下是引用jxz_211在2009-5-10 10:26:00的发言:

补充一点,我用的是商城系统,只有单个频道可进行评论即可,如果您有多个频道,还应加一个 所属频道id号 ks_channelid的隐藏字段,和ks_infoid一样,在内容页模板里进行修改,其值 value="{$ChannelID}",在sql调用的时侯where后增加一个条件判断,即 channelid='{$Param(0)}',然后在文章频道里调用的时候则用{SQL_评论列表标签(1)}、{SQL_评论平均得分标签(1)},其它的类推。

 蓝色部分是KS_Channeid,打快了,怎么自己发的帖子不能编辑啊!脑残

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

340

主题

0

广播

1

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

用户积分:3974 分
登录次数:356 次
注册时间:2008/6/12
最后登录:2011/4/23
jxz_211 发表于:2009/5/10 10:26:00   | 只看该作者 查看该作者主题 10楼 
做在线知识付费 选科汛云开店

补充一点,我用的是商城系统,只有单个频道可进行评论即可,如果您有多个频道,还应加一个 所属频道id号 ks_channelid的隐藏字段,和ks_infoid一样,在内容页模板里进行修改,其值 value="{$ChannelID}",在sql调用的时侯where后增加一个条件判断,即 channelid='{$Param(0)}',然后在文章频道里调用的时候则用{SQL_评论列表标签(1)}、{SQL_评论平均得分标签(1)},其它的类推。

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