Die Auswahl von zufälligen Fragen aus der MySQL-Datenbank; "richtige Antwort" versaut

Baue ich ein einfaches quiz-Programm, mit Hilfe von PHP und MYSQL.

Das quiz ist gestaltet, um eine Frage zu einer Zeit; die Fragen sind multiple-choice-Fragen (jede Frage hat 4 mögliche Antworten)

Wenn der Spieler wählt richtig, er geht zur nächsten Frage;
wenn er wählt die falsche ein, das quiz ist zu Ende.

Zuerst entwarf ich das quiz wie folgt :

(1) erstellt eine Datenbank-Tabelle, die enthält 1500 Fragen. Die Tabelle hat die folgenden Spalten :

ID (primary key)
QUESTION (the question itself)
A1 (first answer)
A2 (second answer)
A3 (third answer)
A4 (fourth answer)
CORRECT  (the correct answer --- which is one of the above A1 to A4)

(2) Dann, meine PHP-code wurde entwickelt, um wählen die Fragen werden nacheinander in der Reihenfolge (mit der ID als Referenz).

So, wenn der Benutzer beginnt zu spielen, er beginnt mit Frage 1, dann Frage 2, etc, etc.

(3) um es interessanter Zu machen, fügte ich eine zusätzliche Spalte in der Datenbank (begin_id), das ist ein Standard-Wert "1", wenn sich ein Benutzer registriert, wie ein Spieler auf meiner quiz-website. Jedes mal, wenn der Benutzer eine Frage beantwortet hat, wird in dieser Spalte aktualisiert wird, mit, die Frage ist "ID". Bedeutung, er zeichnet die LETZTE Frage beantworteten (ob falsch oder richtig). Also : das nächste mal der Benutzer anmeldet, und spielt das quiz, er fängt nicht an zu von Frage-1. Stattdessen beginnt er von der NÄCHSTEN Frage, in der Liste. (Das heißt, der Benutzer sieht nie die gleiche Frage zweimal!)

Hier ist der code :

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

//Assign database response to variables
$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'];
$correct = $row_get_question['correct'];

//Check user answer
if (isset($_POST['submit'])) {   
    $selected_radio = $_POST['response'];

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

Und alles funktionierte wunderbar !!

Nun, ich beschloss, es noch mehr "effizient", sondern von der Auswahl der Fragen nacheinander, habe ich beschlossen, ändern Sie einfach meine PHP-SELECT-Anweisung, select-Fragen nach dem ZUFALLSPRINZIP.

Dies war nicht leicht, vor allem, da es so viele online-tutorials auf, wie dies geschehen ist.

Hier ist der code, den ich verwendet (die einfachste) :

SELECT * from questions_table order by rand() limit 1;

Diesem Werke, so weit wie die Auswahl von zufälligen Fragen geht. Aber etwas ist falsch : egal, welche Antwort der Benutzer wählt, es ist immer die FALSCHE Antwort!!

Für einige Grund, die Auswahl von zufälligen Fragen aus der Datenbank Durcheinander gebracht hat "Richtige Antwort /Falsche Antwort" Logik in meinem PHP-code.

Keine Ahnung, was falsch sein könnte.

UPDATE

   $get_question = "SELECT * from questions_table where id = $begin_id";

   $result_get_question = mysqli_query($conn,$get_question);

   $row_get_question = mysqli_fetch_array($result_get_question);  

   $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'];

   $correct = $row_get_question['correct'];
  <br>

  <form method ="post" action ="">

  <input type="radio" name="response" value="<?=$a1?>"><?=$a1?><br>

  <input type="radio" name="response" value="<?=$a2?>"><?=$a2?><br>

  <input type="radio" name="response" value="<?=$a3?>"><?=$a3?><br>

  <input type="radio" name="response" value="<?=$a4?>"><?=$a4?><br>
          <input type="hidden" name="question_id" value="<?= echo $question_id?>" 
    />        <br>

  <Input type = "submit" Name = "submit" Value = "Answer">        </form>
Bitte strukturieren Sie Ihren code lesbar. Und nicht Fett-von Angesicht zu der Frage. Verwenden blockquotes wenn wichtig
Warum nicht Sie erzeugen eine zufällige Nummer Ihrer ID im PHP-oder SQL-code?
nicht sicher, ob ich verstehe. Könnten Sie bitte näher erläutern? Dank
Haben Sie überprüft, um zu sehen, was die Variablen enthalten? d.h. durch Druck oder echo die variable. Das sollte Ihnen eine bessere Vorstellung, was zurückgegeben wird.
Der code, den Sie verwendet "(die einfachste)" 1) wählen Sie ALLE Daten (alle Zeilen, alle Spalten) aus der questions_table, 2), um das Ergebnis durch eine zufällige Spalte, auf die verwiesen wird durch Ihre Nummer und dann 3) beschneiden das Ergebnis immer nur die erste Zeile. Das ist nicht sehr schön; Randomisierung eine ausgewählte Zeile sollte durchgeführt werden, indem zufällig die ID in der WHERE Klausel, nicht, indem Sie Sie Sortieren, indem Sie eine zufällige Spalte.

InformationsquelleAutor phpnewbie2015 | 2015-08-10

Schreibe einen Kommentar