| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1351 人关注过本帖
标题:[讨论]JSP论坛中帖子的顺序
只看楼主 加入收藏
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
 问题点数:0 回复次数:12 
[讨论]JSP论坛中帖子的顺序
一个论坛嘛,大家都知道的,新开的主题肯定是位于置顶帖下面,也就是非置顶帖的第一条,回帖后那个主题也会变成第一条。如果是在排序的时候,应该以什么作为基础来对帖子进行排序呢?
我自己想了一个解决方案,但觉得不是最好,特发帖来讨论
我的解决方案如下:
在数据库中新增一个字段,比如叫state,当发帖后,取得当前数据库中state值中最大的值,然后+1存给新的帖子,如果有回帖,则取得回帖的主题的state值,再取得当前最大的state值,比较后如果2个值相等则不改变,否则把最大的state值+1后更新给新回帖的主题,这样只要按照state进行排序就能对主题进行排序了。
例子:
有主题1,2,3。对应的state值也为1,2,3。如果新开一个主题4,则取得当前最大的state值3,对其+1后存给主题4。这时有一个对1帖子进行回帖的操作,于是取得当前最大值与该主题的state值相比,当前值比主题的大,+1后更新给帖子1,这时帖子1,2,3,4对应的state值为5,2,3,4。对state进行排序后,顺序为1,4,3,2。
不知道各位有没有其他更好的办法来实现?
搜索更多相关主题的帖子: 置顶帖 JSP 数据库 state 
2006-09-08 08:43
无理取闹
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:53
帖 子:4264
专家分:0
注 册:2006-7-26
收藏
得分:0 
用时间楼主觉得怎么样?
时间最晚的那个放在第一位


win32汇编
病毒 加密
目前兴趣所在
2006-09-08 10:17
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
得分:0 
我当然也考虑过用时间啦,但这样一来就有2个步骤需要做
第一,取得主题的所有时间并排序(因为要考虑主题还没有回帖的情况),取得回帖中最晚发表的帖子的时间
第二,将2个时间进行比对,最后得出顺序

综合下来,我还是放弃了这个方案……

向着软件工程师的目标前进!
2006-09-08 10:51
无理取闹
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:53
帖 子:4264
专家分:0
注 册:2006-7-26
收藏
得分:0 
去问问静老大怎么实现的 呵呵

win32汇编
病毒 加密
目前兴趣所在
2006-09-08 10:58
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
得分:0 
我想……静老大的这个论坛也不会是自己写的吧。。。太浩大了点……

向着软件工程师的目标前进!
2006-09-08 11:00
无理取闹
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:53
帖 子:4264
专家分:0
注 册:2006-7-26
收藏
得分:0 
应该知道原理吧

win32汇编
病毒 加密
目前兴趣所在
2006-09-08 11:06
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
我当然也考虑过用时间啦,但这样一来就有2个步骤需要做
第一,取得主题的所有时间并排序(因为要考虑主题还没有回帖的情况),取得回帖中最晚发表的帖子的时间
第二,将2个时间进行比对,最后得出顺序

综合下来,我还是放弃了这个方案……
-------------------------------------------------------------------------------------
用 更新时间 是个比较好的方案
但是我不明白你的两个步骤是怎么得出来的

用SQL语句也只用一句而已,如果你在描述数据库是怎么实现的,也未免太.....
主题中要求有个字段是用来指向最后的回复的,如果是新主题,那么发表时间和更新时间相同,而且指向最后回复的字段为空
如果是旧主题,则发表时间比更新时间要早,而且更新时间等于最后回复的时间

很多论坛采用的是很奇怪的处理方法,个人觉得都不大好,比如说二叉树等

淘宝杜琨
2006-09-08 12:00
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
简单描述一下:

T_THEME
----------
ID char(32) not null unique, 主题编号
PT timestamp not null, 发表时间戳-PostTimestamp
UT timestamp not null, 更新时间戳-UpdateTimestamp

然后主题按照UT进行排序,当然,如果有什么置顶呀,救生圈之类的,这样是不能实现的



淘宝杜琨
2006-09-08 12:05
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
得分:0 
发现UT就等于我的那个state……只是我用的是数字表示,而UT是用时间表示

向着软件工程师的目标前进!
2006-09-08 12:36
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
你的state是冗余字段,想想,你怎么表示这个帖子什么时候被更新的呢?

淘宝杜琨
2006-09-08 13:02
快速回复:[讨论]JSP论坛中帖子的顺序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033070 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved