Permalänk
Medlem

PHP hjälp - Quiz

Tjenare!

Har en liten skoluppgift där det går ut på att skapa ett quiz med givna resultat, exempelvis ett vad-är-du-för-färg-quiz på Facebook

Allting börjar med en index.html sida där användaren skriver in sitt namn som sparas i en sessionsvariabel i nästa sida vid namn start.php.

Start.php ska innehålla alla frågor, samt svarsalternativ, ordningen på alternativen och en lämplig bild.
Sådär ser start.php ut för tillfället:

Citat:

start.php innehåller all php kod som skapar frågorna

<?php session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Quiz</title> </head> <body> <?php $_SESSION["fullname"]=$_POST["fullname"]; // variabeln fullname deklareras efter inmatning i formuläret. echo "<h1>" . "Quiz time" . "</h1>"; echo "<p>" . $_SESSION["fullname"] . ", are your ready to start the quiz?</p>"; echo "<form action=\"q.php\" method=\"get\"><input type=\"submit\" value=\"Start\"></form>"; $_SESSION["quizname"]="Vilken figur i Minecraft är du?"; // namnet på quizen $_SESSION["resulttitles"]=array("Zombie Pigman","Enderman","Ko", "Bläckfisk", "Spindel", "Creeper"); // möjliga resultat $_SESSION["resultimages"]=array("yellow.gif","red.jpg","blue.jpg"); // bilder av möjliga resultat $_SESSION["questionnumber"]=0; //börja med fråga 0 $_SESSION["numberofquestions"]=7; // frågorna deklareras $question0=array($questiontitle => $question["questiontitle"]="Hur spenderar du dina dagar?", $alternatives => $question["alternatives"]=array("På ett varmt ställe, där ingen stör.", "Så långt borta som det går, gärna där ingen hittar mig.", "På en äng, där jag äter gräs och mår bra.", "Under vattnet, jag trivs där...", "Gärna långt under marken, i trånga gångar.", "I en grotta, ingen kommer ner där ändå."), $order => $question["order"]=array(0, 1, 2, 3, 4, 5), $image => $question["image"]="imgsrc"); $question1=array($questiontitle => $question["questiontitle"]="Vad brukar du oftast bli av med när du är ute och går?", $alternatives => $question["alternatives"]=array("Lite guld och ibland ruttet kött...", "Typ inget... Kanske en pärla då och då.", "Kött och min egen hud!", "Bläck, fast det hamnar så långt ner på botten av havet.", "Har hänt att jag tappat mina ögon...", "Jag brukar bli av med mitt krut..."), $order => $question["order"]=array(0, 1, 2, 3, 4, 5), $image => $question["image"]="imgsrc"); $question3=array($questiontitle => $question["questiontitle"]="Om du träffar någon du inte känner om kvällarna, hur bemöter du denna personen?", $alternatives => $question["alternatives"]=array("Står bara och tittar. Men om jag blir störd, då har det gått för långt!", "Hälsar lite snällt. Vill dock inte ha ögonkontakt, blir arg då.", "Tittar lite förundrande bara, säger kanske hej.", "Jag tror aldrig jag har träffat någon faktiskt...", "Jag gillar att hoppa, så jag hoppar gärna på denna personen!", "Smyger fram, gärna bakom personen, SEN SMÄLLER JAG!"), $order => $question["order"]=array(0, 1, 2, 3, 4, 5), $image => $question["image"]="imgsrc"); /* $question3["questiontitle"]=""; $question4["questiontitle"]=""; $question5["questiontitle"]=""; $question6["questiontitle"]=""; */ $_SESSION["allquestions"]=array($question0, $question1, $question2, $question3, $question4, $question5, $question6); //sidan start skapar en array som innehåller en hel quiz. //varje vektor innehåller en fråga //skapa en fråga i taget /* FÖRSTA ARRAYEN - all information ligger i respektive array. //question0["questiontitle"]="Vilket snus föredrar du?" ANDRA ARRAYEN //question1["questiontitle"]="Vilken cigarret är du?" TREDJE ARRAYEN //question2["questiontitle"]="Vilket öl är du?" */ //$_SESSION["allquestions"]=array($question0, $question1, $question2); //q.php = session med besök? för varje nytt besök som adderas kommer en ny fråga att visas. När alla frågor visats, kommer man till sidan finish. ?> </body> </html>

Har sparat varje fråga i en flerdimentionell array - som jag hoppas jag gjort rätt(?)

Citat:

$_SESSION["allquestions"]: en flerdimensionell array som innehåller alla frågor. allquestions har lika många element som det finns frågor. Varje fråga är i sin tur en associativ array med elementen

När sedan själva quizet startar ska man komma till sidan q.php där varje fråga laddas in med hjälp av en loop som finns i en funktion vid namn functions.php

Functions.php ser ut enligt följande och ska enligt mig fungera utan problem...

<?php function showquestion($questiontitle,$alternatives,$order,$image,$questionnumber,$numberofquestions) { if ($questionnumber < ($numberofquestions -1)) { $next="q.php"; } else { $next="finish.php"; } echo "<h3>" . $questiontitle . "</h3>"; // frågeformuläret skapas echo "<form method=\"get\" action=\"$next\">"; for ($i=0; $i<count($alternatives); $i++) { echo ("<input type=\"radio\" name=\"answer\" value=\"$i\"/> $alternatives[$i] <br />"); } echo "<input type=\"submit\" value=\"Next\" />"; echo "</form>"; } ?>

Tror mitt problem ligger i sidan q.php då jag inte får ut någon information från min start.php.

q.php ser ut såhär och känns inte alls rätt...

Citat:

q.php visar alla frågorna, en åt gången.

<?php session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Quiz</title> </head> <body> <?php include "functions.php"; $quizname=$_SESSION["quizname"]; $numberofquestions=$_SESSION["numberofquestions"]; $questionnumber=$_SESSION["questionnumber"]; $question=$_SESSION["allquestions"][$questionnumber]; $questiontitle=$question['questiontitle']; $alternatives=$question['alternatives']; $order=$question['order']; $image=$question['image']; echo "<h1>" . $quizname . "</h1>"; showquestion($questiontitle, $alternatives, $order, $image, $questionnumber, $numberofquestions); $_SESSION["questionnumber"]++; ?> </body> </html>

Det jag vill ha hjälp med är alltså att få ut samtliga frågor i q.php så dessa syns och så alla frågor loopas genom innan quizet sen är slut och ett resultat skrivs ut.

Tackar för all hjälp jag kan få!

Danny

Permalänk
Medlem

Spara besvarade frågor i en session-variabel sen jämför du de med alla frågor som finns och så ser du vilka frågor som är kvar att besvara.

Visa signatur

I'm Winston Wolfe. I solve problems.

Permalänk
Medlem

Lyckades få ut så att alla frågor syns, nu ska de bara alternativen få olika ordning beroende på vilken fråga man besvarar. Samt att ett resultat ska visas på finish.php sidan