100分 求教四级连动下拉框,搞掂后马上给分,急!!

fuzq 2003-08-21 09:17:44
本人想做一个四级的连动菜单,形式如下

表:xibie 里有字段
x_name ------系名
biao -----------系名对应的表名,比如电子系的则为dz,不同的系对应不同的表名

表:dz
zy -------专业名
classname -----班级名
num --------人数
boy --------男生数目

需要的效果为 在第一个列表框(xibie)选择不同的系别时,在第二个列表框(zy)相应地出现专业名称,在第三个列表框中(classname)出现班级名,而在第四个列表框(data)显示出该班的人数,男生数目,女生数目 ,,,
二级连动菜单的,可以做出,但是四级的却不知所为了,,还望各位高手指点
fuzq@hzu.edu.cn
急用!!!!
...全文
87 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuzq 2003-08-28
  • 打赏
  • 举报
回复
Thanks a lot!
junches 2003-08-24
  • 打赏
  • 举报
回复
to:fuzq(强强)
实在不好意思,这两天没来得及上网,你给的数据库与代码不符,我又建了个数据库,其实我的实现思路和你的是一样的,只是我认为级数太多的话可能会下载的数据太多,而并不是所有的数据都用的着的,我的实现是前几级用服务器端实现,后几级就用客户端实现。现把代码贴出来,另我再给你发到邮箱,不要说我失言哟!
<!--#include file="conn.asp"-->
<%
x_id=trim(request("x_id"))
%>
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<script language="JavaScript">
<!--
<%
if x_id<>"" then
%>var arrData=[];
<% set rs=conn.execute("select zy.id,ban.ban_name from zy,ban where zy.id=ban.zy_id and zy.x_id="&cint(x_id))
do until rs.eof
%>arrData[arrData.length]=["<%=trim(rs(0))%>","<%=trim(rs(1))%>"];
<% rs.movenext
loop
end if
%>
function chgzy()
{
document.frm.action="301.asp";
document.frm.submit();
}

function chgban()
{
document.frm.ban_name.length=0;
for(var i=0;i<arrData.length;i++)
{
with(document.frm){
if(arrData[i][0]==zy_name.options(zy_name.selectedIndex).value)
ban_name.options[ban_name.length]=new Option(arrData[i][1],arrData[i][1]);
}
}
}
//-->
</script>
</head>

<body>
<table width="504" border="1" cellpadding="0" cellspacing="0" bordercolor="#799AE1">
<tr align="center" bgcolor="#799AE1">
<td height="20" colspan="2">
<p><font face="宋体, Arial Narrow">任课老师分配</font></p></td>
</tr>
<form name="frm" action="301.asp" method="post">
<tr>
<td width="58" height="59">
<p> <br>
</p>
</td>
<td width="473">
<select name=x_id onChange="chgzy();">
<option value=""<%if x_id="" then%> selected<%end if%>>--选择系别--</option>
<%
set rs1=conn.execute("select id,x_name from xibie")
do while not rs1.eof
%><option value=<%=trim(rs1("id"))%><%if x_id=cstr(rs1("id")) then%> selected<%end if%>><%=trim(rs1("x_name"))%></option><%
rs1.movenext
loop
%>
</select>
<select name=zy_name onChange="chgban();">
<option selected>--选择专业--</option>
<%
if x_id<>"" then
set rs2=conn.execute("select id,zy_name from zy where x_id="&cint(x_id))
do while not rs2.eof
%><option value="<%=trim(rs2("id"))%>"><%=trim(rs2("zy_name"))%></option>
<%
rs2.movenext
loop
end if
%>
</select>
<select name=ban_name>
<option selected>--选择班级--</option>
</select>
</td>
</tr>
<tr>
<td colspan="2"><center>
<input name="imageField" type="image" src="img/ok.gif" align="middle" width="70" height="20" border="0">
</center></td>
</tr>
</form>
<tr align="center">
<td colspan="2"><font face="宋体, Arial Narrow">从左边选择老师,右边选择任教的班级</font></td>
</tr>
</table>
</body>
</html>
<% conn.close:set conn=nothing %>
另外,要注意你的程序的风格,有点乱。
fuzq 2003-08-22
  • 打赏
  • 举报
回复
今天仍没有收到junches(侵日山东军) 的任何代码或资料,决定结了
fuzq 2003-08-21
  • 打赏
  • 举报
回复
up
fuzq 2003-08-21
  • 打赏
  • 举报
回复
但得是asp版的啊,,

我不会将那些东西怎样用查询出来的结果表示, 纯javascript的不会改啊
fuzq 2003-08-21
  • 打赏
  • 举报
回复
三级的也行,, 自己努力点改下,
xupiao 2003-08-21
  • 打赏
  • 举报
回复
想必很少人做四級
但原理一樣的
自己分析一下
相信是沒問題的
mygoodbuy 2003-08-21
  • 打赏
  • 举报
回复
http://www.baron.com.cn/javascript/dao/20020722dao2.htm
我给你的是三级联动菜单的代码,我用它改成asp自动生成的三级联动菜单过。四级确实没有做过,但是原理是一样的,不论多少级,应该都一样。自己分析一下,应该很好做的。实在没有时间帮你把四级联动菜单的代码写出来,抱歉!
sdliubo 2003-08-21
  • 打赏
  • 举报
回复
这个比较麻烦看一下51job中有二级联动的代码 用JS写的

改动一下试试吧 不行的话就用刷新本页的方式

那个就很简单了
fuzq 2003-08-21
  • 打赏
  • 举报
回复
up
fuzq 2003-08-21
  • 打赏
  • 举报
回复
谢了 fason

晕,怎么没注意到这个问题

fason 2003-08-21
  • 打赏
  • 举报
回复
rs0.movenext

少了这个
fuzq 2003-08-21
  • 打赏
  • 举报
回复
下午在csdn上的找到了,,
http://expert.csdn.net/Expert/topic/1939/1939963.xml?temp=.8062708

是fason的贴子

但下午也出了点小小的笑话, 我在teacher表中有个字段 x_name 里有4个数据
分别为 me,you001,she002,he003


<select name="sel_teacher" id="select">
<% sql="select distinct tname from teacher order by tname"
set rs0= Server.CreateObject("adodb.recordset")
rs0.open sql,conn,3,2
for i0=1 to rs0.recordcount
response.write "<option value="&rs0("tname")&"> "&rs0("tname")&" </option>"
next
rs0.close
set rs0=nothing
%>
</select>

却只是有四个he003,搞笑,也不知怎回事的,
见 http://voodoo.jx169.com/fbbs/school/103.asp


本贴明天定结的,看下 junches(侵日山东军) 有何高招,
junches 2003-08-21
  • 打赏
  • 举报
回复
这种四级连动的菜单,有两种方法:
1、如果用客户端实现的话必须提前将所有的数据事前全部提取出来,这样的话会不会不好;
2、服务器端的话就要在下拉列表中的每次onchange中都要提交然后根据下拉列表的值对数据库进行检索,这样实现就比较容易了。
我看不如做成第二种。
不如你把数据库给我寄过来我试着做做
junches@163.com
fason 2003-08-21
  • 打赏
  • 举报
回复
copy也要看清楚点,下面那个函数才是正确的
fason 2003-08-21
  • 打赏
  • 举报
回复
copy也要看清楚点,下面那个函数才是正确的
bananasmiling 2003-08-21
  • 打赏
  • 举报
回复
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<!--
数据库:test.mdb
表:dbselect
表结构:id(自增) school(文本) department(文本) grade(文本) student(文本)

-->
</head>
<body>
<form name="frm">
<select name=school onchange="MulSelect(1)"></select>
<select name=department onchange="MulSelect(2)"></select>
<select name=grade onchange="MulSelect(3)"></select>
<select name=student></select>
</form>
<script>
var arrSel=["school","department","grade","student"]
arrData=[];
<%
dim conn,rs
set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("test.mdb") & ";Persist Security Info=False"
set rs=conn.execute("select * from dbselect")
do while not rs.eof
%>
arrData[arrData.length]=["<%=trim(rs("school"))%>","<%=trim(rs("department"))%>","<%=trim(rs("grade"))%>","<%=trim(rs("student"))%>"]
<%
rs.movenext
loop
rs.close:set rs=nothing
conn.close:set conn=nothing
%>
</script>
<script>
function MulSelect(num){
var find=false
var i,j,arrTemp=[];
for(i=0;i<num;i++)arrTemp[i]=eval("document.frm."+arrSel[i]).value
if(num<arrSel.length)
with(eval("document.frm."+arrSel[num])){
length=0
for(i=0;i<arrData.length;i++){
for(j=0;j<num;j++)if(arrTemp[j]!=arrData[i][j])break;
if(j!=num)continue;
if(length==0||options[length-1].text!=arrData[i][num]){
for(m=0;m<options.length;m++)if(options[m].text==arrData[i][num])find=true
if(!find)options[options.length]=new Option(arrData[i][num],arrData[i][num])
}
}
MulSelect((num+1))
}
}
MulSelect(0)
</script>
</body>
</html>
fason 2003-08-21
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1939/1939963.xml?temp=.8062708
杨小杨 2003-08-21
  • 打赏
  • 举报
回复
自己参照三级的来改!

28,390

社区成员

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

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