Cherche Aide

Caroline -  
crabs Messages postés 909 Statut Membre -
Bonjour,

Je n'arrive pas à m'en sortir

J'aimerai créer un programme pour faire faire des calculs simple aux enfants

Mais ca bug et je suis découragée

Pourriez-vous m'aider?

Voici mon script

pour index.php
<html>
<body>
<?php
mt_srand((float) microtime()*1000000);
$a = mt_rand(0, 10);
$b = mt_rand(0, 10);
echo $a,"+",$b,"=";
$c = $a+$b;
$_POST["e"] = $c;
echo $c;
?>
<form action="rep.php" method="post">
<input type="text" name="reponse" />
<input type="submit" />
</form>

</BODY>
</HTML>

Pour rep.php
<html>
<body>

<?php
$e = $_POST["reponse"];
echo $e;
echo "<br>";
echo $_POST["reponse"];
echo "<br>";
echo $_POST["e"];
if ($e=$c) echo "bon";
else echo "mauvais";
?>

</BODY>
</HTML>

Merci

3 réponses

crabs Messages postés 909 Statut Membre 507
 
Salut,
$_POST["e"] = $c; ne sert à rien, il faut mettre un champ hidden dans
ton formulaire qui contient la réponse. Dans le code HTML de ton formulaire
tu peux inclure un truc du genre :
<input type="hidden" name="e" value="<?php echo $c; ?>' />

Dans rep.php tu recuppère la valeur comme un input normal.
/rmq mets un sujet plus précis tu type '[php] problème formulaire'
A+, crabs
0
kilian Messages postés 8854 Statut Modérateur 1 526
 
Tiens c'est une bonne idée :-)

Par contre je ne comprends pas pourquoi tu affiches le résultat.
L'idée c'est que tu crées une opération sans afficher le résultat, puis on tape le résultat, on envoie et on voit si c'est juste ou pas, c'est bien ça?

En ce cas.
Il ne fait pas faire
$_POST['e']=$c;

Ca n'enverra pas ta variable à la prochaine page, $_POST n'est que la variable qui reçoit tout ce qui est passé en requête POST sur la page, mais il ne les transmet pas aux suivantes.

Si tu veux faire passer $c à la prochaine page, met ton $c en variable session:
$_SESSSION['c']=$c;

Et tu le récupères à la prochaine page de la même manière.
Pour que la session soit prise en compte sur tes deux pages, il faut y mettre session_start() au début.

Ca nous donne ça:

index.php:
<?php
session_start();
echo "<html><body>";
mt_srand((float) microtime()*1000000);
$a = mt_rand(0, 10);
$b = mt_rand(0, 10);
echo $a,"+",$b,"=";
$c = $a+$b;
$_SESSION['c'] = $c;
?>
<form action="rep.php" method="post">
<input type="text" name="reponse" />
<input type="submit" />
</form>


</BODY>
</HTML> 


rep.php:
<?php
session_start();
echo "<html><body>";
$e = $_POST["reponse"];
echo $e;
echo "<br>";
echo $_POST["reponse"];
echo "<br>";
echo $_POST["e"];
if ($e==$_SESSION['c']) echo "bon";
else echo "mauvais";
?>

</BODY>
</HTML>


J'ai remplacé aussi les <html><body> pour les mettre après le session_start() parce rien ne doit être écris dans la page avant de commencer une session (pas même un espace)....

Et aussi dans rep.php tu avais mis if($e=$c) (si tu veux vérifier une comparaison, utilises "==", sinon "=" est une affectation simple. Dans un test, ça aurait toujours retourné "vrai" puisque l'affectation ici ne passerait sans encombre...)

PS: Scuse crabs, j'étais en train d'écrire quand tu postais, j'avais pas vu ta réponse..... :-|
0
crabs Messages postés 909 Statut Membre 507
 
No problem, de plus j'avais pas vu le '=='...
0
caroline
 
Je vous remercie beaucoup
0