how to choose correct answers from multiple choices questions using php and mysql
i don't know if i'm doing in the right way because i'm still new in programming world
1- i'm using an array to store the questions
2- another array for answers
3- passing the question id and answer id to the processing page then comparing them with the values in data base to check for the correct answer
my problem is when i pass the id's into my processing page i only got an id for one question even if i choose different question it's still repeating the same question id
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> </title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="header">
<div class="container">
<div id="logoArea"></div>
<form action="process.php" method="post" >
<?php
require ("mysql_connect.php");
$test_id = $_GET['test_id'];
$qid = array();
$sql ="Select * from question where test_id='$test_id'";
$res = mysqli_query($connection, $sql);
$noq = mysqli_num_rows($res);
while ($row = mysqli_fetch_assoc($res) ) {
$question_id = $row['question_id'];
$qid [] = $question_id;
$questions = array ($row['question_text']) ;
foreach ($questions as $question) {
echo "<hr />";
echo"<label><p>$question</p></label>" ;
}
/*
* Get choices
*/
$sql1 = mysqli_query($connection,"SELECT * FROM `answers` WHERE answers.question_id = '". $question_id."' ") or die (mysqli_error($connection));
while ($row1 = mysqli_fetch_assoc($sql1)) {
$answer_id =$row1 ['answer_id'];
$answers =array ($row1['answer_text']);
foreach ($answers as $answer) {
?>
<label><p><input type='radio' name='answers' value= '<?php echo $row1 ['answer_id']; ?>' id='answers' /> <?php echo $answer ; ?> </p></label>
<?php
}
}
}
var_dump($qid );
?>
<input type="submit" name="submit" value=" "/>
<input type="hidden" name="question_id" value="<?php echo $question_id ; ?>" />
</form>
<div id="navmenu"></div>
</div>
</div>
</body>
</html>
<?php
include ("mysql_connect.php");
if(isset($_POST["submit"])){
$correct_answers = 0;
$wrong_answers = 0;
$total = 0 ;
$question_id = $_POST['question_id'];
$selected_choice = $_POST['answers'];
$sql = mysqli_query($connection, "SELECT * FROM `answers` WHERE answers.question_id = '".$question_id ."' AND answers.correct = 1 ")or die(mysqli_error($connection));
while ($result = mysqli_fetch_assoc($sql)){
$correct_choices = array($result['answer_id']);
}
foreach( $correct_choices as $correct_choice){
$total ++ ;
if($correct_choice == $selected_choice){
$correct_answers ++ ;
}else{
$wrong_answers ++;
}
$score = $correct_answers / $total ;
$score = number_format($score * 100);
echo "your score is $score <br />";
}
var_dump($correct_choice);
var_dump($_POST);
if ($correct_answers > 0){
echo "<h2><span>You have $correct_answers correct answers</span></h2>";
}
if ($wrong_answers > 0) {
echo "<h2><span>You have $wrong_answers wrong answers</span></h2>" ;
}
}
?>
my Database
CREATE TABLE `answers` (
`answer_id` int(11) UNSIGNED NOT NULL,
`answer_text` text NOT NULL,
`question_id` int(11) NOT NULL,
`correct` tinyint(1) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `question` (
`question_id` int(11) UNSIGNED NOT NULL,
`question_text` text NOT NULL,
`test_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4 Answer(s)