如何将下面的表记录写成动态的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
...全文
28 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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

%>

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧