0

我正在尝试从数据库中获取问题并将其显示给用户以供回答。我尝试了很多,但无法弄清楚。问题是我得到了所有问题和具有正确值的单选按钮,但是从整个页面中只能选择一个单选!即从页面上的所有 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 注入现在不是一个值得关注的问题。

4

3 回答 3

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++;
}
于 2013-08-18T04:12:20.433 回答
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++;
    }
于 2013-08-18T04:10:11.470 回答
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/>
于 2013-08-18T04:13:29.650 回答