user3225075
user3225075

Reputation: 373

how to store answers from an online examination system to database

I am creating an online examination system where am fetching questions and answers from database and displays options in radio button. But, the problem is if i click save it just saves one answer not answer from all questions

php codes for fetching questions

 $quer=" SELECT * FROM questionset ORDER BY RAND() ";
 $query=mysqli_query($sql,$quer);
while($row = mysqli_fetch_array($query))
  {
  $na= $row['qus'];
  $opa= $row['opa'];
   $opb= $row['opb'];
  $opc= $row['opc'];
    $opd= $row['opd'];

 echo "<div class='pr3'>";

echo "<div id='question'>";
echo $na;
echo "</div>";
echo "<br/>";
echo "<form name='cart' method='post'>";
echo "<input type='radio' name='ans' value='" . $opa. "' onclick='answ(this.value)' >";
echo $opa;
echo "<br/>";
echo "<input type='radio' name='ans' value='" . $opb. "' onclick='answ(this.value)'>";
echo $opb;
echo "<br/>";
    echo "<input type='radio' name='ans' value='" . $opc. "' onclick='answ(this.value)'>";
echo $opc;
echo "<br/>";
echo "<input type='radio' name='ans' value='" . $opd. "' onclick='answ(this.value)'>";
echo $opd;
echo "<br/>";
echo "<input type='text' id='ansval' name='ansval' >";
    echo "</form>";

 echo " </div>";

  }

Javascript that updates just one text box

<script>
function answ(answer) {
document.getElementById("ansval").value = answer;
}
</script>

Upvotes: 0

Views: 2780

Answers (2)

Suman Biswas
Suman Biswas

Reputation: 883

The radio buttons name are all same for all questions. You have to make the radio buttons names dynamically for each answer set. You can use the following code :

$quer=" SELECT * FROM questionset ORDER BY RAND() ";
 $query=mysqli_query($sql,$quer);
while($row = mysqli_fetch_array($query))
  {
  $questionId = $row['questionId']; //primary key of question table
  $na= $row['qus'];
  $opa= $row['opa'];
   $opb= $row['opb'];
  $opc= $row['opc'];
    $opd= $row['opd'];

 echo "<div class='pr3'>";

echo "<div id='question'>";
echo $na;
echo "</div>";
echo "<br/>";
echo "<form name='cart' method='post'>";
echo "<input type='radio' name='ans<?php echo $questionId; ?>' value='" . $opa. "' onclick='answ(this.value,'<?php echo $questionId; ?>')' >";
echo $opa;
echo "<br/>";
echo "<input type='radio' name='ans<?php echo $questionId; ?>' value='" . $opb. "' onclick='answ(this.value,'<?php echo $questionId; ?>')'>";
echo $opb;
echo "<br/>";
    echo "<input type='radio' name='ans<?php echo $questionId; ?>' value='" . $opc. "' onclick='answ(this.value,'<?php echo $questionId; ?>')'>";
echo $opc;
echo "<br/>";
echo "<input type='radio' name='ans<?php echo $questionId; ?>' value='" . $opd. "' onclick='answ(this.value,'<?php echo $questionId; ?>')'>";
echo $opd;
echo "<br/>";
echo "<input type='text' id='ansval<?php echo $questionId; ?>' name='ansval<?php echo $questionId; ?>' >";
    echo "</form>";

 echo " </div>";

  } 

And You javascript function will be looks like :

<script>
function answ(answer,qId) {
document.getElementById("ansval"+qId).value = answer;
}
</script>

After the answer submit you can get the submitted values in same way. i.e $_POST['ansval'.$questionId]; Before get the value you have to create another loop to get all question Ids.

Upvotes: 2

Muhammad Ali
Muhammad Ali

Reputation: 2014

ID field must be unique ++$counter; echo "";

$_POST['ansval1'],$_POST['ansval2'],$_POST['ansval3'].....

Upvotes: 0

Related Questions