快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

BBS的树状结构算法

数据库设计中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
返回类别: 教程
上一教程: 再来一套加解密字符串的FUNCTION
下一教程: 6行代码实现无组件上传

您可以阅读与"BBS的树状结构算法"相关的教程:
· BBS的树状算法的补充程序
· 用排序串字段实现树状结构(存储过程)
· 用排序串字段实现树状结构(原理)
· 用排序串字段实现树状结构(例程??删除贴子)
· 用排序串字段实现树状结构(例程??显示树)
    微笑服务 优质保证 索取样品