Cherche Aide
Caroline
-
crabs Messages postés 909 Statut Membre -
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
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
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 :
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
$_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
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
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:
rep.php:
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..... :-|
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..... :-|