| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 546 人关注过本帖
标题:[求助]各位请帮助一下!
只看楼主 加入收藏
lcd2105
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-8-22
收藏
 问题点数:0 回复次数:3 
[求助]各位请帮助一下!

怎样从二级联动菜单提交后取出数据?

<%
db_path = "2lian.mdb"
conn_str = "provider=Microsoft.Jet.Oledb.4.0;Data source=" & Server.MapPath(db_path)
err.clear
set conn=server.CreateObject("adodb.connection")
conn.Open conn_str
if err then
response.Write err.description
response.Write "<h1 style=""margin-top:200px;font-size:30px;font-weight:700;text-align:center;color:red;"" onmouseover=""this.style.font-color=blue;"">★数据库连接错误★</h1>"
err.clear
response.End()
end if
set rs = server.CreateObject("adodb.recordset")
function isRb(rs)
if rs.bof and rs.eof then
isrb = true
else
isrb = false
end if
end function
sub ShowErr(ErrStr)
response.Write "<h5 style=""color:#f00;"">"&ErrStr&"</h5>"
response.End()
end sub
sub RsOpen(oRs,sSql,oConn,adOpen,adLock)
on error resume next
if not Isobject(oRs) then call ShowErr("Recordset 对象错误")
if not Isobject(oConn) then call ShowErr("Connection 对象错误")
if sSql="" then call ShowErr("SQL语句为空")
if adOpen="" then call ShowErr("请指定游标[移动]锁定方式")
if adLock="" then call ShowErr("请指定游标[读写]锁定方式")
err.clear
oRs.open sSql,oConn,adOpen,adLock
if err then call ShowErr("Recordset打开错误:"&err.description)
end sub
sub Rso11(oRs,oConn,sSql)
RsOpen oRs,sSql,oConn,1,1
end sub
function dbcombox()
if not isobject(rs3) then set rs3=server.CreateObject("adodb.recordset")
sql = "select id,class_name from classes where depth=1 order by corder"
Rso11 rs3,conn,sql
if not isrb(rs3) then
tt=rs3.recordcount
for ii=1 to tt
msg = msg & "<option>" & rs3(1) & "</option>"&vbcrlf
rs3.movenext
next
end if
rs3.close
set rs3=nothing
dbcombox = msg
end function
function Get1stSubclass()
if not isobject(rs3) then set rs3=server.CreateObject("adodb.recordset")
sql = "select id,class_name from classes where pid=(select top 1 id from classes where depth=1 order by corder)"
Rso11 rs3,conn,sql
if not isrb(rs3) then
i=rs3.recordcount
for ii=1 to i
msg = msg & "<option>" & rs3(1) & "</option>"&vbcrlf
rs3.movenext
next
end if
rs3.close
set rs3=nothing
Get1stSubclass=msg
end function
%>
<form name="regin" method="post" action="">
<select name="pclass" size="1" onChange="SetSubClass(this.options.selectedIndex)"><%=dbcombox()%></select>
<select name="sclass" size="1"><%= Get1stSubclass %></select>
<input type="submit" name="goaler" value="提交">
</form>
<script type="text/javascript">

var groups=document.regin.pclass.options.length
var group=new Array(groups)
for (i=0; i<groups; i++)
group[i]=new Array()
<%
sql="select id,class_name from [classes] where depth=1 order by corder"
Rso11 rs,conn,sql
if not isrb(rs) then
t=rs.recordcount-1
for i=0 to t
if not isobject(rs2) then set rs2=server.CreateObject("adodb.recordset")
sql2="select id,class_name from [classes] where pid="&rs(0)&" order by corder"
Rso11 rs2,conn,sql2
if not isrb(rs2) then
r=rs2.recordcount-1
for ii=0 to r
response.Write "group["&i&"]["&ii&"]=new Option("""&rs2(1)&""","""&rs2(0)&""")"&vbcrlf
rs2.movenext
next
end if
rs2.close
rs.movenext
next
end if
rs.close
%>
var temp=document.regin.sclass
function SetSubClass(x){
for (m=temp.options.length-1;m>0;m--)
temp.options[m]=null
for (i=0;i<group[x].length;i++){
temp.options[i]=new Option(group[x][i].text,group[x][i].value)
}
temp.options[0].selected=true
}
//-->
</script>

<%取值(如何做,请帮忙!!!)
if request("goaler")<>"" then
response.write " "
end if%>

我是在数据库建了一个表,表的格式是这样的:
字段名称 数据类型 说明
ID 自动编号
class_name 文本 分类名称
pid 数字 父类编号
corder 数字 分类顺序
depth 数字 分类深度

id class_name pid corder depth
1 一部 0 1 1
2 二部 0 2 1
3 一科 1 3 2
4 二科 1 4 2
5 三科 2 5 2
6 四科 2 6 2

[此贴子已经被作者于2006-9-12 12:10:43编辑过]

搜索更多相关主题的帖子: 怎样 数据库连接 center source color 
2006-09-12 12:07
mwyvkevke
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-9-7
收藏
得分:0 
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;js动态三级联动下拉表单试验&lt;/title&gt;&lt;!--=======打开数据库======--&gt;
&lt;%
Set Conn = Server.CreateObject("ADODB.Connection")
StrCnn = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" &amp; Server.MapPath("db1.mdb") &amp; ";"
Conn.Open StrCnn
%&gt;

&lt;/head&gt;
&lt;body&gt;
&lt;form name="myform" method="post"&gt;
&lt;% set rs=server.CreateObject("adodb.recordset")
 sq="select * from 一级表"
 rs.open sq,conn,1,1
 %&gt;
&lt;select  name="class1"  onChange="changeclass2();changeclass3()"&gt;
&lt;option value="" selected&gt;选择一级目录&lt;/option&gt;
&lt;%
while not rs.eof
%&gt;
&lt;option value="&lt;%=rs("一级类")%&gt;"&gt;&lt;%=rs("一级类")%&gt;&lt;/option&gt;
&lt;%rs.movenext
wend
rs.close%&gt;
 &lt;/select&gt;
&lt;select  name="class2" onChange="changeclass3()"&gt;
&lt;option value="" selected&gt;选择二级目录&lt;/option&gt;
&lt;/select&gt;
&lt;select  name="class3"&gt;
&lt;option value="" selected&gt;选择三级目录&lt;/option&gt; &lt;/select&gt;  
&lt;%sql="select * from 二级表"
rs.open sql,conn,1,1
num=rs.recordcount
str=""
for i=1 to rs.recordcount
 str=str&amp;rs("一级类")&amp;"-"&amp;rs("二级类")&amp;","
 if rs.eof then
 exit for
   end if
 rs.movenext

 next
 rs.close
  %&gt;
 &lt;%
 sql="select * from 三级表"
 rs.open sql,conn,1,1
 num2=rs.recordcount
 str2=""
  for i=1 to rs.recordcount
  str2=str2&amp;rs("二级类")&amp;"-"&amp;rs("三级类")&amp;","
  if rs.eof then
  exit for
  end if
  rs.movenext
 
   next
   rs.close %&gt; &lt;!--下面是实现动态改变下一级菜单的脚本代码--&gt;
   &lt;script  LANGUAGE="javascript"&gt;
   arr="&lt;%=str%&gt;".split(",");
   a=arr.length
   ar=new Array()
   for (i=0;i&lt;a;i++)
   { ar[i]=arr[i].split("-");
    }
    onecount=ar.length;
    arr2="&lt;%=str2%&gt;".split(",");
    a2=arr2.length
    ar2=new Array()
       for (i=0;i&lt;a2;i++)
       {
       ar2[i]=arr2[i].split("-");
        }
        onecount2=ar2.length;
         function  changeclass2()
         { document.myform.class2.length=0
          lid=myform.class1.value;   
             for  (i=0;i&lt;onecount;i++)
              {     
              if  (ar[i][0]  ==  lid) {
                document.myform.class2.options.add(new Option(ar[i][1],  ar[i][1]));     
                 }
                 }
                }   
                function  changeclass3()
                {
                document.myform.class3.length=0
                lid2=myform.class2.value;  
                      for  (i=0;i&lt;onecount2;i++)
                       {     if  (ar2[i][0]  ==  lid2)
                        {   document.myform.class3.options.add(new Option(ar2[i][1],  ar2[i][1]));        }   
                         }  
                           }
                              &lt;/script&gt;
                              &lt;/body&gt;
                              &lt;/html&gt;
看看这段对你有没有用。
2006-09-12 12:50
lcd2105
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-8-22
收藏
得分:0 
谢谢你对我提问的关注。你这段代码需要建三个表,而我是要一个表内完成的,二级联动菜单的代码我已运行过是正确的,我现需要把它取出来,这个段代码怎么写?能否帮我一下。
2006-09-12 13:22
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 

在表单里做一个隐藏域
<input type="hidden" >
把菜单onchange事件时得到的值放到隐藏域里一起提交即可。

2006-09-12 14:03
快速回复:[求助]各位请帮助一下!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.084057 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved