Проблема при подведении хороших ответов в системе онлайн-викторины - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь построить систему онлайн-викторин для автошколы. Они попросили меня сделать доступными, чтобы вопросы и ответы были добавлены в базу данных. Я сделал это, но проблема в том, что мне трудно понять, правильные ли ответы.

Код, который я использую для генерации формы, таков:

 $sql = mysql_query("SELECT * FROM questions ORDER BY question_id ASC");


                        while($row = mysql_fetch_array($sql)){
                            echo ' 

                            <section>
                            <h1>'.$row['question'].'?</h4>
                                </br> <hr> </br>

                                <div class="row">
                                <div class="col-sm-4 foto pb-2">
<img  src="" style="max-width:100%;height: auto;" >
</div>
   <div class="col-12 col-sm-8">
   <div class="pergjigjet mb-2 pl-2 pr-2" style="padding-left: .5rem!important;padding-right: .5rem!important;margin-bottom: .5rem!important;">
   <div class="pergjigje">
   <label><input type="checkbox" name="q_'.$row['question_id'].'_a_1" value="1"> '.$row['answer1'].'.</label>
   </div>
   <div class="pergjigje">
   <label><input type="checkbox" name="q_'.$row['question_id'].'_a_2" value="1"> '.$row['answer2'].'.</label>
   </div>
   <div class="pergjigje"><label>
   <input type="checkbox" name="q_'.$row['question_id'].'_a_3" value="1"> '.$row['answere'].'.</label>
   </div>
   </div>
</div>
</section>

В викторине всего 30 вопросов и максимум 3 правильных ответа. Если вы не выбрали все правильные ответы, это должно быть неправильно. Это означает, что вы не получите баллы, если не выбрали правильные ответы на вопрос.

Массив почтовых данных:

    array(4) {
  ["q_1_a_1"]=>
  string(1) "1"
  ["q_1_a_2"]=>
  string(1) "1"
  ["q_2_a_1"]=>
  string(1) "1"
  ["q_2_a_2"]=>
  string(1) "1"
}

Таблица такая,

id, 
question_id, 
exam_id, 
question, 
answer1,  
answer2,
answer3,
CorrectAnswers,
QuestionPoints

Я храню правильные ответы в этом формате

1,2

P.S. клиент попросил меня использовать mysql, а не mysqli или PDO

1 Ответ

0 голосов
/ 06 ноября 2018

Было бы лучше, если бы вы использовали имена в стиле массива для флажков ответа и поместили номера ответов в value, например,

   <label><input type="checkbox" name="q_'.$row['question_id'].'[]" value="1"> '.$row['answer1'].'.</label>
   </div>
   <div class="pergjigje">
   <label><input type="checkbox" name="q_'.$row['question_id'].'[]" value="2"> '.$row['answer2'].'.</label>
   </div>
   <div class="pergjigje">
   <label><input type="checkbox" name="q_'.$row['question_id'].'[]" value="3"> '.$row['answer3'].'.</label>
   </div>

Тогда, когда форма отправлена, $_POST['q_1'] будет массивом всех выбранных ответов. Вы можете преобразовать это в строку с implode(",", $_POST['q_1']) и сравнить эту строку со списком правильных ответов в таблице.

...