有三个复选框,如何写那条select语句,对MySQL数据库里的内容进行查询,后返回查询的结果.
参赛组别:<input type="checkbox" name="csdx" value ="1">教师<input type="checkbox" name="csdx" value ="2">学生<br>
作品类型:<input type="checkbox" name="zplx" value ="1">教学类<input type="checkbox" name="zplx" value ="2">活动类<input type="checkbox" name="zplx" value ="3">会议类<br>
作品风格:<input type="checkbox" name="zpfg" value ="1">高贵典雅<input type="checkbox" name="zpfg" value ="2">现代时尚<input type="checkbox" name="zpfg" value ="3">清爽健康<input type="checkbox" name="zpfg" value ="4">简洁个性<input type="checkbox" name="zpfg" value ="5">其他<br>
--------------------------------------------------------------------------------------------------
String csdx[] = request.getParameterValues("csdx");
String zplx[] = request.getParameterValues("zplx");
String zpfg[] = request.getParameterValues("zpfg");
String sql = "SELECT * FROM ppt WHERE";
String Scsdx ="";String Szplx = "";String Szpfg = "";
if(csdx.length>0)
{
for(int i=0;i<csdx.length;i++){
Scsdx=Scsdx+csdx[i]+",";
}
Scsdx=Scsdx.substring(0,Scsdx.length()-1);
sql=sql+ " csdx in("+Scsdx+")";}else{
if(zplx.length>0)
{
for(int i=0;i<zplx.length;i++){
Szplx=Szplx+zplx[i]+",";
}
Szplx=Szplx.substring(0,Szplx.length()-1);
sql=sql+ " AND zplx in("+Szplx+")";}else{
if(zpfg.length>0)
{
for(int i=0;i<zpfg.length;i++){
Szpfg=Szpfg+zpfg[i]+",";
}
Szpfg=Szpfg.substring(0,Szpfg.length()-1);
sql=sql+ " AND zpfg in("+Szpfg+")";}else{sql = "SELECT * FROM ppt";}}}
------------------------------------------------------------------------------------------------------
我写的语句出现问题,只能以第一个复选框的值来搜索,如果第一个复选框不选的话就会出错..
参赛组别:<input type="checkbox" name="csdx" value ="1">教师<input type="checkbox" name="csdx" value ="2">学生<br>
作品类型:<input type="checkbox" name="zplx" value ="1">教学类<input type="checkbox" name="zplx" value ="2">活动类<input type="checkbox" name="zplx" value ="3">会议类<br>
作品风格:<input type="checkbox" name="zpfg" value ="1">高贵典雅<input type="checkbox" name="zpfg" value ="2">现代时尚<input type="checkbox" name="zpfg" value ="3">清爽健康<input type="checkbox" name="zpfg" value ="4">简洁个性<input type="checkbox" name="zpfg" value ="5">其他<br>
--------------------------------------------------------------------------------------------------
String csdx[] = request.getParameterValues("csdx");
String zplx[] = request.getParameterValues("zplx");
String zpfg[] = request.getParameterValues("zpfg");
String sql = "SELECT * FROM ppt WHERE";
String Scsdx ="";String Szplx = "";String Szpfg = "";
if(csdx.length>0)
{
for(int i=0;i<csdx.length;i++){
Scsdx=Scsdx+csdx[i]+",";
}
Scsdx=Scsdx.substring(0,Scsdx.length()-1);
sql=sql+ " csdx in("+Scsdx+")";}else{
if(zplx.length>0)
{
for(int i=0;i<zplx.length;i++){
Szplx=Szplx+zplx[i]+",";
}
Szplx=Szplx.substring(0,Szplx.length()-1);
sql=sql+ " AND zplx in("+Szplx+")";}else{
if(zpfg.length>0)
{
for(int i=0;i<zpfg.length;i++){
Szpfg=Szpfg+zpfg[i]+",";
}
Szpfg=Szpfg.substring(0,Szpfg.length()-1);
sql=sql+ " AND zpfg in("+Szpfg+")";}else{sql = "SELECT * FROM ppt";}}}
------------------------------------------------------------------------------------------------------
我写的语句出现问题,只能以第一个复选框的值来搜索,如果第一个复选框不选的话就会出错..
解决方案 »
- 关于Servlet容器和doGet/Post()的疑问
- 新手关于servlet版本的困惑
- 求救。。我servlet有错误求各位大佬帮忙
- Web项目运行出错,控制台报出tomcat错误,请赐教
- 请教tomcat下java操mysql的一个奇怪问题
- excel导入数据库
- javamail会话资源的配置中的“JNDI”和“邮件主机”还有“缺省返回地址”分别是什么?能举个例子吗!谢谢
- 一个关于jsp和web-inf的问题
- For input string是什么错啊?!
- 紧急求助(给条路走):如何实现这样的数组表示形式:数组名->参数????
- 求一个最简单的启动例子。
- struts2 convention 不能导入 @Action(),@results() 等注解
if(!csdx.equals("")) ?每个复选框的value值在数据库里都是不同的字段的.应该没问题吧?
给点建议..我刚开始学...
SELECT * FROM ppt WHERE AND zplx in("+Szplx+") ,所以会提示错误
以本人两年的开发经验告诉你 ,定义sql语句时
String sql = "SELECT * FROM ppt WHERE 1 = 1";
这样不管第一个循环还是第二个循环,都直接累加' and' ,这样就不会报错
太感谢你了..我试试
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page"> </head>
<body>
<form action="${pageContext.request.contextPath }/index.jsp">
参赛组别:
<input type="checkbox" name="csdx" value="1">
教师
<input type="checkbox" name="csdx" value="2">
学生
<br>
<hr /> 作品类型:
<input type="checkbox" name="zplx" value="1">
教学类
<input type="checkbox" name="zplx" value="2">
活动类
<input type="checkbox" name="zplx" value="3">
会议类
<br>
<hr /> 作品风格:
<input type="checkbox" name="zpfg" value="1">
高贵典雅
<input type="checkbox" name="zpfg" value="2">
现代时尚
<input type="checkbox" name="zpfg" value="3">
清爽健康
<input type="checkbox" name="zpfg" value="4">
简洁个性
<input type="checkbox" name="zpfg" value="5">
其他
<br>
<hr />
<input type="submit" value="提交" />
</form>
</body>
<%
String[] csdx = request.getParameterValues("csdx");
String[] zplx = request.getParameterValues("zplx");
String[] zpfg = request.getParameterValues("zpfg");
String sql = "SELECT * FROM ppt WHERE 1=1 ";
String Scsdx = "";
String Szplx = "";
String Szpfg = "";
//判断参赛组别:
if(null != csdx && csdx.length > 0){
Scsdx = Arrays.asList(csdx).toString();
sql += " and csdx in "+(Scsdx.replace("[","(")).replace("]",")");
}
//作品类型:
if(null != zplx && zplx.length > 0){
Szplx = Arrays.asList(zplx).toString();
sql += " and zplx in "+(Szplx.replace("[","(")).replace("]",")");
}
//作品风格:
if(null != zpfg && zpfg.length > 0){
Szpfg = Arrays.asList(zpfg).toString();
sql += " and zpfg in "+(Szpfg.replace("[","(")).replace("]",")");
}
out.println(sql);
%>
</html>
我改了 String sql = "SELECT * FROM ppt WHERE 1 = 1";和判断选中的复选框的值if(!csdx.equals("")&&csdx.length > 0)to tengai_ygj:
太好了..谢谢指导..你的代码我可以成功运行..,知道我的代码关键是错再哪里?..可以给点建议吗?
代码跟你改了一下,你那样判断是有问题的,比如说:if(csdx.length>0)这样判断是不对的,如果你一个都不选的话,通过 request.getParameterValues()获取的是为空值,所有要加上"null != csdx"这样才对吗。还有的是你的if else用的不到位。逻辑有问题,干么写的那么复杂呢,想简单点既可以了。下面是我修改你的代码,然后住的的是在发帖的时候,主要把格式搞好,这样,被人很难看懂问题。代码可以直接运行:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page"> </head>
<body>
<form action="${pageContext.request.contextPath }/Test.jsp">
参赛组别:
<input type="checkbox" name="csdx" value="1">
教师
<input type="checkbox" name="csdx" value="2">
学生
<br>
<hr /> 作品类型:
<input type="checkbox" name="zplx" value="1">
教学类
<input type="checkbox" name="zplx" value="2">
活动类
<input type="checkbox" name="zplx" value="3">
会议类
<br>
<hr /> 作品风格:
<input type="checkbox" name="zpfg" value="1">
高贵典雅
<input type="checkbox" name="zpfg" value="2">
现代时尚
<input type="checkbox" name="zpfg" value="3">
清爽健康
<input type="checkbox" name="zpfg" value="4">
简洁个性
<input type="checkbox" name="zpfg" value="5">
其他
<br>
<hr />
<input type="submit" value="提交" />
</form>
</body>
<%
String[] csdx = request.getParameterValues("csdx");
String[] zplx = request.getParameterValues("zplx");
String[] zpfg = request.getParameterValues("zpfg");
String sql = "SELECT * FROM ppt WHERE 1=1 ";
String Scsdx = "";
String Szplx = "";
String Szpfg = "";
if (null != csdx && csdx.length > 0) {
for (int i = 0; i < csdx.length; i++) {
Scsdx = Scsdx + csdx[i] + ",";
}
Scsdx = Scsdx.substring(0, Scsdx.length() - 1);
sql = sql + " csdx in(" + Scsdx + ")";
}
if (null != zplx && zplx.length > 0) {
for (int i = 0; i < zplx.length; i++) {
Szplx = Szplx + zplx[i] + ",";
}
Szplx = Szplx.substring(0, Szplx.length() - 1);
sql = sql + " AND zplx in(" + Szplx + ")";
} if (null != zpfg && zpfg.length > 0) {
for (int i = 0; i < zpfg.length; i++) {
Szpfg = Szpfg + zpfg[i] + ",";
}
Szpfg = Szpfg.substring(0, Szpfg.length() - 1);
sql = sql + " AND zpfg in(" + Szpfg + ")";
} out.println(sql);
%>
</html>
非常感谢你的指导!!