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


<!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>

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:

<?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:
<?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.

Reageren