Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Auswahl zufälliger Fragen aus der MySQL-Datenbank; richtige Antwort vermasselt

Wenn Sie dem Benutzer Ihre Frage stellen, wird eine Frage zufällig aus der Datenbank ausgewählt.

Dann übermittelt der Benutzer Ihr Formular, eine andere Frage wird zufällig ausgewählt, und das ist die Frage, die Sie verwenden, um die Antwort zu überprüfen, anstelle der Frage, die Sie dem Benutzer gestellt haben.

Sie müssen Ihrem Formular eine versteckte Eingabe hinzufügen, die die Frage-ID enthält

<input type="hidden" name="question_id" value="<?php echo $question_id ?>" />

Und wenn Sie dann die Antwort überprüfen, achten Sie darauf, die richtige Frage aus der Datenbank zu holen

Der Code würde so aussehen

<?php

// Check user answer for previous question
if (isset($_POST['submit'])) {   
    // Retrieve the id of the question you asked
    $previous_question_id = (int) $_POST['question_id']; // cast to integer to prevent sql injection.

    // Query database
    $get_question = "SELECT * from questions_table where id = $previous_question_id";
    $result_get_question = mysqli_query($conn, $get_question);
    $row_get_question = mysqli_fetch_array($result_get_question);

    // Assign database response to variables
    $correct = $row_get_question['correct'];
    $selected_radio = $_POST['response'];

    if ($selected_radio == $correct)
        echo "THAT ANSWER IS CORRECT";
    else
        echo "THAT ANSWER IS WRONG!";
}


// Load new question to ask to the user
$get_question = "SELECT * from questions_table order by rand() limit 1";
$result_get_question = mysqli_query($conn,$get_question);
$row_get_question = mysqli_fetch_array($result_get_question);  

// assign thing we want to print in the template to variable
$question_id = $row_get_question['question_id'];
$question = $row_get_question['question'];
$a1 = $row_get_question['a1'];
$a2 = $row_get_question['a2'];
$a3 = $row_get_question['a3'];
$a4 = $row_get_question['a4'];

?>

<PASTE YOUR TEMPLATE HERE>