まとめ: ajaxとJSPを使って検索機能を実装したところ、うまくいきました。次に、「レコードが見つかりません」のように検索語が見つからない場合にメッセージを表示したかったので、コードにif文を入れてみました。後で、if ステートメントがデータベースからの結果の一部を切り捨てていることに気付きました。私はこれに長い間取り組んできましたが、問題を解決できませんでした。
わかりやすくするために、if ステートメントのないスクリーンショット
if ステートメントが含まれているスクリーンショット
これは、検索を実行して表示するコードです。
<table align="center">
<%@page import="java.sql.*" %>
<%
Connection con;
PreparedStatement ps;
ResultSet rs;
String query;
String se = request.getParameter("se");
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost/alumni", "root", "root");
query = "Select * from users where un like '" + se + "%' or fn like '"+se+"%' or ln like '"+se+"%' ";
ps = con.prepareStatement(query);
rs = ps.executeQuery();
//if statement that seems to be causing the problem.
if(rs.next()){
}else{
out.println("No record found for "+se);
return;
}
int k = 0;
while (rs.next()) {
k++;
%>
<tr>
<td class="go" style="width: 608px;border-radius: 6px; height: 44px;">
<a href= 'profile.jsp?un=<%=rs.getString("un")%>' style="text-decoration: none; ">
<div class="search" >
<!-- image -->
<script>
function imgError(image) {
image.onerror = "";
image.src = "images/avatar.jpg";
return true;
}
</script>
<% out.println("<img onerror='imgError(this)' width = 65 height = 55 style='border-radius:5px' src=picView?un=" + rs.getString("un") + ">"
+ "</img>");%>
<div style="display: inline;"> <%=rs.getString("un")%> </div>
<div style="display: inline-block;">
<%=rs.getString("fn")%> <%=rs.getString("ln")%> </div>
</div> </a>
</td>
</tr>
<%
}
}
catch (Exception e) {
out.println("Exception "+e);
}
%>
注意: if ステートメントは、レコードが見つからない場合にユーザーに通知するためにそこに配置されており、その機能を適切に実行します。スクリプトレットを使用すべきではないことは理解していますが、いくつかの理由で使用しました。ご容赦ください。ありがとう。