Hallo,
Ik ben bezig met een webquiz te maken in PHP. Nu is het de bedoeling dat er een database gekoppeld wordt, waar de naam van de speler en de score naartoe wordt gestuurd. De koppeling is gelukt, maar er wordt niets naartoe verzonden, lijkt wel. De quiz bestaat uit 10 vragenpagina's, een index waar een session wordt gestart, gameover.php en highscore.php:
Vervolgens wordt op iedere vragenpagina een tellertje aangemaakt en ieder juist antwoord wordt in de GET variabele gezet (altijd a, dus boven in de adresbalk bijv vraag3.php?antwoord=a). Indien fout gaat de quiz naar de game over pagina.
Op de highscore pagina moeten de hoeveelheid punten (iedere vraag is 1 punt) en de naam naar de database toegezonden worden.
Nu is het zo dat als ik de quiz een keer speel, dat het dan zo is dat mijn naam en score NIET in de array staan die op de highscore pagina wordt gestuurd. Hoe zou ik dit kunnen oplossen?
Ik ben bezig met een webquiz te maken in PHP. Nu is het de bedoeling dat er een database gekoppeld wordt, waar de naam van de speler en de score naartoe wordt gestuurd. De koppeling is gelukt, maar er wordt niets naartoe verzonden, lijkt wel. De quiz bestaat uit 10 vragenpagina's, een index waar een session wordt gestart, gameover.php en highscore.php:
PHP:
1
2
3
4
5
6
7
| session_start(); if (isset ($_GET['naam'])) { $naam = $_GET['naam']; $_SESSION['naam'] = $naam; //de variabele naam declareren $_SESSION['vraag'] = $vraag; //de variabele vraag declareren } |
Vervolgens wordt op iedere vragenpagina een tellertje aangemaakt en ieder juist antwoord wordt in de GET variabele gezet (altijd a, dus boven in de adresbalk bijv vraag3.php?antwoord=a). Indien fout gaat de quiz naar de game over pagina.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| session_start(); $_SESSION['vraag'] = 2; //dit is de vraag waar de speler is $antwoord = $_GET['antwoord']; //de variabele antwoord if($antwoord == "a") { echo "Dat is goed!"; //als het antwoord a is, is het goed en wordt dit op het scherm gezet } else { echo "<meta http-equiv=\"refresh\" content=\"0;URL=gameover.php\">"; //bij een fout antwoord wordt de speler meteen naar de gameover pagina doorgestuurd } |
Op de highscore pagina moeten de hoeveelheid punten (iedere vraag is 1 punt) en de naam naar de database toegezonden worden.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| session_start(); $servername = "localhost"; $username = "root"; $password = "root"; $dbname = "highscore"; $conn = new mysqli($servername, $username, $password, $dbname); //connectie met de database maken if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); //als de conectie niet lukt, krijg je de melding "connection failed" } $sql = "INSERT INTO highscore (naam, score) VALUES ('naam', 'vraag')"; //plaats naam en vraag uit de session in de kolommen naam en score if ($conn->query($sql) === TRUE) { /* echo "New record created successfully"; */ //dit komt op het scherm als alles gelukt is, dat is het uiteraard dus ik comment het omdat het niet op het scherm hoeft te verschijnen } else { echo "Error: " . $sql . "<br>" . $conn->error; //als er geen nieuw record is gemaakt dan krijg je een foutmelding } $result = mysqli_query($conn,"SELECT * FROM highscore ORDER BY score ASC LIMIT 10"); while($row = mysqli_fetch_array($result)) { echo $row['naam'] . " " . $row['score']; echo "<br>"; } $conn->close(); //sluiten van de mysql connectie |
Nu is het zo dat als ik de quiz een keer speel, dat het dan zo is dat mijn naam en score NIET in de array staan die op de highscore pagina wordt gestuurd. Hoe zou ik dit kunnen oplossen?