Voor de open dag op het MBO wilde we wat leuks voor de bezoekers maken. Ik heb dan ook de opdracht gekregen een quiz te programmeren. De website is nog online op opendag.icthv.nl.
Ik was wel even bezig hiermee, vooral de laatste dagen voor de open dag moest ik flink doorwerken. Maar het is gelukt.
Ik heb geleerd:
- Meer over Object Oriented Programmeren (OOP)
- Maken van een database design
- Gebruik van header functie in PHP.
- Meer over sessies in PHP.
- Gebruik van de FaceBook API
Om alles op te slaan heb ik een MySQL database gebruikt.
Om valsspelen te voorkomen, waren er meerdere vragen-sets. De vragen die je krijgt ligt aan de tijd dat je de quiz begonnen bent.
public function kiesSet(){ global $db; $query = $db->prepare("SELECT * FROM opendag.set WHERE start <= NOW() AND eind > NOW()"); $query->execute(); $set = $query->fetchAll(); if (!isset($set[0][0])){ echo 'U kunt dit nu niet doen, probeer later nog eens. '; return 0; } $this->set = $set[0]['id']; return $set[0]['id']; }
De applicatie bekeek ook of de gebruiker al bestond in de database, zodat elk facebook account het slechts 1 keer kan doen. Als je nog een keer inlogd gaat het naar de vraag waar je was, of als je alles al gedaan hebt laat het de resultaten weer zien.
public function checkExists(){ global $db; $query = $db->prepare("SELECT COUNT(*) FROM gebruikers WHERE email='{$this->email}'"); if($query) { $query->execute(); if($query->fetchColumn()){ $query = $db->prepare("SELECT id FROM gebruikers WHERE email='{$this->email}'"); if($query) { $query->execute(); $row = $query->fetch(); return $row['id']; } else { $error = $db->errorInfo(); echo $error[2]; exit; } } else { return 0; } } else { $error = $db->errorInfo(); echo $error[2]; return false; } }
2 dingen waar ik even mee bezig was, en natuurlijk erg belangrijk was was de functie die de vraag ophaald. (doevraag). En de functie ‘opslaan’ om het antwoord op te slaan.
class vraag { public function opslaan ($set, $pp, $antwoord){ global $db; $ID = $set * 6 + $pp - 6; $query = $db->prepare("SELECT * FROM antwoorden WHERE vraag_id='$ID' AND gebruiker_id='".$_SESSION['id']."'"); $query->execute() or die("help"); $aantal = $query->rowCount(); if (empty($antwoord)){ $antwoord = "[ leeg ]"; } if ($aantal == 0){ $query = $db->prepare("INSERT INTO antwoorden (gebruiker_id, vraag_id, antwoord, tijd) VALUES ('".$_SESSION['id']."', '$ID', '$antwoord', NOW())"); $query->execute() or die ('Antwoord invoegen mislukt. '); } } public function doeVraag($pagina, $set){ global $db; $query = $db->prepare("SELECT * FROM vragen WHERE set_id=$set AND pagina=$pagina"); $query->execute() or die('Er zijn geen vragen voor dit tijdstip. '); $fetchy = $query->fetchAll(); $nextPP = $pagina + 1; echo nl2br($fetchy[0]['vraag']).'<br />'; ?> <form action="index.php" method="post"> <input type="hidden" value="<?=$nextPP?>" name="pp" /> <input type="text" name="antwoord" /> <input type="submit" value="Volgende" name="submit" /> </form><?php } }