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:
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(?)
$_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...
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