#jsp
#jsp
Вопрос:
страница index.jsp
!DOCTYPE html>
<html>
<head>
</head>
<body>
<div align="center">
<form action ="demo.jsp" method="post">
<table id="formTable">
<tbody>
<tr>
<th> <label>START Date: </label> </th>
<th> <input type = "date" name="Date1" id="date"></th>
</tr>
<tr>
<th> <label>END Date: </label> </th>
<th> <input type = "date" name="Date2" id="date"></th>
</tr>
<tr>
<td> <label>Author </label> </td>
<td> <input type ="text" name ="Author" id="author"> </td>
</tr>
<tr>
<td> <label>Book Name </label> </td>
<td> <input type ="text" name ="book_Name" id="bookName"> </td>
</tr>
<tr>
<td> <label>Domain </label> </td>
<td> <select id="domain" name="Domain" id="domain">
<option value ="" selected Disabled>Select Domain</option>
<option>Biology</option>
<option>chemistry</option>
<option>maths</option>
</select> </td>
</tr>
</tbody>
</table>
<br>
<br>
<input type = "submit" value = "Submit" name = "submit"/>
</form>
</div>
</body>
</html>
страница demo.jsp
<!DOCTYPE html>
<html>
<body>
<div align="center">
<table id="customers" >
<thead>
<tr>
<td> <label> Id </label> </td>
<td> <label>book Name </label> </td>
<td> <label>author </label> </td>
<td> <label>domain</label></td>
</tr>
<%
try{
String query ="select * from book"
Connection conn = SqlConnection.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
while(rs.next()){
%>
<tr>
<td><input type = text readonly value ="<%=rs.getString("Id")%>"> </td>
<td><input type = text readonly value ="<%=rs.getString("bookName")%>"> </td>
<td><input type = text readonly value ="<%=rs.getString("author")%>"></td>
<td><input class ="btn"type = text readonly value ="<%=rs.getString("domain")%>"title="<%=rs.getString("domain")%>"> </td>
</tr>
<%
}
}
catch(Exception ex){
System.out.println(ex);
}
%>
</thead>
</table>
</div>
</body>
</html>
Это мои страницы jsp — на индексной странице, если пользователь выбирает дату начала и дату окончания, должны быть выбраны только отчеты в пределах этого диапазона дат. Если пользователь заполняет любые другие текстовые поля вместе с этой начальной и конечной датой, он должен фильтровать результаты в соответствии с этим полем.
Например, если я выберу дату начала 01/01/2020 и дату окончания 28/02/2020, а также домен «биология», тогда должны отображаться отчеты с доменом «биология».
Заранее спасибо.
Обновленный demo.jsp
<html>
<body>
<div align="center">
<table id="customers" >
<thead>
<tr>
<td> <label> Id </label> </td>
<td> <label>book Name </label> </td>
<td> <label>author </label> </td>
<td> <label>domain</label></td>
</tr>
<%
string sdate =request.getParameter("date1");
string edate =request.getParameter("date2");
string author =request.getParameter("Author");
string book =request.getParameter("book_name");
string domain =request.getParameter("Domain");
try{
String query ="select * from book where date
between"' sdate'" and "' end '" or author =
"' author '" or bookName = "' book_name '" or "' domain'"
Connection conn = SqlConnection.getConnection();
preparedStatement psmt = conn.createStatement();
psmt.setString(1,request.getParameter("date");
psmt.setString(2,request.getParameter("date");
psmt.setString(3,request.getParameter("author");
psmt.setString(4,request.getParameter("bookName");
psmt.setString(5,request.getParameter("domain");
ResultSet rs = stmt.executeQuery(query);
while(rs.next()){
%>
<tr>
<td><input type = text readonly value ="<%=rs.getString("Id")%>"> </td>
<td><input type = text readonly value ="<%=rs.getString("bookName")%>"> </td>
<td><input type = text readonly value ="<%=rs.getString("author")%>"></td>
<td><input class ="btn"type = text readonly value ="<%=rs.getString("domain")%>"title="<%=rs.getString("domain")%>"> </td>
</tr>
<%
}
}
catch(Exception ex){
System.out.println(ex);
}
%>
</thead>
</table>
</div>
</body>
</html>
Комментарии:
1. почему бы не использовать запрос like
select * from book where startdate >= ? and enddate <= ? and domain=?
, а затем передать значение для?
через preparestatement и выполнить запрос для получения результатов поиска.2. спасибо за предложение, но пользователь может использовать любое одно поле вместе с датой начала и датой окончания или может использовать все поля с датой начала и датой окончания или не может использовать какие-либо поля, кроме полей даты в то время, я думаю, это не сработает
3. добавьте
or
условие вместоand
и создайте свой запрос в соответствии с этим. т.е. Проверьте, не включают ли какие поля пустые в ваш запрос и т. Д.4. Я думаю, используя оператор if и проверяя, достаточно ли даты
after(date)
илиbefore(date)
достаточно.5. Спасибо за ваши ответы, я попробовал ваши идеи, я думаю, что мне чего-то не хватает, где вы можете, пожалуйста, дать мне демонстрационный код, чтобы мне было очень полезно решить.