Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélection de questions aléatoires à partir de la base de données MySQL ; bonne réponse foiré

Lorsque vous posez votre question à l'utilisateur, une question est sélectionnée au hasard dans la base de données.

Ensuite, l'utilisateur soumet votre formulaire, une autre question est sélectionnée au hasard, et c'est la question que vous utilisez pour vérifier la réponse, au lieu de la question que vous avez posée à l'utilisateur.

Vous devez ajouter une entrée masquée dans votre formulaire, qui contient l'identifiant de la question

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

Et puis, lorsque vous vérifiez la réponse, assurez-vous de récupérer la bonne question dans la base de données

Le code ressemblerait à ceci

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