ik ben bezig met een script, dan vul je een tafel in en dan moet je de goede antwoorde invullen:-P
Maar als ik rand(0,10) doe krijg ik (logies) bij de if vergelijking iets anders dan wat je had moeten invullen, ik heb al gebrobeert met case, maar hetzelfde pprobleem....
hoe zorg je dat die rand hetzelfde blijft???
<?php
ob_start();
$tafel = 10; // Welke tafel het is
$begin = 1; // Wat de kleinste vermenigvuldiginsfactor is
$einde = 10; // Wat de grootste vermenigvuldiginsfactor is
// Een nieuwe som bedenken
$nieuw = rand($begin,$einde);
// Als er nog geen cookie bestaat
if(empty($_COOKIE['rand'])){
setcookie('rand',$nieuw);
}
// De som
echo $tafel.' x '.$nieuw;
?>
<!-- Het formulier -->
<form action="" method="get">
<input name="antwoord" type="text" />
<input type="submit" value="Controlleer" />
</form>
<?php
if(!empty($_GET['antwoord'])){
$antwoord = $_GET['antwoord'];
// Controlleren
if($antwoord == ($_COOKIE['rand']*$tafel)){
// Goed
echo '<p>Goed</p>';
}else{
// Fout
echo '<p>FOUT</p>';
}
}
// Nieuwe som opslaan
setcookie('rand',$nieuw);
?>
Waarschijnlijk helpt je dit wat meer op weg, en anders kom je maar weer met een vraag.
Overigens leg je iets niet extra vaak uit omdat je een kind bent, maar omdat iemand het niet begrijpt. Dat kan komen omdat ie niet bekend is met wat je zegt of omdat je het niet goed uitlegt. Dat laatste geldt in dit geval.
Dus leg het eens goed uit, adhv code/voorbeelden/dit voorbeeld, wat je precies wilt.
Uit de losse pols:
<?php
if(!empty($_POST['ingevuld'])){
$a_ses = $_SESSION['array']; //session array in var zetten.
//controle gaan uitvoeren
}
else{
$a_range = range(0, 10); //array vullen van 0 - 10
shuffle($a_range); // shufflen
$_SESSION['array'] = $a_range; //sessie proppen
foreach($a_range as $nr){ // per waarde in de array wat doen
//op het scherm gooien
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"] ?>">
<?php echo $nr ?>x<?php echo $_SESSION["tafel"] ?> = <input type="text" name="ingevuld" />
<input type="submit" name="verzend" value="vul in!" />
</form>
<?php
}
}
?>
Dit programma wordt voor school.
een leerling vult een getal in b.v. de tafel van 2..
dan komt op de volgende pagina een invulvak.
daar voor staat de som, dus de 2 (is ingevuld) en een random getal.
alleen met dat randomgetal gaat dat mis, want elke keer is het random getal anders, dus kan ik het niet controleeren..
nu zoek ik een manier om dat getal wel hetzelfde te krijgen, maar op de manier van arjan, geeft ie een foutmelding van header alredie sent...
Sla deze dan eens op en test hem uit...
zo kan je namelijk eerst een tafel kiezen, en dan wordt er een som gemaakt met de tafel + een random getal, en het antwoord wordt later gecontrolleerd.
<?php
ob_start();
// Kijken of er wel een tafel is gekozen...
if(!empty($_GET['tafel']) and is_numeric($_GET['tafel'])){
$tafel = $_GET['tafel']; // Welke tafel het is
$begin = 1; // Wat de kleinste vermenigvuldiginsfactor is
$einde = 10; // Wat de grootste vermenigvuldiginsfactor is
// Een nieuwe som bedenken
$nieuw = rand($begin,$einde);
// Als er nog geen cookie bestaat
if(empty($_COOKIE['rand'])){
setcookie('rand',$nieuw);
}
// De som
$som = $tafel.' x '.$nieuw;
?>
<p><a href="<?=$_SERVER['PHP_SELF']?>">Andere tafel</a></p>
<!-- Het formulier -->
<form action="" method="get">
<?=$som?> = <input name="antwoord" type="text" />
<input name="tafel" type="hidden" value="<?=$tafel?>" />
<input type="submit" value="Controlleer" />
</form>
<?php
if(!empty($_GET['antwoord'])){
$antwoord = $_GET['antwoord'];
// Controlleren
if($antwoord == ($_COOKIE['rand']*$tafel)){
// Goed
echo '<p>Goed</p>';
}else{
// Fout
echo '<p>FOUT</p>';
}
}
// Nieuwe som opslaan
setcookie('rand',$nieuw);
}else{
?>
<!-- Het formulier om tafel te kiezen -->
<form action="" method="get">
<input name="tafel" type="text" />
<input type="submit" value="Maak tafel" />
</form>
<?php
}
?>
Zo moet het namelijk lukken...
EDIT:
Deze is met meerdere velden:
<?php
session_start();
// Kijken of er wel een tafel is gekozen...
if(!empty($_POST['tafel']) and is_numeric($_POST['tafel'])){
$tafel = $_POST['tafel']; // Welke tafel het is
$begin = 1; // Wat de kleinste vermenigvuldiginsfactor is
$einde = 10; // Wat de grootste vermenigvuldiginsfactor is
// Een nieuwe som bedenken
$nieuw = range($begin,$einde); //array vullen van $begin - $einde
shuffle($nieuw); // shufflen
// Als er nog geen sessie bestaat
if(empty($_SESSION['rand'][0]) or !empty($_GET['nieuw'])){
$_SESSION['rand'] = $nieuw;
}
?>
<p><a href="<?=$_SERVER['PHP_SELF']?>">Andere tafel</a></p>
<!-- Het formulier -->
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<?php
$i = 1;
foreach($_SESSION['rand'] as $maal){
// Als deze al is ingevult, de ingevulde waarde opnieuw in het veld zetten
if(isset($_POST['antwoord'][$i-1])){
$antwoord = $_POST['antwoord'][$i-1];
if($antwoord == $_SESSION['rand'][$i-1]*$tafel){
$result = '<span style="color: green;">is Goed</span>';
}else{
$result = '<span style="color: red;">is FOUT</span>';
}
}else{
$antwoord = '';
$result = '';
}
// Som nummer - Som - invul veld (incl ingevulde antwoord) - Goed/fout
?>
<p><strong><?=$i++?>:</strong> <?=$tafel.' x '.$maal?> = <input name="antwoord[]" type="text" value="<?=$antwoord?>" /> <?=$result?>
<?php
} // Foreach eindigen
?>
<input name="tafel" type="hidden" value="<?=$tafel?>" /></p>
<input type="submit" value="Controlleer" />
</form>
<?php
}else{
?>
<!-- Het formulier om tafel te kiezen -->
<form action="<?=$_SERVER['PHP_SELF']?>?nieuw=ja" method="post">
<input name="tafel" type="text" />
<input type="submit" value="Maak tafel" />
</form>
<?php
}
?>