不用递归实现树形结构的一种方法
主要的技巧在level(帖子回复深度)的操作上
sunadm 于 2000.07.26
____________________________________________
演示表的结构
____________________________________________
表名:bbs
| 字段 | 数据类型 | 说明 |
| id | 自动编号 | |
| rootid | int | 根帖id,本身为根帖则rootid = id |
| fid | int | 父帖id,上一层帖子的id,如是根帖则fid = null |
| level | smallint | 根帖level=0,其他依据回复的深度递增 |
| subject | char | 主题 |
____________________________________________
sql 语句(须据此创建记录集 rs):
____________________________________________
select *
from bbs
order by bbs.rootid desc, bbs.level, bbs.fid, bbs.[id] desc
____________________________________________
显示树形结构的有关语句:
____________________________________________
level = 0
response.write "<ul>"
while not rs.eof
if rs("level") < level then
for i = 1 to level-1
response.write "</ul>"
next
end if
if rs("level") > level then
response.write "<ul>"
end if
response.write "<li>" & rs("subject") & "</li>"
level = rs("level")
rs.movenext
wend
response.write "</ul>"
__________________________________________________________
后记:原来我一直用递归做这事,因为觉得主要的速度瓶颈该是在
分页上面,所以一直……呵呵!直到今天廖家远当头棒喝……
希望对大家有所帮助(扔几块玉过来吧!准备好了几个麻袋等着那!:p)
last modified 2k-07-26 13:14
