Antwoord niet bij de juiste som

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jelle Botman

Jelle Botman

12/02/2015 11:36:08
Quote Anchor link
ik krijg het juiste antwoord niet achter de juiste som ge echo,t.
Als ik het juiste antwoord invoer dan word het antwoord wat ik heb ingevuld, bij de volgende som weergegeven.
Pleasse help

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<!DOCTYPE html>
<html>
    <head>
        <title>
        Rekenwebsite
        </title>
        <link href="sommen.css" type="text/css" rel="stylesheet" />
        <style>
        {background-color: blue;}
        </style>
    </head>
<body>


<?php
// Start the session
session_start();
if(isset($_SESSION['aantalvragen']))
{

$aantalvragen = $_SESSION['aantalvragen'];
$cijfer = $_SESSION['cijfer'];
}

else {
    $aantalvragen = 1;
    $cijfer = 0;
}


if(isset($_POST['antwoord']))
{

$antwoordgebruiker = $_POST['antwoord']; // haalt het antwoord van de gebruiker op
}
else {
    $antwoordgebruiker = null; // antwoord is leeg
}


$som1 = mt_rand(1,10); // willekeurig getal 1 tot en met 10
$som2 = mt_rand(1,10);
$antwoord = $som1 + $som2;


//var_dump($sommen); uitlezen array

if($aantalvragen<=20)
{

    echo'<div id="pagina">';
    echo'<a href="Homepage.php"><img src="Logo Rekenwebsite.png" width="240" height="240"></a><br/>';
    echo'<br/><div id="menu1"><h1>Rekenwebsite De Splinter</h1></div>';
    echo'<div id="menu2"><h3>Test hier je vaardigheden voor groep 4, 5 en 6!</h3></div>';
    echo '<div id="som">';
    echo '<form method="POST" action="">';
    echo '<b>Vraag '.$aantalvragen.' / 20</b><br/>';
    echo $cijfer;
    echo '<h1>'.$som1.' + '.$som2.' = </h1>';
    echo '<input name="antwoord" type="text" size="8" autofocus maxlength="8">';
    echo '<input name="volgende" type="submit" value="Volgende">';
    echo '</form>';
    echo '</div>';
    
    
    
    
    
if(isset($_POST['volgende'])){
$sommen[$aantalvragen-1][1] = $antwoordgebruiker;

}

if(isset($_SESSION["sommen"]))
{


$sommen = $_SESSION["sommen"];
}

else
{
$sommen = array();
}

$sommen[$aantalvragen] = array($som1.' + '.$som2." = ".$antwoord.' Uw antwoord is: '.$antwoordgebruiker); // slaat sommen en antwoord op
if ($_POST['antwoord'] == $antwoord){
$cijfer = $cijfer + 0.5;}
$aantalvragen++; // telt de vragen op
$_SESSION['aantalvragen'] = $aantalvragen;
$_SESSION['cijfer'] = $cijfer;
$_SESSION["sommen"] = $sommen;
 
}

else
{



$sommen = $_SESSION["sommen"]; // uitslag
echo'<div id="pagina">';
echo '<table>';
echo'<a href="Homepage.php"><img src="Logo Rekenwebsite.png" width="240" height="240"></a><br/>';
echo'<br/><div id="menu1"><h1>Rekenwebsite De Splinter</h1></div>';
echo'<div id="menu2"><h3>Test hier je vaardigheden voor groep 4, 5 en 6!</h3></div>';
for($i=1; $i<21; $i++)
{
for($k=0; $k<count($sommen[$i]);$k++)
{
echo '<tr><td><h2>'.$sommen[$i][$k].'</h2></td></tr>';}}
echo $cijfer;
echo '</table>';
echo '<br/><a href="Homepage.php">Terug naar Homepage</a>';
echo '</div>';
session_destroy();
 // verwijderd de sessie zodat de sommen weer opnieuw gemaakt kunnen worden
}

?>


</body>
</html>

- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 12/02/2015 14:04:29 door - Ariën -
 
PHP hulp

PHP hulp

07/05/2024 04:52:33
 
Thomas van den Heuvel

Thomas van den Heuvel

12/02/2015 14:00:23
Quote Anchor link
Zoals ik het zie, doet dit script twee dingen:

- toont, op grond van hoeveel sommen er reeds gemaakt zijn
- ofwel een formulier voor het maken van een som
- ofwel een resultaat pagina
- verwerking van het formulier van een rekensom

In het bovenstaande script loopt dat een beetje door elkaar. Daarnaast pingel je tussenresultaten heen en weer tussen variabelen en de sessie.

Dit alles vertroebelt de leesbaarheid van het script.

En daarmee de uiteindelijke werking.

En daarmee het gemak waarmee je er fouten uithaalt.

Dus, creëer eerst eens orde in deze chaos, bijvoorbeeld door dit script in twee stukken op te delen (een weergave-deel en een verwerk-deel).

Daarnaast, als je scripts begint te schrijven, moet je ook een zekere minimale kennis hebben om scripts te debuggen. Dit kun je doen door het aanzetten en weergeven van foutmeldingen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'stdout');
?>


En het tussentijds "dumpen" van informatie naar je scherm. Je zegt dat er iets mis is met de sommen en de antwoorden. Al deze informatie zit in je sessie. Is het al bij je opgekomen om de inhoud van je sessie te inspecteren? Die vertelt je namelijk precies wat er mis is:
- ofwel de data in je sessie is verkeerd opgeslagen
- ofwel de data in je sessie wordt verkeerd afgedrukt
- of een combinatie van beide

Informatie dumpen doe je met var_dump() of print_r(), bijvoorbeeld als volgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<pre>'.print_r($_SESSION, true).'</pre>';
?>


Hierbij is wel enige voorzichtigheid geboden als de variabelen / arrays in kwestie gebruikersinvoer bevatten.

Ga hier eerst eens mee aan de slag, en kijk of je deze warboel zelf kunt ontrafelen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.