如何将下面的表记录写成动态的N级别菜单!

flashasp 2004-04-05 10:50:44
ClassID,ClassName,ParentID,ParentPath

1 首页 0 0
2 校园动态 1 0,1
3 每周校星 1 0,1
4 网内精华 1 0,1
5 校园图片 1 0,1
6 校长寄语 1 0,1
7 学校E览 0 0
8 课堂辅导 0 0
9 学生天地 0 0
10 教师园地 0 0
11 家长咨询 0 0
12 校内资源 0 0
13 领导班子 7 0,7
14 师资概况 7 0,7
15 规章制度 7 0,7
16 招生信息 7 0,7
17 学校风采 7 0,7
18 学校概况 17 0,7,17
19 校务公式 17 0,7,17
20 在线E览 17 0,7,17
21 123456 13 0,7,13
22 sex 13 0,7,13
23 bbs 13 0,7,13
...全文
4 点赞 收藏 13
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qxg1123 2004-04-06
parentpath去掉
直接用递归调用,但速度慢了点
回复
xdk 2004-04-06
没有办法。。。
回复
flashasp 2004-04-06
可以拉^_^,看看效果吧!
http://www.lz.net.cn/education/46z/e.asp?id=7
回复
qxg1123 2004-04-06
如果不用递归调用,就要记住自已所在链的位置,修改起来也很麻烦
回复
andraw2002 2004-04-06
我做的时候,数据库结构跟楼主的差不多,也是用递归来访问的。现在数据量增加了,发觉访问的速度变得很慢(本机上测试),不知有什么更好的解决办法。。。。。。。。。。

学习了。。。。。。。。。。。。。
回复
flashasp 2004-04-06
执行速度好慢的!
回复
flashasp 2004-04-05
再详细一点:
---------------------------------1
1 首页 0 0
7 学校E览 0 0
8 课堂辅导 0 0
9 学生天地 0 0
10 教师园地 0 0
----------------------------------2
classid=7[学校E览]下的2级目录
13 领导班子 7 0,7
14 师资概况 7 0,7
15 规章制度 7 0,7
16 招生信息 7 0,7
17 学校风采 7 0,7
------------------------------------3
classid=17下[学校风采]的目录
18 学校概况 17 0,7,17
19 校务公式 17 0,7,17
回复
flashasp 2004-04-05
__________________________________1
1 首页 0 0
7 学校E览 0 0
8 课堂辅导 0 0
9 学生天地 0 0
10 教师园地 0 0
11 家长咨询 0 0
12 校内资源 0 0
_________________________________2
2 校园动态 1 0,1
3 每周校星 1 0,1
4 网内精华 1 0,1
5 校园图片 1 0,1
6 校长寄语 1 0,1
13 领导班子 7 0,7
14 师资概况 7 0,7
15 规章制度 7 0,7
16 招生信息 7 0,7
17 学校风采 7 0,7
____________________________________3
18 学校概况 17 0,7,17
19 校务公式 17 0,7,17
_______________________________________
我的三级目录如上,我想作成N级别的!
回复
jinhaiou 2004-04-05
先用数组就可以了。
回复
gjd111686 2004-04-05
http://fason.nease.net/有数据库树演示
回复
lawdoor 2004-04-05
以上是树型目录的递归算法:
数据结构为:
id fid depth
回复
lawdoor 2004-04-05
用前两个字段就可以显示:
<%
Set Conn = CreateObject("ADODB.Connection")
Conn.Open "driver={SQL Server};server=unite;uid=sa;pwd=;database=test"

set rs = server.CreateObject("adodb.recordset")
rs.Open "select id,name from tree where fid = 0",conn,1,1
if not rs.EOF then
fid = rs("id") '当前目录ID作为下级目录的父ID
name = rs("name") '目录名称
end if
rs.Close
set rs = nothing

Response.Write name & "  <a href='add.asp?cataname=web&id="& fid &"'>添加</a><br>" '根目录
tree fid '调用树形结构递归函数

'树形结构递归函数
function tree(fid)

set rstree = server.CreateObject("adodb.recordset")
rstree.Open "select * from tree where fid = '"& fid &"'",conn,1,1
while not rstree.EOF
i=0
'加空格以显示层次关系
listtip=" "
do while i< rstree("depth")
listtip = listtip & "  "
i=i+1
loop
Response.Write listtip & rstree("name") & "  <a href='del.asp?id=" & rstree("id") &"'>删除</a>  <a href='add.asp?cataname=web&id="& rstree("id") &"'>添加</a><br>"
tree rstree("id") '递归调用
rstree.MoveNext
wend
rstree.Close
set rstree = nothing

end function
%>

<%
'以下部分是下拉列表输出
%>
<hr>
<select size="1" name="dep">
<option value="-1">请选择目录</option>
<%
'下级目录显示,用于递归调用
function nav(fid,str)

set rstmp = server.CreateObject("adodb.recordset")
rstmp.Open "select fid,name from tree where id = '"& fid &"' and fid <> 0",conn,1,1
while not rstmp.EOF
'str = rstmp("name") & "+" & str
nav rstmp("fid"),str
str = str & rstmp("name") & "+"

rstmp.MoveNext
wend
rstmp.Close
set rstmp = nothing

end function

set rs = server.CreateObject("adodb.recordset")
rs.Open "select id,fid,name from tree where isend = 1",conn,1,1
'str = ""
while not rs.EOF
str = str & "<option value=" & rs("id") & ">"
nav rs("fid"),str
str = str & rs("name") & "</option>"
rs.MoveNext
wend
rs.Close
set rs = nothing

Response.Write str

conn.close
set conn = nothing
%>
</select>
回复
flashasp 2004-04-05
下面我做成4级的拉,再怎么弄才能做成无限级别的呢!
<%
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''1
sql1="select ClassID,ClassName,ParentID,ParentPath from ArticleClass where len(ParentPath)-len(replace(ParentPath,',',''))=0"'一级目录

set rs=conn.execute(sql1)
do while not rs.eof
ClassID=rs(0)
ClassName=rs(1)

response.write "  <a href=test.asp?ClassID="&ClassID&"><font color=336699>"&ClassID&"_"&ClassName&"</font></a><br>"
''''''''''''''''''''''''''''''''''''''''''''''''''''2
sql2="select ClassID,ClassName,ParentID,ParentPath from ArticleClass where len(ParentPath)-len(replace(ParentPath,',',''))=1 and ParentID='"&ClassID&"'"

set rs2=conn.execute(sql2)
do while not rs2.eof
ClassID=rs2(0)
ClassName=rs2(1)
response.write "    <a href=test.asp?ClassID="&ClassID&"><font color=00ff00>"&ClassID&"_"&ClassName&"</font></a><br>"
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''3
sql3="select ClassID,ClassName,ParentID,ParentPath from ArticleClass where len(ParentPath)-len(replace(ParentPath,',',''))=2 and ParentID='"&ClassID&"'"
set rs3=conn.execute(sql3)
do while not rs3.eof
ClassID=rs3(0)
ClassName=rs3(1)
response.write "      <a href=test.asp?ClassID="&ClassID&"><font color=ff0000>"&ClassID&"_"&ClassName&"</font></a><br>"

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''4
sql4="select ClassID,ClassName,ParentID,ParentPath from ArticleClass where len(ParentPath)-len(replace(ParentPath,',',''))=3 and ParentID='"&ClassID&"'"

set rs4=conn.execute(sql4)
do while not rs4.eof
ClassID=rs4(0)
ClassName=rs4(1)
response.write "      <a href=test.asp?ClassID="&ClassID&"><font color=ff0000>"&ClassID&"_"&ClassName&"</font></a><br>"

rs4.movenext
loop

rs3.movenext
loop

rs2.movenext
loop

rs.movenext
loop

%>
回复
发动态
发帖子
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
社区公告
暂无公告