我正在尝试从数据库中获取问题并将其显示给用户进行回答。我尝试了很多,但无法弄清楚。问题是我得到了所有问题和单选按钮的正确值,但从整个页面只能选择一个收音机!即从页面上的所有5个问题和20个单选按钮,我只能选择一个。我想从每个问题中选择一个单选按钮。
try{
Statement st = DBConnection.DBConnection.DBConnect();
String query = "SELECT * FROM test ORDER BY RAND() LIMIT 5";
ResultSet rs = st.executeQuery(query);
int i = 1;
while(rs.next()){
String ques = rs.getString(2);
String opt1 = rs.getString(3);
String opt2 = rs.getString(4);
String opt3 = rs.getString(5);
String opt4 = rs.getString(6);
String ans = rs.getString(7);
%>
<%=i%>. <%=ques%><br/>
<input type="radio" name="ans" value="<%=ans%>"/><%=opt1%><br/>
<input type="radio" name="ans" value="<%=ans%>"/><%=opt2%><br/>
<input type="radio" name="ans" value="<%=ans%>"/><%=opt3%><br/>
<input type="radio" name="ans" value="<%=ans%>"/><%=opt4%><br/>
<br/><br/>
<%
i++;
}
}catch(Exception ex){
out.print("Exception Caught"+ex);
}
我也可以使用(这部分在后端完成)检查数据库的正确答案,但我如何为每个问题做到这一点
request.getParameter("ans");
并且SQL注入现在不是一个值得关注的问题。
答案 0 :(得分:3)
您需要为每个单选按钮组指定不同的名称。如果您的test
表具有主键列,那么这是创建唯一名称的良好候选者。此示例假设rs.getInt(1)
将返回主键(请注意新的int pk = ...
行以及对无线电中name=
的更改):
while(rs.next()){
int pk = rs.getString(1);
String ques = rs.getString(2);
String opt1 = rs.getString(3);
String opt2 = rs.getString(4);
String opt3 = rs.getString(5);
String opt4 = rs.getString(6);
String ans = rs.getString(7);
%>
<%=i%>. <%=ques%><br/>
<input type="radio" name="ans<%=pk%>" value="<%=ans%>"/><%=opt1%><br/>
<input type="radio" name="ans<%=pk%>" value="<%=ans%>"/><%=opt2%><br/>
<input type="radio" name="ans<%=pk%>" value="<%=ans%>"/><%=opt3%><br/>
<input type="radio" name="ans<%=pk%>" value="<%=ans%>"/><%=opt4%><br/>
<br/><br/>
<%
i++;
}
或者你可以使用i
变量,如果这对你来说更容易:
while(rs.next()){
String ques = rs.getString(2);
String opt1 = rs.getString(3);
String opt2 = rs.getString(4);
String opt3 = rs.getString(5);
String opt4 = rs.getString(6);
String ans = rs.getString(7);
%>
<%=i%>. <%=ques%><br/>
<input type="radio" name="ans<%=i%>" value="<%=ans%>"/><%=opt1%><br/>
<input type="radio" name="ans<%=i%>" value="<%=ans%>"/><%=opt2%><br/>
<input type="radio" name="ans<%=i%>" value="<%=ans%>"/><%=opt3%><br/>
<input type="radio" name="ans<%=i%>" value="<%=ans%>"/><%=opt4%><br/>
<br/><br/>
<%
i++;
}
答案 1 :(得分:0)
我认为你应该为每组问题设置不同的名称(对于无线电标签),因此它们属于不同的组,所以你可以选择几个而不是一个。
int i = 1;
while(rs.next()){
String ques = rs.getString(2);
String opt1 = rs.getString(3);
String opt2 = rs.getString(4);
String opt3 = rs.getString(5);
String opt4 = rs.getString(6);
String ans = rs.getString(7);
%>
<%=i%>. <%=ques%><br/>
<input type="radio" name="ans<%=i%>" value="<%=ans%>"/><%=opt1%><br/>
<input type="radio" name="ans<%=i%>" value="<%=ans%>"/><%=opt2%><br/>
<input type="radio" name="ans<%=i%>" value="<%=ans%>"/><%=opt3%><br/>
<input type="radio" name="ans<%=i%>" value="<%=ans%>"/><%=opt4%><br/>
<br/><br/>
<%
i++;
}
答案 2 :(得分:0)
您已经为所有单选按钮指定了相同名称"ans"
,这就是为什么您只能从中选择一个。您需要对它们进行分组,以便只有属于特定问题的选项具有相同的name
属性值。因此,您可以按当前问题的索引对它们进行分组。
<input type="radio" name="ans_<%=i%>" value="<%=ans%>"/><%=opt1%><br/>
<input type="radio" name="ans_<%=i%>" value="<%=ans%>"/><%=opt2%><br/>
<input type="radio" name="ans_<%=i%>" value="<%=ans%>"/><%=opt3%><br/>
<input type="radio" name="ans_<%=i%>" value="<%=ans%>"/><%=opt4%><br/>