您好我正在编写一个代码,人们可以使用jsp从数据库中搜索活动。当我执行程序时,我可以成功地根据类型,描述,位置,城市进行搜索。我可以在页面上看到数据。但是当我选择明天等日期选项时,它会返回空表。我的代码中的问题在哪里?什么是正确的代码? (PS所有属性都是varchar,除了id)
如果我将类型填写为“音乐”,我正在使用此表 search.jsp的
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import ="java.sql.*" %>
<!DOCTYPE html>
<html>
<body background="http://www.teamarking.com/barcode/bar_background.jpg">
<form method="post" action="reservations.jsp">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Book Ticket</title>
</head>
<center>
<table border="1" width="30%" height="30%">
<th><font color='#D18603'>id</font>
<th><font color='#D18603'>Type</font></th>
<th><font color='#D18603'>Description</font></th>
<th><font color='#D18603'>City</font></th>
<th><font color='#D18603'>Location</font></th>
<th><font color='#D18603'>Date</font></th>
<th><font color='#D18603'>Price</font></th>
<th><font color='#D18603'>Buy</font>
<%
Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/users", "users", "123");
Statement st = con.createStatement();
ResultSet rs;
PreparedStatement ps = con.prepareStatement("select * from activities where type=? OR description=? OR city=? OR location=? OR date=? OR time=?");
ps.setString(1, request.getParameter("type"));
ps.setString(2, request.getParameter("description"));
ps.setString(3, request.getParameter("city"));
ps.setString(4, request.getParameter("location"));
ps.setString(5, request.getParameter("date"));
ps.setString(6, request.getParameter("time"));
rs = ps.executeQuery();
while (rs.next()) {
out.println("<tr>");
out.println("<form action='reservations.jsp'>");
out.println("<td>" + rs.getString("id") + "<input type='hidden' name='id' value='" + rs.getString("id") + "'></td>");
out.println("<td>" + rs.getString("type") + "<input type='hidden' name='type' value='" + rs.getString("type") + "'></td>");
out.println("<td>" + rs.getString("description") + "<input type='hidden' name='description' value='" + rs.getString("description") + "'></td>");
out.println("<td>" + rs.getString("city") + "<input type='hidden' name='city' value='" + rs.getString("city") + "'></td>");
out.println("<td>" + rs.getString("location") + "<input type='hidden' name='location' value='" + rs.getString("location") + "'></td>");
out.println("<td>" + rs.getString("date") + "<input type='hidden' name='date' value='" + rs.getString("date") + "'></td>");
out.println("<td>" + rs.getString("price") + "<input type='hidden' name='price' value='" + rs.getString("price") + "'></td>");
out.println("<td>" + rs.getString("time") + "<input type='hidden' name='time' value='" + rs.getString("time") + "'></td>");
out.println("<td><b><form action='reservations.jsp'><select name='buy'><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option></select><input type='submit' value='Submit'></form></b>");
out.println("</tr>");
}
st.close();
%>
</center>
</table>
<br> <br><a href='success.jsp'>Back</a>
<br><br><a href='logout.jsp'>Log out</a>
</form>
</body>
</html>
的success.jsp
<%--
Document : success
Created on : 19.Ara.2016, 12:41:49
Author : BURAK NURÇİÇEK
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body background="http://www.teamarking.com/barcode/bar_background.jpg">
<marquee><h2 style="color:RED">WELCOME TO ONLINE RESERVATION SYSTEM </marquee></h2>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<form method = "get" action = "search.jsp">
<table align="right">
<tr><td><b><font color='#D18603'>Type :</b></td><td><input type="text" name="type" /></td></tr>
<tr><td><b><font color='#D18603'>Description :</b></td><td><input type="text" name="description" /></td></tr>
<tr><td><b><font color='#D18603'>City :</b></td><td><input type="text" name="city" /></td></tr>
<tr><td><b><font color='#D18603'>Location :</b></td><td><input type="text" name="location" /></td></tr>
<tr><td><b><font color='#D18603'>Date(YYYY-MM-DD) :</b></td><td><select name='time'><option value='1'>Today</option><option value='2'>Tomorrow</option><option value='3'>This Week</option><option value='4'>This Weekend</option><option value='5'>Next Week</option><option value='6'>Next Weekend</option></option></select></b>;
<tr><td colspan="2" align="center"><input type="submit" value="search" /> <input type="reset" value="reset" /></td></tr></td></tr>
<%
String x = (String) application.getAttribute("id");
//out.println(x);
%>
</table>
</div>
</body>
</html>
答案 0 :(得分:0)
只需更改选项标记的值:从1到今天,2到明天。 ...
答案 1 :(得分:0)
这是您的选择
<select name='time'>
<option value='1'>Today</option>
<option value='2'>Tomorrow</option>
<option value='3'>This Week</option>
<option value='4'>This Weekend</option>
<option value='5'>Next Week</option>
<option value='6'>Next Weekend</option>
</option>
</select>
在JSP中,您将收到value
。不是日期而是数值(在字符串中)。
您应该根据此数值评估所需的日期。使用开关和Calendar
将值添加到当前日期。但是你也可以在周末或周中找到日期范围。
另外,我在您的查询中看到date
和time
,但表单中只有time
。你应该检查一下。
答案 2 :(得分:0)
如果您使用这样的选项,它将起作用:
<select name='time'>
<option value='2017-01-02'>Today</option>
<option value='2017-01-03'>Tommorow</option>
</option>
</select>