论坛: 网站建设 标题: asp如何做仿动网论坛的统计昨日帖子数量? 复制本贴地址    
作者: cgx [cgx]    论坛用户   登录
最近在写论坛,因公司设计的页面是仿动网的,在统计今天帖子总数,昨天帖子,和最高日帖子这边,卡住了,试了好几种都不行.不知哪位能指点下?数据库的帖子添加时间是用now()的,access数据库.


地主 发表时间: 06-11-15 13:15

回复: NetFog [q70213526]   版主   登录
今日发贴:Select Count(*) From Topic Where 日期=今天
昨日发贴:Select Count(*) From Topic Where 日期=今天减一个
最高日贴:Select Top 1 Count(*) From Topic Group By 日期

B1层 发表时间: 06-11-15 21:09

回复: cgx [cgx]   论坛用户   登录
哈哈,我就是 Where 日期=今天
Where 日期=今天减一个
这几个不知道怎么弄.因为我的数据库发贴时间是now()的.要对比,肯定要变成只有年月份,没有后面这些时间的。

B2层 发表时间: 06-11-17 10:34

回复: NetFog [q70213526]   版主   登录
比较时只比较日期,不比较小时和分秒啊.不行则用between

没去做测试..呵呵.这东西不难的.

B3层 发表时间: 06-11-17 13:04

回复: NetFog [q70213526]   版主   登录
不过有可能"最高日贴"会出问题..

建议你在Topic表中新建一个字段OnlyDate.只保留日期,不要小时分秒.

这样就简单了.

B4层 发表时间: 06-11-17 13:09

回复: cgx [cgx]   论坛用户   登录
[比较时只比较日期,不比较小时和分秒啊]

我就是要比较日期.可是不知道怎么来使now()只有日期.又不能用date(now).
用year(now)&"-"&month(now)……这样来取的日期来比较,也不行。

不过最后一种办法真是好办法。呵呵。谢谢。

B5层 发表时间: 06-11-17 13:36

回复: NetFog [q70213526]   版主   登录

楼主有心了..

竟然写起论坛来了..一个好论坛程序是要花费很大精力的.

B6层 发表时间: 06-11-17 17:06

回复: NetDemon [netdemon]   ADMIN   登录
保存在数据库中的时间最好不要用数据库提供的now()
而是用操作系统提供的time(),这个值是从1970年1月1号0点到现在的秒数
这样程序写起来简单很多


B7层 发表时间: 06-11-18 00:54

回复: cgx [cgx]   论坛用户   登录
没办法,原来公司用动网的,天天被别人用工具发垃圾帖子一大堆.又怕安全的。所以领导要求自己写一个了。功能简单哪!,漏洞就小了。也就发贴回贴,管理.其他什么收藏啦,银行啦之类的花哨功能都没有..我是asp菜鸟,这个简单的写了三星期呢。

那个统计最高日的,有另一种方法,,新建一个表,里面有日期和数量两个字段。每次统计当日的帖子总数,和新表的总数做比较,如果大于,就写入新表.

这个:最高日贴:Select Top 1 Count(*) From Topic Group By 日期
order by count(*) desc
可以统计出最高日发贴.可是不知道怎么显示发贴时间!



[此贴被 破贝壳(cgx) 在 11月18日11时50分 编辑过]

B8层 发表时间: 06-11-18 11:10

回复: NetFog [q70213526]   版主   登录
ASP中now()取的是WEB服务器时间。不是数据库时间。SQL SERVER 取系统时间用date()

新建一个表也是个可行的方案。查询效率会高点。不过每发一个贴,都必须更新一次你说的新表。呵呵,什么方案效率高你就用什么方案。。

B9层 发表时间: 06-11-18 19:52

回复: cgx [cgx]   论坛用户   登录
这个:最高日贴:Select Top 1 Count(*) From Topic Group By 日期
order by count(*) desc
可以统计出最高日发贴.可是不知道怎么显示发贴时间!




[此贴被 破贝壳(cgx) 在 11月20日10时01分 编辑过]

B10层 发表时间: 06-11-20 09:49

回复: NetFog [q70213526]   版主   登录
Select Top 1 Count(*) as MaxTopic,OnlyDate From Topic Group By OnlyDate

你后面的order by是多此一举..OnlyDate是只包含日期,不包含小时分秒的字段
调用时rs("MaxTopic")就是最高日发贴,OnlyDate就是最高日发贴发生的日期.

B11层 发表时间: 06-11-20 18:01

回复: cgx [cgx]   论坛用户   登录
我用楼上这个方法显示的是最少发贴的数和时间.

应是:
select top 1 count(*) as maxtopic,onlydate from toppic group by onlydate order by count(*) desc

这样才正确

B12层 发表时间: 06-11-21 16:23

回复: cgx [cgx]   论坛用户   登录
顺带再问一个:
我论坛基本做完了,才发现设计表时,出了一个大错。 因为为了导动网数据库方便,主题贴和回复贴在同一个表里.以layer字段来区分是主题还是回复的。
结果现在才发现,在帖子列表里,没办法把新回复的提到最上层.
因为是where layer=主题的.所以根本没办法根据回复的时间来排序.

B13层 发表时间: 06-11-21 16:48

回复: NetFog [q70213526]   版主   登录
呵呵.我测试过了的..

我得出的确实是最大值.不过我用的是SQL SERVER 2005.

B14层 发表时间: 06-11-21 22:47

回复: cgx [cgx]   论坛用户   登录
呵呵,那可能是数据库问题.我的用access必须order by的.
另:帖子列表里,没办法把新回复的提到最上层.的问题已解决.
在帖子表里再加一个时间型的字段,发主题时,把同时把发贴时间写入这个字段,回复时,把回复时间更新主题的这个字段.


B15层 发表时间: 06-11-22 10:03

论坛: 网站建设

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号