网友小灰写的无限树形菜单目录,算法是把menu(id)函数套嵌循环执行
属于多次查询,效率不是很高,但比较容易看懂,一次查询就搞定的是动网的论坛,你可以下个看看,算法比较难懂,你先看这个再去看那个.
<%
set conn=server.createobject("ADODB.CONNECTION"
connstr="DBQ="+server.mappath("db1.mdb"
+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
conn.open connstr
function menu(id)
set rs=server.CreateObject("adodb.recordset"
sql="select * from menu where id1="&id&" order by url,id"
rs.open sql,conn,1,1
if rs.recordcount=0 then
rs.close
set rs=nothing
exit function
end if
response.write("<table border='0' cellspacing='0' cellpadding='0'>"
i=1
while not rs.eof
if len(rs("url"
)>0 then
if i=rs.recordcount then
menutype="file1"
else
menutype="file"
end if
menuname="<a href='"&rs("url"
&"' target='_blank'>"&rs("menuname"
&"</a>"
onmouseup=""
else
if i=rs.recordcount then
menutype="menu3"
listtype="list1"
onmouseup="with(eval('id"&rs("id"
&"'))if(style.display==''){style.display='none';this.className='menu3';}else{style.display='';this.className='menu4';}"
else
menutype="menu1"
listtype="list"
onmouseup="with(eval('id"&rs("id"
&"'))if(style.display==''){style.display='none';this.className='menu1';}else{style.display='';this.className='menu2';}"
end if
menuname=rs("menuname"
end if
%>
<tr>
<td class="<%= menutype%>" onMouseUp="<%= onmouseup%>"><%= menuname%></td>
</tr>
<%if len(rs("url"
)<3 then%>
<tr id="id<%= rs("id"
%>" style="display:none">
<td class="<%= listtype%>"><%menu(rs("id"
)%></td>
</tr>
<%
end if
rs.movenext
i=i+1
wend
response.write("</table>"
rs.close
set rs=nothing
end function
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>=========无限级目录树=========</title>
<style type="text/css">
<!--
.menu1 {
background-image: url(folder1.gif);
background-repeat: no-repeat;
height: 17px;
left: 32px;
padding-left: 32px;
cursor: hand;
}
.menu2 {
background-image: url(folder2.gif);
background-repeat: no-repeat;
height: 17px;
left: 32px;
padding-left: 32px;
cursor: hand;
}
.menu3 {
background-image: url(folder3.gif);
background-repeat: no-repeat;
height: 17px;
left: 32px;
padding-left: 32px;
cursor: hand;
}
.menu4 {
background-image: url(folder4.gif);
background-repeat: no-repeat;
height: 17px;
left: 32px;
padding-left: 32px;
cursor: hand;
}
.list {
padding-left: 20px;
background-image: url(list.gif);
background-repeat: repeat-y;
}
.list1 {
padding-left: 20px;
}
.file {
background-image: url(file.gif);
background-repeat: no-repeat;
height: 16px;
cursor: hand;
padding-left: 32px;
}
.file1 {
background-image: url(file1.gif);
background-repeat: no-repeat;
height: 16px;
cursor: hand;
padding-left: 32px;
}
body {
font-size: 9pt;
color: #000000;
background-color: #FFFFFF;
}
a:link {
font-size: 9pt;
color: #000000;
text-decoration: none;
}
a:visited {
font-size: 9pt;
color: #000000;
text-decoration: none;
}
a:hover {
font-size: 9pt;
color: #0000FF;
text-decoration: none;
position: relative;
right: 1px;
bottom: 1px;
}
a:active {
font-size: 9pt;
color: #000000;
text-decoration: none;
}
-->
</style>
</head>
<body>
<a href="/" target="_blank">http:///</a>提供最新下载《<a href="menu.asp">管理</a>》<br>
<%
menu 0
conn.close
set conn=nothing
%>
</body>
</html>