Davidaj
Davidaj

Reputation: 235

validate radio buttons php

I have a quiz which shows 1 question per page. If the user clicks next question without selecting a multiple choice answer, I'm trying to get validation to appear so that they can't advance unless they select an answer. When the user currently presses next question the error: 'Notice: Undefined index: answer' appears any help?

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
        } ?>

Upvotes: 1

Views: 47

Answers (1)

Aleksey Krivtsov
Aleksey Krivtsov

Reputation: 291

You need to check that $_POST['answer'] is set, like this:

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;
      }     
}

Upvotes: 1

Related Questions