0

データベースから質問を取得し、回答のためにユーザーに表示しようとしています。いろいろ試しましたがわかりません。問題は、すべての質問と正しい値のラジオ ボタンを取得することですが、ページ全体から選択できるラジオは 1 つだけです。つまり、ページ上の 5 つの質問と 20 のラジオ ボタンすべてから、1 つだけを選択できます。各質問から1つのラジオボタンを選択したい。

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

すべてのラジオ ボタンに同じ名前"ans"を付けたので、選択できるのは 1 つだけです。特定の質問に属するオプションのみが同じ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 に答える
0

質問のグループごとに異なる名前(ラジオタグ用)を設定すると、それらは別のグループに属し、1つではなく複数を選択できるようになると思います。

    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 に答える