先是一个 changes.jsp 的关键代码,他的目的是实现复选框里的多值<%
String bookType[]={"dk","sk","gk","nk"};
int number=bookType.length;
%>
<body background="beijing.gif"><div align="center">
获取复选框的值
<form name="form" method="post" action="changes_result.jsp" onSubmit="return checkEmpty(form)">
<table width="276">
<tr>
<td width="266">选择渠道</td>
</tr>
<%
for(int i=0;i<bookType.length;i++){
%>
<tr>
<td><input type="checkbox" name="name<%=i%>" value="<%=bookType[i]%>">
<%=bookType[i]%></td>
</tr>
<%}%> </table>
<input type="hidden" name="number" value="<%=bookType.length%>">
<input type="submit" name="Submit" value="提交">查询得到结果 change_result.jsp 的关键代码:
<%
request.setCharacterEncoding("gb2312");
int number=Integer.parseInt(request.getParameter("number"));
%>
<%
for(int i=0;i<number;i++){
String name="name"+i;
if(request.getParameter(name)!=null){
%>
<tr>
<td width="226"><div align="center<%=request.getParameter(name)%></div></td>
</tr>
<%}}%>可以看到直接使用<%=request.getParameter(name)%> 就可以得到复选框里的值
但是,如果直接使用下面的,就是无法获得name 的值啊 <% }} catch(Exception ex) {}%>
<% try{
String sql="select * from serv6 where cust_gp in ('"+request.getParameter("name")+"') ";
ResultSet rs=connection.executeQuery(sql);
while(rs.next()){
%>所以,现在问题是,上面这段代码,该如何改,使得其可以得到name的值得呢?
哪个大大知道的 ,40分送上!
String bookType[]={"dk","sk","gk","nk"};
int number=bookType.length;
%>
<body background="beijing.gif"><div align="center">
获取复选框的值
<form name="form" method="post" action="changes_result.jsp" onSubmit="return checkEmpty(form)">
<table width="276">
<tr>
<td width="266">选择渠道</td>
</tr>
<%
for(int i=0;i<bookType.length;i++){
%>
<tr>
<td><input type="checkbox" name="name<%=i%>" value="<%=bookType[i]%>">
<%=bookType[i]%></td>
</tr>
<%}%> </table>
<input type="hidden" name="number" value="<%=bookType.length%>">
<input type="submit" name="Submit" value="提交">查询得到结果 change_result.jsp 的关键代码:
<%
request.setCharacterEncoding("gb2312");
int number=Integer.parseInt(request.getParameter("number"));
%>
<%
for(int i=0;i<number;i++){
String name="name"+i;
if(request.getParameter(name)!=null){
%>
<tr>
<td width="226"><div align="center<%=request.getParameter(name)%></div></td>
</tr>
<%}}%>可以看到直接使用<%=request.getParameter(name)%> 就可以得到复选框里的值
但是,如果直接使用下面的,就是无法获得name 的值啊 <% }} catch(Exception ex) {}%>
<% try{
String sql="select * from serv6 where cust_gp in ('"+request.getParameter("name")+"') ";
ResultSet rs=connection.executeQuery(sql);
while(rs.next()){
%>所以,现在问题是,上面这段代码,该如何改,使得其可以得到name的值得呢?
哪个大大知道的 ,40分送上!
.
<tr>
<td width="226">
<div align="center">
String sql="select * from serv6 where cust_gp in <%=request.getParameter(name)%>;
</div>
</td>
</tr>
.
.
<td><input type="checkbox" name="name<%=i%>" value="<%=bookType[i]%>">
改成
<td><input type="checkbox" name="channel" value="<%=bookType[i]%>">
对于多个复选框,可以用一个名字,这样你接受到的会是一个数组,存的是被钩上的checkbox 的value
在接受页面String[] chanel = request.getParameterValues("channel");
循环就ok了
try{
String sql="select * from serv6 where cust_gp in ('"+request.getParameter("channel")+"') ";
ResultSet rs=connection.executeQuery(sql);
while(rs.next()){
%>
就OK了?可是我发现,运行之后,我得到的channel 的值,只是复选框中的头一个的值啊
如果要取多个值,就如dragonsdg3(什么什么java)说的一样了,
那要用request.getParameterValues("name"),name为你的复选框的名字,并且你的所有复选框的名字都要是的一样的。
request.getParameterValues("name")反回的是一个字符串数组,使用时要这样:
String[] params = request.getParameterValues("name");但是在sql 语句 select ... in ()中,括号中的字符串却是要用 , 来隔开的,所以还要转换。
比如:
------------------
/**
*将一个字符串数组以","分开
*/
public static String splitID(String id[]){
StringBuffer str = new StringBuffer();
for(int i=0;i<id.length;i++){
if(i>0)
str.append(",");
str.append(id[i]);
}
return str.toString();
}
-------------------
所以你在sql语句中直接就这样用就可以了:
String sql="select * from serv6 where cust_gp in ("+splitID(params)+")";
你自己试试吧,不知道讲得对不对
String sql="select * from serv6 where cust_gp in ("+splitID(params)+")";
那splitID() 这个方法不要事先声明么?
这句话有错,应该是:
String sql="select * from serv6 where cust_gp in ('"+request.getParameter(name)+"') ";
看出不同了吗?
request中只有叫"name0""name1"的一堆参数,没有叫"name"的,name只是你在result页面定义的一个变量,怎么能加双引号呢?
你复制进去就可以了