注册 登录
编程论坛 ASP技术论坛

[求助]一个表单传多个值的问题

sldtk1 发布于 2007-10-13 12:05, 1831 次点击

如果一个页面内有多个查询按钮,用一个表单提交到另一个页面处理,那么如何判断点击了哪个按钮,另一个页面应该如何处理,请各位指教,谢谢!

21 回复
#2
yms1232007-10-13 12:45
abc.htm
<html>
<head>
<title>提交页面</title>
<script language="javascript">
function Page_Submit(idx)
{
document.form1.SubBtn.value=idx;
document.form1.submit();
}
</script>
</head>
<body>
<form name="form1" action="abc.asp" method="post" >
<input type="button" value="提交" onClick="Page_Submit(1);" >提交按钮1<br>
<input type="button" value="提交" onClick="Page_Submit(2);" >提交按钮2
<input type="hidden" name="SubBtn" >
</form>
</body>
</html>

abc.asp
<html>
<head>
<title>处理页面</title>
</head>
<body>
<%
Select Case Request.Form("SubBtn")
Case "1"
Response.Write "提交了按钮1"
Case "2"
Response.Write "提交了按钮2"
Case Else
Response.Write "什么也没提交"
End Select
%>
</body>
</html>
#3
sldtk12007-10-13 14:48
谢谢,还有一个问题,如何让不同的查询结果都能用一个表显示出来呢,比如单击查询1,结果在表1中显示,单击查询2,结果也在表1中显示,就是让表1成为通用的显示数据的地方.
如果查出来有多个数据,怎么让表的行数自动添加以显示完所有数据呢?

[此贴子已经被作者于2007-10-13 14:49:08编辑过]

#4
永夜的极光2007-10-13 16:03

<table>
<%
do while not rs.eof
%>
<tr>
    <td><%=rs(\"fieldname\")%>
    </td>
</tr>
<%
rs.movenext
loop
%>
</table>
#5
yms1232007-10-13 19:02
以下是引用sldtk1在2007-10-13 14:48:12的发言:
谢谢,还有一个问题,如何让不同的查询结果都能用一个表显示出来呢,比如单击查询1,结果在表1中显示,单击查询2,结果也在表1中显示,就是让表1成为通用的显示数据的地方.
如果查出来有多个数据,怎么让表的行数自动添加以显示完所有数据呢?

楼主用的是什么数据库?

#6
sldtk12007-10-13 19:19
access,已经用4楼兄弟的方法解决了自动增加行的问题,可只能用一个查询,其它查询如rs2,rs3不知怎么加进去
#7
永夜的极光2007-10-13 19:41
要学会举一反三的

<table>
<%
do while not rs.eof
%>
<tr>
    <td><%=rs(\"fieldname\")%>
    </td>
</tr>
<%
rs.movenext
loop
do while not rs2.eof
%>
<tr>
    <td><%=rs2(\"fieldname\")%>
    </td>
</tr>
<%
rs2.movenext
loop
do while not rs3.eof
%>
<tr>
    <td><%=rs3(\"fieldname\")%>
    </td>
</tr>
<%
rs3.movenext
loop
%>
</table>
#8
sldtk12007-10-13 20:09
谢谢楼上提示,之前学的是.NET,所以对于ASP一点语法也不懂
也没学过VB,不过现在懂了很多
#9
sldtk12007-10-13 20:43
好像出了一点问题,rs1,rs2应该在什么地方定义?
只有本站会员才能查看附件,请 登录

[此贴子已经被作者于2007-10-13 20:44:09编辑过]

#10
yms1232007-10-13 21:20
表1这个表1是什么地方的表?Access还是网页上的?
#11
willam2007-10-13 21:20
set rs1=server.createobject("adodb.recordset")
#12
sldtk12007-10-13 21:30
以下是引用yms123在2007-10-13 21:20:56的发言:
表1这个表1是什么地方的表?Access还是网页上的?

就是查询的结果在网页上的<table></table>中显示

[此贴子已经被作者于2007-10-13 21:32:18编辑过]

#13
yms1232007-10-13 21:37
办法一:如果两个表都是有关系的表,就可以用联合查询。
办法二:如果楼主只是想把表2的查询结果接在表一后面,可以用7楼的办法。
#14
sldtk12007-10-13 21:47
其实我只是从一个数据表里取数据,点查询1后结果显示网页的table里,再点查询2,结果也用这个table,但不显示查询1的结果,两个查询是独立的,只显示各自的结果,不接在一起,就像.NET的GridView或者是DataGrid一样.
#15
yms1232007-10-13 21:55
以下是引用sldtk1在2007-10-13 21:47:06的发言:
其实我只是从一个数据表里取数据,点查询1后结果显示网页的table里,再点查询2,结果也用这个table,但不显示查询1的结果,两个查询是独立的,只显示各自的结果,不接在一起,就像.NET的GridView或者是DataGrid一样.

可以传SQL语句到一个rs对象中。

只有本站会员才能查看附件,请 登录

楼主可以看看这个我以前写的ASP搜索,楼主说的那个跟这个我想原理上是差不多的。
#16
sldtk12007-10-13 22:15

一些细节上面不太同,还是想问问,我的查询页面代码
[CODE]<script language="javascript">
function Page_Submit(idx)
{
document.form1.SubBtn.value=idx;
document.form1.submit();
}
</script>
<form id="form1" name="form1" method="post" action="list.asp">
<table width="882" border="1" cellpadding="0" cellspacing="0" bordercolor="#99FFFF">
<tr bordercolor="#FFFFFF" bgcolor="#FFFFCC">
<th colspan="6" scope="col"><div align="left">
<p class="STYLE1">请选择您想查询的内容:</p>
</div></th>
</tr>
<tr bgcolor="#CCFFCC">
<td width="72">类 型:</td>
<td width="200"><select name="select0" size="1">
<option value="台式机" selected="selected">台式机</option>
<option value="笔记本">笔记本</option>
<option value="服务器">服务器</option>
</select></td>
<td width="60"><input type="submit" name="Submit" value="查询" onClick="Page_Submit(1);"/></td>
<td width="249">主 频:</td>
<td width="115"><select name="select4" size="1">
<option selected="selected">1GHZ-1.8GHZ</option>
<option>1.8GHZ-3GHZ</option>
<option>3GHZ以上</option>
</select></td>
<td width="172"><input type="submit" name="Submit4" value="查询" onClick="Page_Submit(2);"/></td>
</table>[/CODE]
这是处理页面,不知道case2可以那样写吗?
[CODE]<%
select case Request.Form("SubBtn")
case "1"
computertype=request.form("select0")
dim con,DBPath
set con=server.CreateObject("ADODB.Connection")
DBPath=server.MapPath("data.mdb")
con.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&DBPath&";Persist Security Info=False"
set rs=server.CreateObject("ADODB.Recordset")
sql="select * from [Dell] where 类型 like '%"&computertype&"%'"
con.execute sql
rs.open sql,con,1,3
case "2"
zp=request.form("select4")
set con=server.CreateObject("ADODB.Connection")
DBPath=server.MapPath("data.mdb")
con.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&DBPath&";Persist Security Info=False"
set rs1=server.CreateObject("ADODB.Recordset")
sql="select * from [Dell] where 主频 like '%"&zp&"%'"
con.execute sql
rs1.open sql,con,1,3
case else
Response.Write "什么也没提交"
End Select
%>
以下是查询结果:
<table cellspacing="0" id="mytable">
<tr>
<th width="74"><div align="center">产品编号</div></th>
<th width="209"><div align="center">产品名称</div></th>
<th width="73"><div align="center">主频</div></th>
<th width="99"><div align="center">单双核</div></th>
<th width="77"><div align="center">内存</div></th>
<th width="93"><div align="center">硬盘</div></th>
<th width="171"><div align="center">光驱</div></th>
<th width="124"><div align="center">显卡</div></th>
<th width="161"><div align="center">显示器</div></th>
<th width="202"><div align="center">操作系统</div></th>
<th width="108"><div align="center">类型</div></th>
<th width="83"><div align="center">售价</div></th>
</tr>
<%
do while not rs.eof
%>
<tr>
<td>
<%=rs("产品编号")%>
</td>
<td>
<%=rs("产品名称")%>
</td>
<td>
<%=rs("主频")%>
</td>
<td>
<%=rs("单双核")%>
</td>
<td>
<%=rs("内存")%>
</td>
<td>
<%=rs("硬盘")%>
</td>
<td>
<%=rs("光驱")%>
</td>
<td>
<%=rs("显卡")%>
</td>
<td>
<%=rs("显示器")%>
</td>
<td>
<%=rs("预装操作系统")%>
</td>
<td>
<%=rs("类型")%>
</td>
<td>
<%=rs("售价")%>
</td>
</tr>
<%
rs.movenext
loop
do while not rs1.eof
%>
'这里还想显示case2的内容,但不知道怎么写下去了
</table>
<% if rs.eof and rs.bof then %>
对不起,没有找到相关内容
<%
rs.close
set rs=nothing
con.close
set con=nothing
%>
<% end if %>[/CODE]

可以帮忙纠正下吗?

#17
yms1232007-10-13 22:48
[CODE]<%
dim con,DBPath
set con=server.CreateObject("ADODB.Connection")
DBPath=server.MapPath("data.mdb")
con.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&DBPath&";Persist Security Info=False"
set rs=server.CreateObject("ADODB.Recordset")
select case Request.Form("SubBtn")
case "1"
computertype=request.form("select0")
sql="select * from [Dell] where 类型 like '%"&computertype&"%'"
con.execute sql
rs.open sql,con,1,3
case "2"
zp=request.form("select4")
sql="select * from [Dell] where 主频 like '%"&zp&"%'"
con.execute sql
rs.open sql,con,1,3
case else
Response.Write "什么也没提交"
End Select
%>
以下是查询结果:
<table cellspacing="0" id="mytable">
<tr>
<th width="74"><div align="center">产品编号</div></th>
<th width="209"><div align="center">产品名称</div></th>
<th width="73"><div align="center">主频</div></th>
<th width="99"><div align="center">单双核</div></th>
<th width="77"><div align="center">内存</div></th>
<th width="93"><div align="center">硬盘</div></th>
<th width="171"><div align="center">光驱</div></th>
<th width="124"><div align="center">显卡</div></th>
<th width="161"><div align="center">显示器</div></th>
<th width="202"><div align="center">操作系统</div></th>
<th width="108"><div align="center">类型</div></th>
<th width="83"><div align="center">售价</div></th>
</tr>
<%
do while not rs.eof
%>
<tr>
<td>
<%=rs("产品编号")%>
</td>
<td>
<%=rs("产品名称")%>
</td>
<td>
<%=rs("主频")%>
</td>
<td>
<%=rs("单双核")%>
</td>
<td>
<%=rs("内存")%>
</td>
<td>
<%=rs("硬盘")%>
</td>
<td>
<%=rs("光驱")%>
</td>
<td>
<%=rs("显卡")%>
</td>
<td>
<%=rs("显示器")%>
</td>
<td>
<%=rs("预装操作系统")%>
</td>
<td>
<%=rs("类型")%>
</td>
<td>
<%=rs("售价")%>
</td>
</tr>
<%
rs.movenext
loop
%>
'这里还想显示case2的内容,但不知道怎么写下去了
</table>
<% if rs.eof and rs.bof then %>
对不起,没有找到相关内容
<%
rs.close
set rs=nothing
con.close
set con=nothing
%>
<% end if %>[/CODE]
跟本不需要另一个rs1直接使用一个rs就可以了。
#18
sldtk12007-10-13 23:46
谢谢版主,已经做好一部分了,可是为什么在查询的时候有些可以正确查询,有些不能呢?好像是有汉字的查询会出错
#19
yms1232007-10-14 00:12
以下是引用sldtk1在2007-10-13 23:46:41的发言:
谢谢版主,已经做好一部分了,可是为什么在查询的时候有些可以正确查询,有些不能呢?好像是有汉字的查询会出错

这个可能是汉字编码问题。

#20
sldtk12007-10-14 00:57
有什么解决方法吗?
#21
yms1232007-10-14 14:50
[CODE]<script language="javascript">
function Page_Submit(idx)
{
document.form1.SubBtn.value=idx;
document.form1.submit();
}
function selCls_Change()
{
var tSelCls=document.form1.selCls;
var selVal=tSelCls.options[tSelCls.selectedIndex].value;
document.form1.select0.value=selVal;
}
function selSpeeds_Change()
{
var tSelSpeeds=document.form1.selSpeeds;
var selVal=tSelSpeeds.options[tSelSpeeds.selectedIndex].value;
document.form1.select4.value=selVal;
}
</script>
<form id="form1" name="form1" method="post" action="list.asp">
<table width="882" border="1" cellpadding="0" cellspacing="0" bordercolor="#99FFFF">
<tr bordercolor="#FFFFFF" bgcolor="#FFFFCC">
<th colspan="6" scope="col"><div align="left">
<p class="STYLE1">请选择您想查询的内容:</p>
</div></th>
</tr>
<tr bgcolor="#CCFFCC">
<td width="72">类 型:</td>
<td width="200"><select name="selCls" onChange="selCls_Change();" size="1">
<option value="台式机" selected >台式机</option>
<option value="笔记本">笔记本</option>
<option value="服务器">服务器</option>
</select>
<input type="hidden" name="select0" >
</td>
<td width="60"><input type="submit" name="Submit" value="查询" onClick="Page_Submit(1);"/></td>
<td width="249">主 频:</td>
<td width="115"><select name="selSpeeds" onChange="selSpeeds_Change();" size="1">
<option selected >1GHZ-1.8GHZ</option>
<option>1.8GHZ-3GHZ</option>
<option>3GHZ以上</option>
</select>
<input type="hidden" name="select4" onChange="select4_Change();" >
</td>
<td width="172"><input type="submit" name="Submit4" value="查询" onClick="Page_Submit(2);"/></td>
</table>[/CODE]
这样试试。
#22
sldtk12007-10-14 18:12

显示没有找到数据,看来用中文还是不行
我把数据表里面的信息都改成英文,查询都成功了

1