1/1页1 跳转到查看:871
发新话题 回复该主题

我好象已经找到为啥今日帖子数计数有问题的地方了

我好象已经找到为啥今日帖子数计数有问题的地方了

好象是只有一个论坛当中第二天有了回帖,才会激发一个重新计算今日帖子数的操作,如果没有回帖,是不会激发的¨1´ÊŽ;g'bbs.tomrun.netBDÞF†’·}_
存储过程在createpost里,¨1´ÊŽ;g'bbs.tomrun.netBDÞF†’·}_
理论上说在发帖的时候,也要激发一下,但是在createtopic的存储过程里,没有类似的代码,我手工加上去了,运行是正常的,但是总的还是不对¨1´ÊŽ;g'bbs.tomrun.netBDÞF†’·}_
¨1´ÊŽ;g'bbs.tomrun.netBDÞF†’·}_
因为要等到所有的版块都至少有新帖子了,总数才会正确,这是不行的¨1´ÊŽ;g'bbs.tomrun.netBDÞF†’·}_
¨1´ÊŽ;g'bbs.tomrun.netBDÞF†’·}_
相应的修改请大家参考如下的语句¨1´ÊŽ;g'bbs.tomrun.netBDÞF†’·}_
¨1´ÊŽ;g'bbs.tomrun.netBDÞF†’·}_
UPDATE [dnt_forums] SET [topics] = [topics] + 1,[curtopics] = [curtopics] + 1,[todayposts]=CASE WHEN DATEDIFF(day, [lastpost], GETDATE())=0 THEN [todayposts]*1 + 1  ELSE 1 END  WHERE [fid] = @fid¨1´ÊŽ;g'bbs.tomrun.netBDÞF†’·}_
我是一个汽车爱好者

TOP

 

回复:我好象已经找到为啥今日帖子数计数有问题的地方了

代码是通过判断发帖的时间和最近一个发帖的时间的日期对比,如果日期相同,则认为是同一天发的帖,所以就直接在todaypost这个值上加1,如果发现不是同一天(那就说明是今天第一帖),所以todaypost值就会置1¨1´ÊŽ;g'bbs.tomrun.netBDÞF†’·}_
¨1´ÊŽ;g'bbs.tomrun.netBDÞF†’·}_
理解起来还可以,但是如果一个论坛一天下来一个帖子都没有发过,那原来的todaypost值是不会有变动的,保存在数据表dnt_forum的一个todayposts字段内,我觉得这个字段应该定时清零,而不是通过发帖或回帖来激发.¨1´ÊŽ;g'bbs.tomrun.netBDÞF†’·}_
我是一个汽车爱好者

TOP

 
1/1页1 跳转到
发表新主题 回复该主题