Kann mir dabei denn echt niemand helfen?!![]()
Hi,
ich möchte auf unserer Seite ein kleines Quiz in PHP realisieren.
Das ganze soll so funktionieren, dass dem jeweiligen Nutzer einige Fragen gestellt werden, bis er - sagen wir 5 - falsche Antworten gegeben hat.
Es sollen Multiple-Choice fragen sein.
Die Fragen sollen in 4? Schwierigkeitsstufen eingeteilt sein, wobei dem Nutzer aus jedem Level 10 zufällig gewählte Fragen gestellt werden. Die Fragen sollen aus einer Datenbank geladen werden. Für jede richtige Frage bekommt der Nutzer Punkte gutgeschrieben. Die besten Spieler sollen später + erreichte Punktzahl extra gelistet werden. Soweit eigentlich kein problem ;-)
Mein eigentliches Problem liegt darin, wie ich das mit den Punkten habdhabe.
Ich hatte mir überlegt, dass es doch über Sessions möglich sein müsste, den Fortschritt und den Namen des Spielers für die Dauer des Spiels zu speichern und die entsprechenden daten, nach ende des Quizes in die DB zu schreiben. Leider habe ich noch nie mit Sessions gearbeitet (ich habs einfach noch nicht gebraucht) und daher eigentlich überhaupt keinen Plan, wie ich sowas realisieren könnte.
Ich wäre euch sehr dankbar, wenn ihr mir anhand meines Beispiels, möglichste ausführlich, einige Lösungswege beschreiben könntet. Bitte so, dass es auch ein "Session-Neuling" versteht
Danke!
Kann mir dabei denn echt niemand helfen?!![]()
Warum nutzt du nicht einfach google oder die interne suchmaschine um tutorials zum thema zu finden? du kannst nicht erwarten, dass dir hier einer vom urschleim alles erklärt.
möglichst ausführlich hast vergessen
p.s. im Ernst: ich bin gerne bereit dir gegen entsprechendes Entgelt so ein System zu erstellen - falls du Interesse hast melde dich per PM
Ich habe lediglich gefragt, ob ihr mir evtl. ein paar Tips zur Umsetzung des Scripts geben könnt und, aber das scheint zuviel verlangt zu sein, mir erklärt, welche Rolle Sessions in diesem Zusammenhang spielen.
Ich denke schpon, dass ich mit PHP gut genug klar komme, um ein solches Script zu schreiben. Ich habe lediglich noch nie mit Sessions gearbeitet und da ist es doch nur logisch, dass man sich kurz informieren möchte, bevor man planlos los legt...![]()
Sessions sind recht einfach..
an den Anfang jeder *.PHP Datei
session_start();
die Variablen kannst du über $_SESSION[varname] ansprechen.
Die Session "zerstörst" du mit session_destroy();
Ich hoffe das hilft dir weiter![]()
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
Denke ma, ich bekomm das mit den Sessions schon irgendwie hin...
Da stellt sich mir aber noch eine andere Frage:
Das Script soll zunächst aus zwei Dateien bestehen (zwei, weill ich die Dateien in den Rest der Site include, mit mehr Dateien würde es noch unübersichtlicher )
In der ersten Datei (start.php) gibt der User seinen Namen ein und klickt dann auf einen Button, der die zweite Seite öffnet und das Spiel starten soll.
Wie bekokomme ich es nun hin, dass auf dieser einen Seite das gesamte Quiz abläuft?
Es soll eine frage gestellt werden, wenn diese beantwortet wurde, wird die nächste gestellt usw.
Wie stell ich das an?
Die Fragen sollen aus einer DB geladen werden.
Wenn DU noch mehr zu Sessions wissen willst, schau mal hier
Du müsstest doch bereits mit Parameterübergaben über die URL gearbeitet haben?! Dann liegt doch kein Problem darin einfach eine Variable an die URL zu hängen, die dem Skript sagt bei welcher Frage der Besucher inzwischen angekommen ist! Natürlich musst du aufpassen, dass der Besucher, dass System nicht über diese Variable manipulieren kann. Ich denke, wenn du schon mit Datenbankanbindung zu tun hast und dein System soweit entwickelt hast, müsstest du eigentlich mit ein bisschen Denkarbeit deine Frage alleine beantworten können.
Ich will ja eigentlich bloß wissen, wie ich dem Script sage, dass es jetzt, nachdem eine Frage beantwortet wurde, eine neue Frage stellen soll.
Ich glaube, ich hab da ne kleine Denkblockade...
An die Denkblockade glaube ich auch
Wenn es ohne vorherige Prüfung der Antwort sein soll (Auswertung am Ende) einfach in die action vom form Tag das dateiintene Zeil angeben und somit in eine funktion oder schleife springen (action="<?PHP_SELF?>?action=frage").
In der Funktion (oder was Du da nimmst) via random funktion eine neue frage wählen lassen oder int. zähler um eins erhöhen und dann eine neue Frage via ID holen lassen.
Willst Du vorher ausgeben lassen ob die Antwort richtig oder falsch war, da einfach einen Button (nächste Frage) und dann das selbe Spiel.
Soviel als Denkanstoß, gibt aber noch mehr Möglichkeiten, einfach mal in Ruhe nen Kaffee trinken dann kommen die Ideen schon![]()
Ich hab heut mal ein wenig rumprobiert und versucht meine Gedankenblockade zu überwinden...
Folgendes ist dabei rausgekommen:
Die Struktur der vorläufigen Tabelle könnt ihr dem Anhang entnehmen.
Das Feld Status soll indizieren, ob eine Frage bereits gestellt wurde.
Der Rest sollte soweit selbsterklärend sein
Nun zu meinen ersten Versuchen das eigentliche Script zu coden... :-(
Das ganze befindet sich in der datei quiz.php welche in die Datei index.php "includet" wird.PHP-Code:<form action="?open=quiz&action=play" name="quiz" id="quiz">
<?php
$res = mysql_connect("localhost", "XXX", "XXX");
if (!$res)
{
echo "Kann z.Z. keine Verbindung zum Datenbankserver aufbauen.\n";
exit;
}
mysql_select_db("alkbrueder_de");
$sqlab = "SELECT * FROM quiz WHERE level = '3' && status != 0 ORDER BY RAND() LIMIT 1";
$res = mysql_query($sqlab);
$row = mysql_fetch_array($res);
$sqlab = "UPDATE quiz SET status = '0' WHERE id = ".$row[id];
mysql_query($sqlab);
?>
...
</form>
Nun soll das Script im ersten Schritt einfach einen zufälligen Datensatz aus der DB holen und mir die Frage, sowie die Antworten ausgeben - DAS funktioniert auch.
Nun zum ersten Problem:
Das Status-Feld in der DB wird nicht auf 0 gesetzt - warum?
Ausserdem:
Eigentlich sollte, nachdem ich eine Antwort angeklickt habe, das Formular abgeschickt werden und mir eine weitere Frage gestellt werden. Statt dessen werde ich aber auf die Seite [index.php[/i] weitergeleitet und in der url taucht etwas in dieser Form auf:
("sent" ist ein verstecktes Feld mit dem Wert "1")
Warum funktioniert das nicht?
Ich schicke das Formular ab, sobald ein Radiobutton angewählt wurde:
Was mache ich falsch?Code:<input type="radio" name="answer" value="answer1" onclick="document.quiz.submit();">
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)