Hier mal ein kleines Beispiel mit JQuery
Code:
function getQuestion() {$.ajax({type: "GET",
url: "question.php",
dataType: "xml",
success: handleResponse
});
}
function handleResponse(data) {$('#question').html($('question',data).text());
$('#questionid').val($('questionid',data).text());
}
function sendAnswer() {$.ajax({type: "GET",
url: "answer.php",
data: "questionid=" + encodeURIComponent($('#questionid').val()) + "answer=" + encodeURIComponent($('#answer').val()),
dataType: "xml",
success: handleAnswerResponse
});
}
function handleAnswerResponse(data) {if($('info',data).text()=='right') {if(EndeNochNichtErreicht == true) {//Mehr Fußspuren
getQuestion();
} else {//Was auch immer dann passiert
}
} else {//Frage falsch beantwortet
//Was auch immer dann passiert
}
}
Im HTML Code brauchst du dann ein Element indem du die Frage anzeigst:
HTML-Code:
<div id="question"></div>
<form action="index.php" method="POST">
<input name="questionid" id="questionid" type="hidden" />
<input name="answer" id="answer" type="text" />
<input type="button" onClick="javascript:sendAnswer()" />
</form>
<script type="text/javascript">
//Erst ausführen, wenn alles geladen ist
$(document).ready(function() {
getQuestion();
}
</script>
Beachte die id des divs und das $('#question') im Javascript Code
Nun brauchst du noch die Question.php
PHP-Code:
header('Content-type: text/xml;charset=UTF-8');
echo "<xmlresponse>\n";
//Zufällige Frage aus der Datenbank holen
echo "<questionid>".$row['id']."</questionid>";
echo "<question>".$row['question']."</question>";
echo "</xmlresponse>\n";
Beachte das <question> und $('question',data) aus dem Javascript Code.
Und die Answer.php
PHP-Code:
header('Content-type: text/xml;charset=UTF-8');
echo "<xmlresponse>\n";
//SQL Abfrage ob die gegebene Antwort die richtige zur Frage ist (Frage kann über die ID abgefragt werden)
if(richtig) {
echo "<info>right</info>";} else {
echo "<info>false</info>";}
echo "</xmlresponse>\n";
Nun hast du schonmal eine Grundlage mit JQuery und AJAX (ohne JQuery sieht es komplizierter aus)
Die zusätzliche ID übergebe ich, damit man die Frage einfacher identifizieren kann.
Solltest du Fragen mit vorgegebenen Antwortmöglichkeiten haben, dann würde ich diese in der Datenbank so abspeichern, dass die erste Antwort immer die richtige ist, so sparst du dir ein zusätzliches Feld in der Datenbank, darfst allerdings das durcheinanderwürfeln der Antworten vor der Ausgabe nicht vergessen
Noch eine kleine Anmerkung:
Ich habe alles aus dem Kopf geschrieben, deswegen bin ich mir nicht 100% sicher, ob es ohne Probleme so funktioniert, vielleicht müssen noch ein paar Stellen angepasst werden. Ich hoffe ich konnte dir weiterhelfen.
Und Außerdem: Eine While Schleife wird nicht benötigt, da der User ja eine Eingabe macht und du dadurch immer wieder abfragen kannst ob es vorbei ist oder nicht