Приложение-викторина с использованием jsp - PullRequest
2 голосов
/ 10 июля 2020

Извините, что задаю этот вопрос. Я искал последние несколько часов, но не нашел никакой помощи.

Я хочу сделать простую викторину, используя JSP. Я создал 2 таблицы, как показано ниже

  1. Col1: QuizId Col2: Имя викторины Col3: Количество вопросов
  2. Col1: QtnNum Col2: Вопрос Col3: Option1 Col4: Option2 Col5: Option3 Col6: Option4 Col7: CorrectOption

Страница будет выглядеть, как на изображении ниже.

image Вставьте здесь заголовок <% String quiz_title = request.getParameter ("quiz_title"); Строка no_question = request.getParameter ("no_question"); Строка quiz_id = request.getParameter ("quiz_id"); %>

<% = quiz_title%>

Общее количество вопросов: <% = no_question%>


<% Class.forName («com. mysql .jdb c .Driver»); Подключение con = DriverManager.getConnection ("jdb c: mysql: // localhost: 3306 / student_portal 2.0", "root", ""); Оператор st = con.createStatement (); Строка sql = "выберите * из quiz_q_a, где quiz_id =" + quiz_id; ResultSet rs = st.executeQuery (sql); while (rs.next ()) {String question = rs.getString ("вопрос"); Строка option_a = rs.getString ("option_a"); Строка option_b = rs.getString ("option_b"); Строка option_ c = rs.getString ("option_ c"); Строка option_d = rs.getString ("option_d"); Строка правильная_опция = rs.getString ("правильная_опция"); Строковое объяснение = rs.getString ("объяснение"); Строка current_no = rs.getString ("q_no"); %>

<% = current_no%>. <% = question%>

()


А. <% = option_a%> Б. <% = option_b%>
C. <% = option_ c%> D. <% = option_d%>

<%}%>
crossorigin = "anonymous">

Мое требование - добавить кнопку отправки в конце страницы. При нажатии кнопки отправки ответ пользователя должен быть сохранен в массиве. Выбранные ответы из массива ответов пользователя следует сравнить с массивом правильных ответов из таблицы и подсчитать балл.

Пожалуйста, помогите мне добиться этого. Я не могу записать ответ пользователя. Спасибо.

1 Ответ

1 голос
/ 10 июля 2020

Вам нужно поместить тег <form> и кнопку submit за пределами while-loop. Кроме того, поскольку переключатель имеет то же значение, что и в вашей форме, поэтому для уникальной идентификации каждого радио вы можете использовать current_no с именем вашего переключателя, например: name="inlineRadioOptions_<%=current_no%>". Таким образом, ваш код jsp будет выглядеть следующим образом:

 <form method="post" action="your_url">
     <%
    //your connection codes
    while(rs.next())
    {
       //other codes
          String current_no =rs.getString("q_no");    
    %>
    <div class="row">
        <div class="col-6">
            <h4><%=current_no%>.  <%=question %></h4>
        </div>
        <div class="col-6">
            <h4>    &emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;(&emsp;)
            </h4>
        </div>
    </div>  
    <br>
    <form>
        <div class="row">
            <div class="col-6">
                <div class="form-check">
                  <input class="form-check-input" type="radio" name="inlineRadioOptions_<%=current_no%>" value="A">
                  <label class="form-check-label" for="inlineRadio1">A. <%=option_a %></label>
                </div>
            </div>
            <div class="col-6">
                <div class="form-check">
                  <input class="form-check-input" type="radio" name="inlineRadioOptions_<%=current_no%>" value="B">
                  <label class="form-check-label" for="inlineRadio1">B. <%=option_b %></label>
                </div>
            </div>
        </div>
        <br>
        <div class="row">
            <div class="col-6">
                <div class="form-check">
                  <input class="form-check-input" type="radio" name="inlineRadioOptions_<%=current_no%>"  value="C">
                  <label class="form-check-label" for="inlineRadio1">C. <%=option_c %></label>
                </div>
            </div>
            <div class="col-6">
                <div class="form-check">
                  <input class="form-check-input" type="radio" name="inlineRadioOptions_<%=current_no%>"  value="D">
                  <label class="form-check-label" for="inlineRadio1">D. <%=option_d %></label>
                </div>
            </div>
        </div>
        <br>
        <hr>
    <%
    }
    %>  
//will have value of quiz_id
  <input type="hidden" name-"quiz_id" value="<%=quiz_id%>">
    //added button
    <input type="submit">
    </form> 

Затем на стороне вашего сервера вам нужно снова использовать запрос select для получения результата в зависимости от на quiz_id и проверьте, совпадают ли ответ пользователя и правильный_ответ в зависимости от этих значений приращения. например:

<!--your connection codes-->
 //to get no coorect and wrong answer
int wrong = 0, correct = 0;
//getting quiz_id
String quiz_id = request.getParameter("quiz_id");
String sql = "select * from quiz_q_a where quiz_id=" + quiz_id;
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
 //get correct option for 1st ,2 ..etc
 String correct_option = rs.getString("correct_option");
 //get current question..
 String current_no = rs.getString("q_no");
 //get user answer
 String answers = request.getParameter("inlineRadioOptions_" + current_no);
 //check if equal
 if (answers.equals(correct_option)) {
  correct++; //increment

 } else {

  wrong++; //increment
 }
}
out.println("Correct Answer are" + correct);
out.println("Wrong Answer are" + wrong);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...