求无限级下拉联动菜单(要有数据库连接)
数据库表:
table1(id name) 都是varchar字段
(id内每两位表示一层)
id name
01 一层 (一级)
0101 一层的一层(二级)
010101 一层的一层的一层(三级)
010102 一层的一层的二层(三级)
02 二层(一级)
0201 二层的一层(二级)
0202 二层的二层(二级)
…………
求联动菜单
一级菜单:选择“列出一级”(<SELECT NAME="s1"><option>列出一级</SELECT> ):
则“下拉菜单”里显示“一级”(即id为仅两位01、02,03……项);
二级菜单: 列出“一级菜单”中选中项的下一层,如“一级菜单”中选择“01”,则“二级菜单”里有“0101”,选择“02”,则有“0201”,“0202”两项(即id仅为四位且前两位等于一级id的项),三级菜单:
选择“二级菜单”中的项(如“0101”),如果在该二级目录下还有下一级,则生成一个下拉菜单”(<SELECT NAME="s1"><option>选择下层</SELECT>),如果没有下一级,如“0201”,则下拉菜单结束;
四级菜单:和三级菜单一样,“三级菜单”选定了之后,有下一级,一样生成一个下拉菜单,没有则结束;
…………
这样一直推下去。
请问这样的菜单怎么样做?
下拉菜单的内容一定是要从数据库的同一个表table1取出来的,菜单最多有10级以上。
问题点数:20、回复次数:6Top
1 楼hackate(兰花开香入梦境,独思佳人亦飘然!!)回复于 2005-01-19 13:35:38 得分 1
看啊信的有联动代码啊!Top
2 楼lilu207(lilu)回复于 2005-01-19 13:37:32 得分 0
没找倒Top
3 楼xl1860(九天)回复于 2005-01-19 14:53:28 得分 1
这问题发了很多次了
Top
4 楼hqcsx(蓝色心灵)回复于 2005-01-22 14:23:02 得分 14
'三级下拉框连动
'
'数据库:
'location
'表1 loaction 所在地表
' 字段
' loactionid
' loactionname 名字
'表2 district 所在的地区表
' 字段
' locationid
' districtid
' districtname
'表3 village 所在的县区表
' 字段
' districtid
' villageid
' villagename
<%Option Explicit%>
<html>
<head>
<title>List</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<%
dim conn
dim rs
dim sql
dim count
dim rs1
dim sql1
dim rs2
dim sql2
dim count2
set conn=server.createobject("adodb.connection")
conn.open"provider=sqloledb;data source=192.168.0.33;uid=sa;pwd=;database=location;"
sql = "select * from district order by locationid asc"
set rs = conn.execute(sql)
%>
<script language = "JavaScript">
var onecount;
onecount=0;
subcat = new Array();
<%
count = 0
do while not rs.eof
%>
subcat[<%=count%>] = new Array("<%= trim(rs("districtname"))%>","<%= trim(rs("locationid"))%>","<%= trim(rs("districtid"))%>");
<%
count = count + 1
rs.movenext
loop
rs.close
set rs=nothing
%>
onecount=<%=count%>;
function changelocation(locationid)
{
document.myform.smalllocation.length = 0;
var locationid=locationid;
var i;
document.myform.smalllocation.options[0] = new Option('==所选城市的地区==','');
for (i=0;i < onecount; i++)
{
if (subcat[i][1] == locationid)
{
document.myform.smalllocation.options[document.myform.smalllocation.length] = new Option(subcat[i][0], subcat[i][2]);
}
}
}
</script>
<%sql2 = "select * from village order by districtid asc"
set rs2 = conn.execute(sql2)
%>
<script language = "JavaScript">
var onecount2;
onecount2=0;
subcat2 = new Array();
<%
count2 = 0
do while not rs2.eof
%>
subcat2[<%=count2%>] = new Array("<%= trim(rs2("villagename"))%>","<%= trim(rs2("districtid"))%>","<%= trim(rs2("villageid"))%>");
<%
count2 = count2 + 1
rs2.movenext
loop
rs2.close
set rs2=nothing
%>
onecount2=<%=count2%>;
function changelocation2(villageid)
{
document.myform.village.length = 0;
var villageid=villageid;
var j;
document.myform.village.options[0] = new Option('==所选地区的县区==','');
for (j=0;j < onecount2; j++)
{
if (subcat2[j][1] == villageid)
{
document.myform.village.options[document.myform.village.length] = new Option(subcat2[j][0], subcat2[j][2]);
}
}
}
</script>
</head>
<body>
<form name="myform" method="post">
题目:<input type="text" name="T2" size="20">
来源:<input type="text" name="T3" size="20">
分类:<select name="biglocation" onChange="changelocation(document.myform.biglocation.options[document.myform.biglocation.selectedIndex].value)" size="1">
<option selected>请选择你所在的省份</option>
<%
sql1 = "select * from location order by locationname asc"
set rs1 = conn.Execute (sql1)
do while not rs1.eof
%>
<option value="<%=trim(rs1("locationid"))%>"><%=trim(rs1("locationname"))%></option>
<%
rs1.movenext
loop
rs1.close
set rs1 = nothing
conn.Close
set conn = nothing
%>
</select><select name="smalllocation" onChange="changelocation2(document.myform.smalllocation.options[document.myform.smalllocation.selectedIndex].value)">
<option selected value="">==所有地区==</option>
</select><select name="village" size="1">
<option selected>==所有县区==</option>
</select>
关键词:<input type="text" name="T4" size="20">
内容:<textarea rows="9" name="S1" cols="51"></textarea>
</form>
</body>
</html>
Top
5 楼hqcsx(蓝色心灵)回复于 2005-01-22 14:23:42 得分 1
同一个表用相同的原理Top
6 楼czcty(peter)回复于 2005-01-22 15:14:18 得分 3
php+mysql
http://blog.csdn.net/czcty/archive/2004/12/23/226263.aspxTop




