检查答案并从数据库验证PHP中是否正确

时间:2017-06-07 09:52:54

标签: php mysql database

从数据库中提取问题并在屏幕上显示现在应该是什么逻辑部分或如何实现检查所选答案是否正确以及如何在数据库中存储正确答案并验证它们。

这是代码

<?php

// Create connection
$conn = new mysqli("localhost","root","","QuizQuestions");

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully<br><br>";

$sql = "SELECT Question, Answer1, Answer2, Answer3, Answer4 FROM Questions";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
// output data of each row
$i = 1;
while ($row = $result->fetch_assoc()) {
echo "<br>Question: " . $row["Question"] . "<br>";
echo ' A) <input type="radio" name="ans' . $i . '" value="' . 
$row["Answer1"] . '">' . $row["Answer1"] . '<br>';
echo ' B) <input type="radio" name="ans' . $i . '" value="' . 
$row["Answer2"] . '">' . $row["Answer2"] . '<br>';
echo ' C) <input type="radio" name="ans' . $i . '" value="' . 
$row["Answer3"] . '">' . $row["Answer3"] . '<br>';
echo ' D) <input type="radio" name="ans' . $i . '" value="' . 
$row["Answer4"] . '">' . $row["Answer4"] . '<br>';
$i++;
}
} else {
echo "0 results";
}
$conn->close();

?>

3 个答案:

答案 0 :(得分:4)

因为所有radio输入都具有相同的名称。他们都将被视为同一个广播组。您需要为不同的问题使用不同的名称。像 -

这样的东西
$i = 1;
while ($row = $result->fetch_assoc()) {
    echo "<br>Question: " . $row["Question"] . "<br>";
    echo ' A) <input type="radio" name="ans' . $i . '" value="' . $row["Answer1"] . '">' . $row["Answer1"] . '<br>';
    echo ' B) <input type="radio" name="ans' . $i . '" value="' . $row["Answer2"] . '">' . $row["Answer2"] . '<br>';
    echo ' C) <input type="radio" name="ans' . $i . '" value="' . $row["Answer3"] . '">' . $row["Answer3"] . '<br>';
    echo ' D) <input type="radio" name="ans' . $i . '" value="' . $row["Answer4"] . '">' . $row["Answer4"] . '<br>';
    $i++;
}

您还可以使用行id代替$i行。

答案 1 :(得分:2)

您为所有单选按钮设置了相同的名称。您应该为每个问题分组单选按钮。为此,您可以从数据库中获取问题ID,并将单选按钮名称设置为

echo ' A) <input type="radio" name="ans'.$row["id"].'" 
    value="'.$row["Answer1"].'">'.$row["Answer1"].'<br>';

答案 2 :(得分:0)

确保您对广播组中的每个输入字段使用不同的名称,以便将每个问题视为不同的记录。