怎样通过一个select的选择到数据库查询并动态生成另一个select的内容?

steer1 2004-03-22 09:03:59
举个例子,数据库里 有A,B,C。。。 等若干个大类,每个大类下有很多小类的值,比如:A下面有a,b,c B下面有e,f,g C下面有h,i 。。。
因为大类和小类的值都是可能不断添加的,所以不能写死,我想在Asp里先列出大类里的所有值到一个 select name=Big ,然后,根据 这个select的选择项,再动态生成一个select name=small 里面显示这个大类的所有小类的值

(就是填表的时候,先选择一个省的名字,然后动态生成这个省里的城市)
...全文
168 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
allan520 2004-03-22
  • 打赏
  • 举报
回复
<select name="select" size="1" onChange="location.href = value;">
....
<option value="****.asp?action=change">第<%=t%>页</option>
....
</select>
cjf1009 2004-03-22
  • 打赏
  • 举报
回复
onchage
qzriso 2004-03-22
  • 打赏
  • 举报
回复
用连接查询:
sql="select A.字段,b.字段 from A,B where A.关联字段=B.关联字段"
steer1 2004-03-22
  • 打赏
  • 举报
回复
上面这些是不是一开始都查询好的? 我这里各子类的数据都很多,有没有点击后再查询,然后动态生成的?
ghlfllz 2004-03-22
  • 打赏
  • 举报
回复
<!--#include file="include/conn.asp"-->
<title>菜单连动类的设计</title>
<%
'生成部门与人员列表数组
Response.Write("<script language='javascript'>"&vbcrlf)
Response.Write("var partarray=new Array();"&vbcrlf)
Response.Write("var userarray=new Array();"&vbcrlf)
partsql="select depart_id,depart_name from depart where company_id=1"
set partrs=server.CreateObject("ADODB.RecordSet")
partrs.Open partsql,conn,1,3

partcount=0
if not partrs.EOF and not partrs.BOF then
do while not partrs.EOF and not partrs.BOF
Response.Write("partarray["&partcount&"]='"&partrs("depart_id")&","&partrs("depart_name")&"';"&vbcrlf)
partrs.movenext
partcount=partcount+1
loop
end if

partrs.Close
set partrs=nothing

usersql="select employee_id,employee_name,employee_depart from employee where employee_status=1 and employee_company=1"
set userrs=server.CreateObject("ADODB.RecordSet")
userrs.Open usersql,conn,1,3

usercount=0
if not userrs.EOF and not userrs.BOF then
do while not userrs.EOF and not userrs.BOF
Response.Write("userarray["&usercount&"]='"&userrs("employee_id")&","&userrs("employee_name")&","&userrs("employee_depart")&"';"&vbcrlf)
userrs.MoveNext
usercount=usercount+1
loop
end if

userrs.Close
set userrs=nothing

Response.Write("</script>")
%>
<form name="form1" action="" method="post">
部门:
<select name="coursepart" size=1 onchange="buildman(document.form1.coursepart.options[document.form1.coursepart.selectedIndex].value)">
</select>
<br>
人员:
<select name="courseman" size=1>
</select>
</form>
<script language="javascript">
//生成默认的部门与人员下拉菜单
builddepart();
buildman(partarray[0].split(",")[0]);

//生成部门下拉菜单
function builddepart() {
document.form1.coursepart.length = 0;
var i;
for (i=0;i <partarray.length; i++) {
document.form1.coursepart.options[document.form1.coursepart.length] = new Option(partarray[i].split(",")[1],partarray[i].split(",")[0]);
}
}

//根据部门下拉菜单的值动态生成人员的值
function buildman(partid) {
document.form1.courseman.length=0;
var i;
for (i=0;i<userarray.length;i++) {
if (userarray[i].split(",")[2]==partid) {
document.form1.courseman.options[document.form1.courseman.length]=new Option(userarray[i].split(",")[1],userarray[i].split(",")[0]);
}
}
}
</script>
<!--#include file="include/disconn.asp"-->
steer1 2004-03-22
  • 打赏
  • 举报
回复
我很菜,点了第一个select如何触发?
第二, 2个select在同一个form里面,因为最后选完了以后都要提交 然后把选择的内容保存到数据库
luckweb 2004-03-22
  • 打赏
  • 举报
回复
'你在论坛中搜索"联动",例子很多的

<tr>
<td class=forumrow width="93">
<p align="right">产品主类:</td>
<td class=forumrow width="484">


<SELECT id=lx name=lx onchange="display(document.all('lx').value)" style="WIDTH:100px">
<%
dim rs
dim sql
cn.open
set rs = server.createObject("ADODB.RecordSet")
sql = "select * from qymllxb order by id"
rs.open sql,cn,1,3
if rs.eof then
Response.Write"无类型可选!"
else
Response.Write"<option value='0'>请选择</option>"
do while not rs.eof
Response.Write"<option value='"& rs("lx") &"'>"& rs("lx") &"</option>"
rs.movenext
loop
rs.close
set rs = nothing
cn.close
end if
%>
</SELECT>

</td>
</tr>
<SCRIPT LANGUAGE=vbscript >
dim i,j,choice(2,100)
<%
dim i,j,choicea(2,100)
cn.open
set rs = server.createObject("ADODB.RecordSet")
sql="select * from qymlzlxb order by id"
rs.open sql,cn,1,3
zlxs=rs.RecordCount
for i=0 to zlxs-1
choicea(1,i)=rs("zlx")
choicea(2,i)=rs("lx")
rs.MoveNext
next
cn.close
%>

<%for i=0 to zlxs-1%>
choice(1,<%=i%>) = "<%=choicea(1,i)%>"
choice(2,<%=i%>) = "<%=choicea(2,i)%>"
<%next%>
sub display(obj)
document.all("flx").length =0
for i=0 to ubound(choice,2)
if choice(2,i)=obj then
set opt=document.createElement("OPTION")
opt.text=choice(1,i)
opt.value=choice(1,i)
document.all("flx").add(opt)
end if
next
end sub
</SCRIPT>
<tr>
<td class=forumrow width="93">
<p align="right">产品分类:</td>
<td class=forumrow width="484">
<SELECT id=flx name=flx style="WIDTH:100px">
<option value=""></option>
</SELECT>
</td>
</tr>
Januarius_ 2004-03-22
  • 打赏
  • 举报
回复
通过select选择的内容查询数据库就不用说了吧
查询到内容以后,可以用服务器端生成客户端代码
比如
<select ......>
do while not rst.eof
response.write "<option>......." & vbcrlf _
& "<option>......"
rst.movenext
loop
</select>

28,390

社区成员

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

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