Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > ASP > bbs的树状结构算法
【标  题】:bbs的树状结构算法
【关键字】:结构,bbs
【来  源】:网络

bbs的树状结构算法

Your Ad Here 数据库设计中order_value是用来排序的,具体实现是   
**注意以下的讨论是对一个主题而言,就是对一棵树而言!   
如果加一新贴那么  order_value=0   
如果跟贴查比父贴  order_value大的order_value   
如果有假设为next_value,那么新帖的   
order_value为父贴的(order_value+next_value)/2;   
如果有那么新帖的order_value为父贴的order_value+1000   
也就是说如果对A贴跟贴,如果A为末贴,A的字帖的order_value为order_value(父)+1000,   
不是末贴既找出比A大的order_value,新的order_value为两者的一半!   
排序实现: order by groupid,order_value desc   
**技巧如果想实现层次多一点可以每次加的多一点+100000,那样应该会好一点   

***不足之处:   
1:使用两个字段排序,速度有点慢   
2:使用order_value是一个浮点数,使用float估计不够,还是使用double   
3:只能实现理论上的无穷层实际上超过10层使用float有问题,使用double可能没有   
4:插入是需要查找下一个order_value

Dim ordervalue, nextvalue As Double
sql = "select gorders where gId=" & gId & " and goders> " & gorders & " order by goders  "
rs1.Open sql, conn1, adOpenForwardOnly, adLockOptimistic '查询比父贴大的
                                                          order_value
If (rs1.EOF And rs1.BOF) Then
  gorders = gorders + 256
  gLayer = gLayer + 1
Else
  nextvalue = rs1("gorders")
  If (nextvalue - gorders) > 1 Then
   gorders = Int((gorders + nextvalue) / 2)
   gLayer = gLayer
  Else
     'gorders,glayer跟回帖一样
End If
End If

End Sub

ASP进阶之文章在线管理更新(11):【上一篇】
bbs的树状算法的补充程序:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • WEB服务和Windows Media Server的区别
  • BEA成都User Group活动-J2EE应用架构设计和开发
  • generate random variable
  • J2EE IDE & Plugins Download URLs
  • 如何解决从mysql中读取数据时显示为乱吗的问题.
  • .net编程时在线程里使用Form上的控件的问题
  • ReadURLFile//读写远程文件并显示
  • 几个不错的开源的.net界面控件
  • RADIANCE会议电视系统故障处理方法
  • 你让哪位大虾路过此地,告诉我上面的代码是什么意思吧
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.