Quiz
Ik moet dus voor school een quiz maken.
Op dit moment heb ik 1 vraag en 4 antwoorden (met radio button's) en een submit button.
Nadat je een antwoord hebt gekozen en op submit button drukt moet je naar de volgende vraag gaan (als antwoord goed is). En als het antwoord fout is ga je weer terug naar vraag 1.
Ik heb nu deze code en ik kom er niet zo uit, omdat ik net pas begin met PHP:
Als je tips hebt hoor ik het graag!
Code (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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
include 'vraagjes.php';
?>
<form action="vraag2.php" method = "post">
<input type="radio" name= "vraag" value="Trunks">Trunks<br>
<input type="radio" name= "vraag" value="Goten">Goten<br>
<input type="radio" name= "vraag" value="Jamcha">Jamcha<br>
<input type="radio" name= "vraag" value="Gohan">Gohan<br>
<input type="submit" name="submit" value="Ga verder">
</form>
<?php
if (isset($_POST['submit'])) {
if (isset($_POST['vraag']))
{
if($_POST['vraag'] == $antwoord1) {
header("Location: index.php");
} ?>
<?php } ?>
<?php } ?>
include 'vraagjes.php';
?>
<form action="vraag2.php" method = "post">
<input type="radio" name= "vraag" value="Trunks">Trunks<br>
<input type="radio" name= "vraag" value="Goten">Goten<br>
<input type="radio" name= "vraag" value="Jamcha">Jamcha<br>
<input type="radio" name= "vraag" value="Gohan">Gohan<br>
<input type="submit" name="submit" value="Ga verder">
</form>
<?php
if (isset($_POST['submit'])) {
if (isset($_POST['vraag']))
{
if($_POST['vraag'] == $antwoord1) {
header("Location: index.php");
} ?>
<?php } ?>
<?php } ?>
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 15/05/2015 15:42:57 door - Ariën -
Omdat je net begint even een paar kleine spelregeltjes zodat je het wat makkelijker voor elkaar gaat krijgen.
1. Zet je PHP programma boven in het script en de HTML onderin. (Gouden regel)
2. Gebruik $_SERVER['REQUEST_METHOD'] om te bepalen of er op submit gedrukt is.
3. Valideer je formulier. Wat kan een gebruiker fout doen? bijvoorbeeld vergeten een radiobutton te kiezen..
4. Blijf lekker op één en dezelfde pagina totdat de validatie gelukt is en er dus geen fouten meer inzitten.
Ben je bekend met functies en array's? Zo niet check it out op phptuts.nl
Neem dit voorbeeldje maar als basis model.
Code (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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
// functie die de formuliervelden valideert en foutmeldingen aanmaakt
function validate($naam, $email)
{
$errors = array();
// validatieregels voor de naam
if(strlen($naam) < 2)
$errors[] = 'U heeft geen naam ingevuld.';
// validatieregels voor het mailadres
if(!strlen($email))
$errors[] = 'U heeft geen email adres ingevuld.';
else if(!filter_var($email, FILTER_VALIDATE_EMAIL))
$errors[] = 'U heeft een ongeldig email adres ingevuld.';
// geef de array met foutmeldingen terug
return $errors;
}
// initialisatie van de variabelen
// Zorgt er voor dat variabelen altijd bestaan en een standaardwaarde hebben.
$naam = '';
$email = '';
$errors = array();
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// overschrijf de standaardwaarden voor de waarden die ge-POST zijn
$naam = $_POST['naam'];
$email = $_POST['email'];
// valideer de ingevulde gegevens
$errors = validate($naam, $email);
// als er dan geen fouten zijn stuur de gebruiker door naar een bedank pagina
if(!count($errors))
{
// hier kun je nog een email versturen en/of de gegevens opslaan in de database
header('Location: bedankt.html');
exit;
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>een titel</title>
</head>
<body>
<ul id="errors">
<?php
foreach($errors as $error)
echo '<li>' . $error . '</li>';
?>
</ul>
<form action="" method="post">
<input type="text" name="naam" value="<?php echo $naam; ?>" />
<input type="email" name="email" value="<?php echo $email; ?>" />
<button type="submit">Verzenden</button>
</form>
</body>
</html>
// functie die de formuliervelden valideert en foutmeldingen aanmaakt
function validate($naam, $email)
{
$errors = array();
// validatieregels voor de naam
if(strlen($naam) < 2)
$errors[] = 'U heeft geen naam ingevuld.';
// validatieregels voor het mailadres
if(!strlen($email))
$errors[] = 'U heeft geen email adres ingevuld.';
else if(!filter_var($email, FILTER_VALIDATE_EMAIL))
$errors[] = 'U heeft een ongeldig email adres ingevuld.';
// geef de array met foutmeldingen terug
return $errors;
}
// initialisatie van de variabelen
// Zorgt er voor dat variabelen altijd bestaan en een standaardwaarde hebben.
$naam = '';
$email = '';
$errors = array();
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// overschrijf de standaardwaarden voor de waarden die ge-POST zijn
$naam = $_POST['naam'];
$email = $_POST['email'];
// valideer de ingevulde gegevens
$errors = validate($naam, $email);
// als er dan geen fouten zijn stuur de gebruiker door naar een bedank pagina
if(!count($errors))
{
// hier kun je nog een email versturen en/of de gegevens opslaan in de database
header('Location: bedankt.html');
exit;
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>een titel</title>
</head>
<body>
<ul id="errors">
<?php
foreach($errors as $error)
echo '<li>' . $error . '</li>';
?>
</ul>
<form action="" method="post">
<input type="text" name="naam" value="<?php echo $naam; ?>" />
<input type="email" name="email" value="<?php echo $email; ?>" />
<button type="submit">Verzenden</button>
</form>
</body>
</html>
Gewijzigd op 15/05/2015 16:03:11 door Frank Nietbelangrijk
Maar waarom moet je dat doen? Ik zou gewoon LimeSurvey downloaden, dan ben je gelijk klaar.
Wat je voor school nodig heb is een aantal vragen met een veelvoud aan antwoorden waarbij de goede gemarkeerd zijn. De vragen moeten een volgnummer hebben. Dat kan in een database of in een platte tekst-bestand als een CSV-bestand.
Het gemakkelijkst programmeert het wanneer je gegevens gescheiden zijn van je programma. Je kunt voor de vragen en antwoorden het snelst een CSV-bestand gebruiken, dan kan je die simpel maken via Excel of OpenOffice, als je niet bekend bent met CSV-bestanden.
Vervolgens maak je een PHP-script dat er ongeveer zo uit ziet in pseudocode:
1.) lees csv-bestand in
2.) is er nog geen volgnummer? reset hem dan naar waarde 1
3.) handel het formulier af als het wordt opgestuurd
3a.) kijk of het antwoord geldig is
3b.) is het antwoord ook nog correct hoog dan het volgnummer op
4.) toon HTML-formulier met de vraag met alle antwoorden met het huidige volgnummer
Voor exactie PHP functies en hoe ze (horen te) werken moet je in de handleiding kijken op PHP.net. Je kunt daar op functienaam zoeken. Onder andere bij: str_getcsv, var_dump.
En ook moet je weten hoe variabelen werken: http://php.net/manual/en/language.variables.basics.php
en hoe operatoren werken: http://php.net/manual/en/language.operators.php
DBZ +1