2015-09-08 22 views
1

У меня есть викторина, которая показывает 1 вопрос на странице. Если пользователь нажимает следующий вопрос, не выбирая ответ с множественным выбором, я пытаюсь получить подтверждение, чтобы оно отображалось, чтобы они не могли продвинуться, если они не выбрали ответ. Когда пользователь в настоящее время нажимает следующий вопрос на ошибку: «Примечание: неопределенный индекс: ответ» появляется любая помощь?проверить радио кнопки php

quiz.php:

if(isset($_POST['checkQuiz'])) { 
    $a=$_POST['a']; 

    $quiz_id=$_SESSION['quiz_id']; 
    $index=$_SESSION['index']; 

    $resultQuery = mysqli_query($con,"SELECT `correctValue` FROM quiz_questions WHERE quiz_id = '$quiz_id' LIMIT 1 OFFSET $index"); 

    $cor=0; 
    $incorrect=0; 

    while ($correct = mysqli_fetch_array($resultQuery)){ 
     if ($_POST['answer'] == $correct[0]) { 
     $_SESSION['rightAnswers']+=1; 
     } 
     if ($_POST['answer'] != $correct[0]) { 
     $_SESSION['wrongAnswers']+=1; 
     }  
    } 
    } 

<form method="post" action="" class="form complete"> 

     <table> 
     <td> 
      <td width = "50" id="question"><?php echo $result['question'] . "<br>"; ?></td> 
     </td> 

     <tr height = "10"></tr> 

     <td id= "number" width = "20" class="number"><?php echo $questionNumber ?>)</td> 
     <td id = "possible_answers" height = "100"width = "700"> 
     <input type="radio" name="answer" onClick="changeColour('a')" value="<?php echo $result['answerA'] ?>"> <?php echo $result['answerA']; ?> <br> 
     <input type="radio" name="answer" onClick="changeColour('b')" value="<?php echo $result['answerB'] ?>"> <?php echo $result['answerB']; ?> <br> 
     <input type="radio" name="answer" onClick="changeColour('c')" value="<?php echo $result['answerC'] ?>"> <?php echo $result['answerC']; ?> <br> 
     <input type="radio" name="answer" onClick="changeColour('d')" value="<?php echo $result['answerD'] ?>"> <?php echo $result['answerD']; ?> <br><br> 
     </table> 

    <?php 
     $_SESSION['questionNumber']=$questionNumber; 

    } 
    $a=$a+1; 

    ?> 

     <input type="submit" name="exitQuiz" value="Exit Quiz" id="button1"> 

     <?php 
     if ($questionNumber<$_SESSION['numberOfQuestions']) { 

     ?> 
     <input type="submit" name="checkQuiz" value="Next Question" id="button1"> 
     <input type="hidden" value="<?php echo $a ?>" name="a"> 

     <?php 
     } 
     ?> 
     <?php 
     if ($questionNumber==$_SESSION['numberOfQuestions']) { 
     ?> 
     <input type="submit" name="checkResult" value="Quiz Result" id="button1"> 
     <input type="hidden" value="<?php echo $a ?>" name="a"> 
     <?php 
     } ?> 

ответ

1

Вы должны проверить, что $ _POST [ 'ответ'] установлено, как это:

while ($correct = mysqli_fetch_array($resultQuery)){ 
     if (!isset($_POST['answer']) || $_POST['answer'] != $correct[0]) { 
     $_SESSION['wrongAnswers']+=1;    
     } elseif ($_POST['answer'] == $correct[0]) { 
     $_SESSION['rightAnswers']+=1; 
     }  
} 
+0

Спасибо! Это устраняет ошибки, но все еще приводит их к следующему вопросу, я хотел бы, чтобы они отвечали на каждый вопрос. Есть предположения? – Davidaj

+1

Я не могу видеть, как вы устанавливаете $ _SESSION ['quiz_id'], но вы можете установить последний идентификатор вопроса тогда! Isset ($ _ POST ['answer']) == true - это простой способ. –

Смежные вопросы