Volledige versie bekijken : Quiz



roeba123
22 October 2009, 12:58
Hallo

Eerst en vooral, ik weet zo goed als niets van webdevelopment, daarom dat ik jullie hulp hier wel kan gebruiken.

Ik heb een opdracht gekregen ,van school uit, om een kleine site te maken waar één quiz op moet staan.

Nu is dit mijn vraag, zou er een programma bestaan of een makkelijke code om een quiz te maken die zo opgesteld is als deze hier (http://www.mijnquiz.nl/quiz/geografischen-kwis).

De quiz zou zo moeten zijn zoals in het voorbeeld, dus de vereisten zijn:
- Ze krijgen telkens één vraag te zien, waar ze A, B, C, D,.. kunnen aanklikken als antwoord
- Wanneer het fout is, zou de verklaring moeten komen Waarom het fout is.
- Dan pas kunnen ze naar de volgende vraag, als hun antwoord juist was slaan ze de vorige stap natuurlijk over.
(- En als dit mogelijk is, dat ze op het einde nog eens hun punten krijgen of zien waar ze fout waren. Maar dit is optioneel)

Ik weet niet of dit veel inhoud of niet. Daarom dat ik jullie hulp vraag.
Alle tips zijn welkom
Alvast bedankt!

ultddave
22 October 2009, 14:30
Ik heb een opdracht gekregen ,van school uit, om een kleine site te maken waar één quiz op moet staan.

Je moet het zelf schrijven hé. De leraar ziet direct als je iets hebt gekopiëerd. ;)

Het idee erachter is vrij simpel.

Je gebruikt maar 1 .php file voor alle vragen. Door middel van $_GET kan je de vragen aanduiden.



vragen.php
vragen.php?vraag=1
vragen.php?vraag=2
vragen.php?vraag=3

In de PHP code kan je de waarde van "vraag" opvragen. En door middel van If Else testen kan je dan de respectievelijke vraag tonen.


If ($vraag == 1)
echo "Vraag 1";
else if ($vraag == 2)
echo "Vraag 2";

Ofwel met een switch werken. Moet je zelf zien, wat je het gemakkelijkste vind.

Om de waarde van "vraag" op te vragen gebruik je deze code:


if(isset($_GET['vraag']))
$vraag= intval($_GET['vraag']);
else
$vraag = 0

*******

De vragen zelf kan je maken door een "form" te gebruiken met 4 radio buttons bijvoorbeeld. De gebruiker moet ene aanduiden en op de knop "verzend antwoord" duwen.

In dit geval plaatsen ze 3 of 4 links.
Bijvoorbeeld de link van vraag 1: Antwoord 1 kan dan wijzen naar:
vragen.php?antwoord=1&vraag=2

met "antwoord=1" duid je het antwoord op de vorige vraag aan. En kan je dus de volgende vraag tonen, + het antwoord van de vorige vraag nakijken en respectievelijke een punt geven of het juiste antwoord tonen.

Hier moet je ook weer hetzelfde soort code gebruiken om die antwoord=1 uit te lezen:


if(isset($_GET['antwoord']))
$antwoord= intval($_GET['antwoord']);
else
$antwoord = -1 // De gebruiker heeft niet geantwoord op de vorige vraag.
// Is dit misschien de eerste vraag? Of probeert hij vals te spelen?
// Dat moet je dan nagaan door de inhoud van "vraag" te bekijken.
//Als "vraag" niet bestaat, is het de eerste vraag. Anders speelt hij vals :P
// Of probeert hij dat te doen alleszins.

Voorbeeld van zo een vragen.php


<?php

if(isset($_GET['vraag']))
$vraag= intval($_GET['vraag']);
else
$vraag = 0

if(isset($_GET['antwoord']))
$antwoord= intval($_GET['antwoord']);
else
$antwoord = -1


if($vraag == 0)
{
// Toon vraag 0
}
else if ($vraag == 1)
{
if($antwoord==1)
// Juist antwoord -> Tel een punt bij de score.
else if($antwoord == 2)
echo "antwoord 1 was juist op vraag 0";
else if ($antwoord == 3)
echo "antwoord 1 was juist op vraag 0";
else
echo "stop cheating please :D";

echo "\n\n\n\n";
// Toon vraag 1
}

?>


Opzich kan je om het makkelijk te maken, de score ook doorgeven via $_GET, maar dan kan de gebruiker dat manipuleren. Via $_POST is het veiliger.

Je kan een onzichtbaar input tag toevoegen aan je form met je vraag. Waardoor je eigenlijk elke keer de score gaat meegeven na elke vraag. Die score pas je dan aan als de vraag juist is, en je plaatst die nieuwe score bij die onzichtbaar input tag.

http://www.w3schools.com/TAGS/tag_input.asp

Je gebruikt daarvoor het type "hidden".

In de php code kan je dan bijvoorbeeld schrijven:

echo "<input type=hidden value=".$score." />";

Als $score dan gelijk is aan "8" dan krijg je dus dit:

<input type=hidden value=8>

Onzichtbaar voor de gebruiker, maar je kan de waarde van "value" altijd opvragen en gebruiken bij elke vraag.

PS: Misschien heeft iemand anders een beter idee? :D

Mvg,
Dave

roeba123
22 October 2009, 18:18
Dat het gekopieerd zou zijn maakt eigenlijk niet zoveel uit hoor.
Het feit is gewoon dat ik zo'n quiz op poten moet zetten op een site.
De inhoud van de quiz is het die beoordeeld zal worden.

Maar daarvoor moet er natuurlijk wel eerst een quiz zijn;)

Maar de uitleg die je me geeft kan ik wel goed volgen en is zeer uitgebreid, waarvoor dank!
Dus zal ik maar eens aan de slag gaan, met de raad die je mij gegeven hebt en ik zie wel hoe ik het er vanaf breng. Hopelijk goed:D

Gert B
22 October 2009, 23:05
Wat ook nuttig kan zijn: in flash heb je een ingebouwde quiztemplate, met heel wat mogelijkheden. Ik heb deze ook eens gebruikt voor een schoolopdracht ( http://cmdstud.khlim.be/~gbangels/case2.3/ (http://cmdstud.khlim.be/%7Egbangels/case2.3/) (pijltje naar rechts om te starten :p))

Maarja, in php kan het natuurlijk ook :-)

Gert

ultddave
22 October 2009, 23:14
@Roeba; Als het niet zou lukken, dan zeg je het maar. ;)

@Gert; Ah ok. :D Het nadeel is dat de gebruiker dan wel flashplayer moet hebben :(. En Roeba spreekt hier over webdevelopment , dus ik vermoed dat hij bezig is met PHP, JavaScript op school. :p

Flash is meer richting webdesign, dus daarmee kan je mooiere dingen maken dan met zo een "simpele" html form :p. Maar ze leren geen flash bij webdevelopement. :cry: (Alleszins toch niet in de richting ICT die ik volg)

Greetz,
Dave