Не могу определить правильные, неправильные или неотвеченные вопросы для экзаменационного приложения на PHP
Эй народ
Я работаю над экзаменационным приложением и хочу показать результаты для тех, кто сдавал экзамен. Я хочу вывести число правильных ответов, неправильных ответов и ответов, оставшихся без ответа.
Когда я сдаю экзамен и отправляю ответы, я получаю ошибку " Undefined variable: value in..."
Моя проблема заключается в получении этой переменной атрибута name с $_POST на моей странице сервера для обработки потребностей.Заранее спасибо за вашу помощь!
Что я уже пробовал:
Это то, что у меня уже есть :
HTML викторина
Есть несколько вопросов, но я дам код только для одного
<div id='question<?php echo $i; ?>' class='cont'> <div class="question_css"> <h3><span class="label label-warning" id="qid"><?php echo $i; ?></span> <span class="questions" id="qname<?php echo $i; ?>"> <?php echo $value['question_entitle']; ?> </h3> </div> <ul class="quiz-ul"> <li class="quiz-li"> <input type="radio" value="<?php echo $options[0]['Options'];?>" id='radio1_<?php echo $options[0]['answer_proposal_id']; ?>' name='<?php echo $value['Questionid'];?>'/> <label for="radio1_<?php echo $options[0]['answer_proposal_id']; ?>" class="element-animation"><?php echo $options[0]['Options']; ?></label> <div class="check"></div> </li> <li class="quiz-li"> <input type="radio" value="<?php echo $options[1]['Options'];?>" id='radio2_<?php echo $options[1]['answer_proposal_id']; ?>' name='<?php echo $value['Questionid'];?>'/> <label for="radio1_<?php echo $options[1]['answer_proposal_id']; ?>" class="element-animation"><?php echo $options[1]['Options']; ?></label> <div class="check"></div> </li> <li class="quiz-li"> <input type="radio" value="<?php echo $options[2]['Options'];?>" id='radio3_<?php echo $options[2]['answer_proposal_id']; ?>' name='<?php echo $value['Questionid'];?>'/> <label for="radio1_<?php echo $options[2]['answer_proposal_id']; ?>" class="element-animation"><?php echo $options[2]['Options']; ?></label> <div class="check"></div> </li> <li class="quiz-li"> <input type="radio" value="<?php echo $options[3]['Options'];?>" id='radio4_<?php echo $options[3]['answer_proposal_id']; ?>' name='<?php echo $value['Questionid'];?>'/> <label for="radio1_<?php echo $options[3]['answer_proposal_id']; ?>" class="element-animation"><?php echo $options[3]['Options']; ?></label> <div class="check"></div> </li> <li class="quiz-li"> <input type="radio" checked='checked' style='display:none' value="5" id='radio5' name='<?php echo $value['Questionid'];?>'/> </li> </ul> <button id='<?php echo $i; ?>' class='next btn btn-success' type='button'>Suivant</button> </div>
PHP-код
if (isset($_POST['submit']) && !empty($_POST)) { $right_answer=0; $wrong_answer=0; $unanswered=0; $question_correct_answerid =$db->prepare ('SELECT Questionid, question_correct_answerid from question '); $question_correct_answerid->execute(); $correctAnswerId = $question_correct_answerid->fetchAll(); foreach ($correctAnswerId as $key => $row) { $correctOption= $db->prepare('SELECT Options,answer_proposal_id from answerproposal where is_Correct= 1 and answer_proposal_id = '.$row['question_correct_answerid'].' '); $correctOption->execute(); $correctOptions = $correctOption->fetchAll(); //var_dump($correctOptions); } foreach ($correctOptions as $key => $option) { if ($option['Options'] == $_POST[$value['Questionid']]) { $right_answer++; }else if($_POST[$value['Questionid']] == 5){ $unanswered++; }else{ $wrong_answer++; } } } ?> <div class="container result vh-center"> <div class="w100"> <hr> <div class="row dflex results-container"> <div class="results right"> <div> <p class="mtb-1">Total no. of right answers : <span class="answer"><?php echo $right_answer;?></span></p> <p class="mtb-1">Total no. of wrong answers : <span class="answer"><?php echo $wrong_answer;?></span></p> <p class="mtb-1">Total no. of Unanswered Questions : <span class="answer"><?php echo $unanswered; ?></span></p> </div> </div> </div> </div> </div>
Richard MacCutchan
Я получаю ошибку " Undefined variable: value in..."
Хорошо, вы еще не объявили переменную value
везде.
Nice Kloe
Я не делал этого, потому что это должно было прийти со страницы викторины, где я сдаю экзамен и отправляю выбранные кандидатом ответы на страницу обработки. Имя атрибута для переключателей-name='$value['Questionid'];' и на моей странице сервера я пытаюсь получить атрибут name с помощью $_POST[$value['Questionid']]. Это неправильно, пожалуйста?
Richard MacCutchan
Нельзя использовать переменную, которая никогда не была объявлена. Проверьте справочник по языку PHP для получения подробного объяснения переменных, ссылок и правил области действия.
Nice Kloe
О-о-о, хорошо, я понимаю. Поэтому, пожалуйста, любая идея/предложение/рабочий фрагмент кода о том, как я могу получить ответы различных выбранных кандидатов, чтобы сравнить их с правильными ответами из моей БД?
Richard MacCutchan
Да, объявите правильную переменную для захвата данных по мере их ввода и передайте ее бэкенд-коду, который сравнивает ее со значениями в базе данных.
Nice Kloe
Спасибо за ваш ответ. Я заменил переменную php в атрибуте name переключателей строковым значением (answerProposition) для всех переключателей. Результат не лучше. На три вопроса для экзаменов, выбирая каждый раз правильный ответ, в конце я получаю правильный ответ: 1, неправильный ответ : 0, без ответа : 0. если я выбираю нет ответа на каждый вопрос, в конце я получаю правильный ответ : 0, неправильный ответ : 0, без ответа : 1. Что я не получаю, пожалуйста?
Richard MacCutchan
Извините, но я не могу ответить на этот вопрос, не запустив ваш код. Вам нужно использовать отладчик, чтобы пройти через него и посмотреть, какие значения передаются с веб-страницы в внутренний код, а затем в базу данных.