sql >> Base de Datos >  >> RDS >> Mysql

Selección de preguntas aleatorias de la base de datos MySQL; respuesta correcta en mal estado

Cuando le hace su pregunta al usuario, se selecciona aleatoriamente una pregunta de la base de datos.

Luego, el usuario envía su formulario, se selecciona aleatoriamente otra pregunta, y esa es la pregunta que está usando para verificar la respuesta, en lugar de la pregunta que le hizo al usuario.

Debe agregar una entrada oculta en su formulario, que contiene la identificación de la pregunta

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

Y luego, cuando verifique la respuesta, asegúrese de obtener la pregunta correcta de la base de datos

El código se vería así

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