我想实现类似segmentfault关注问题的功能,从数据库中循环输出活动表的内容,在输出的时候遍历另一张用户活动表,这张表存着用户参加过哪些活动。如果参加过,就显示已参加,否则显示未参加。
遇到的问题:在循环显示出的活动中,用户按从上到下的顺序点击参加活动,能正常工作,但是用户随机点击参加活动,就显示不出已参加的样式,我的程序有什么问题,请大家帮忙看看,该如何解决。
<%
java.sql.Connection conn = null;
java.lang.String strConn;
java.sql.Statement sqlStmt = null;
java.sql.ResultSet sqlRst = null;
java.sql.ResultSet sqlatt = null;
try {
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/yueba", "root", "123456");
sqlStmt = conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE, java.sql.ResultSet.CONCUR_READ_ONLY);
String sqlQuery = "select * from activity order by ID DESC";
sqlRst = sqlStmt.executeQuery(sqlQuery);
sqlStmt = conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE, java.sql.ResultSet.CONCUR_READ_ONLY);
String queryatt = "select activity.*,attend.* from activity,attend where activity.ID=attend.actid order by activity.ID desc";
sqlatt = sqlStmt.executeQuery(queryatt);
while (sqlRst.next()) {
int flag=0;
String dbpubuser = sqlRst.getString("pubuser");
String dbtitle = sqlRst.getString("title");
String dbdetail = sqlRst.getString("detail");
int dbid = sqlRst.getInt("ID");
Timestamp subtime = sqlRst.getTimestamp("datetime");
while (sqlatt.next()) {
String dbattuser=sqlatt.getString("attuser");
int dbactid = sqlatt.getInt("actid");
if ((dbid == dbactid)&&(username.equals(dbattuser))) {
%>
<div class="jumbotron" style="padding-top: 20px;padding-bottom: 20px;margin-bottom: 15px;">
<p><font color="green" size="5px"><%=dbpubuser%></font></p>
<hr>
<h3><font color="#0099CC"><%=dbtitle%></font></h3>
<p><font size="4px"><%=dbdetail%></font></p>
<form>
<input type="hidden" name="actid" value="<%=dbid%>">
<button type="button" class="btn btn-success">已参加</button>
<p style="margin-left: 700px;margin-top: -40px"><font size="3px"><%=subtime%></font></p>
</form>
</div>
<%
flag=1;
break;
}
}
if(flag==0){
%>
<div class="jumbotron" style="padding-top: 20px;padding-bottom: 20px;margin-bottom: 15px;">
<p><font color="green" size="5px"><%=dbpubuser%></font></p>
<hr>
<h3><font color="#0099CC"><%=dbtitle%></font></h3>
<p><font size="4px"><%=dbdetail%></font></p>
<form action="attend" method="post">
<input type="hidden" name="actid" value="<%=dbid%>">
<input type="hidden" name="pubuser" value="<%=dbpubuser%>">
<button type="submit" class="btn btn-primary">参加活动</button>
<p style="margin-left: 700px;margin-top: -40px"><font size="3px"><%=subtime%></font></p>
</form>
</div>
<%}
}
} catch (java.sql.SQLException e) {
out.println(e.toString());
} finally {
if ((sqlRst != null) && (sqlatt != null)) {
try {
sqlRst.close();
sqlatt.close();
} catch (java.sql.SQLException el) {
out.println(el.toString());
} finally {
try {
if (sqlStmt != null) {
sqlStmt.close();
}
} catch (java.sql.SQLException e2) {
out.println(e2.toString());
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (java.sql.SQLException e3) {
out.println(e3.toString());
}
}
}
}
}
%>
这是未参加时:![图片描述][1]
这是参加活动后:![图片描述][2]
通过一个字段(isRead)来判断用户是否阅读过比较好。