Page 1 sur 1

problème operations mathematique avec mt_rand()

Posté : 22 oct. 2013, 20:37
par jeanmaki
Bonjour, je souhaite realiser un exercice de calcul mental en php ou le visiteur rentre le nombre manquant..

Pour cela j'ai fait ce script qui fonctionnne.

calcul.php
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<body>
<?php
session_start();

$num1=rand(0,10);
$num2=rand(0,10);
$res=($num1+$num2);
print("$num1 + $num2");

$_SESSION['result'] = $res;

?>

<form name="form1" method="post" action="resultat_calcul.php">
Insérer la résultat pour le calcule ci-dessus:
<input name="number" type="text" size="5">
<input name="Submit" type="submit" value="Soumettez">
</form>

</html>
</body>
resultat_calcul.php
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<body>
<form name="form1" method="post" action="calcul.php">
<div align="center">
<input name="Submit" type="submit" value="revenir"></div>
</form>
<?php
session_start();
$key=$_SESSION['result'];
$imag = $_POST['number'];
if($imag==$key)			
	{
		echo 'Vérification de succès';
	}
else
	{
		echo 'Vous avez écrit le code faux de vérification!!<br> 
			Veuillez retourner et écrivez la valeur appropriée.';
	}

?>
</html>
</body>
Et j'aimerai que cela tienne sur une seule page et non sur deux

alors j'ai essayé ceci
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<body>
<?php
session_start();

$num1=mt_rand(0,10);
$num2=mt_rand(0,10);
$res=($num1+$num2);
print("$num1 + $num2 = ");

$_SESSION['result'] = $res;

?>

<form name="form1" method="post" action="new2.php">
Insérer la résultat pour le calcule ci-dessus:
<input name="number" type="text" size="5">
<input name="Submit" type="submit" value="Soumettez">
</form>

<?php
$reponse = $_POST['number'];

if(!empty($_POST['number']))
	{
		if($reponse==$res)			
			{
				
				echo 'Juste';
			}
			
		else
			{
				print("$res = $reponse" );
				echo 'Faux';
			}
	}
else
	{
		echo 'remplir post';
	}

?>
</html>
</body>
mais cela ne fonctionne pas.. en réalité le resultat entré par le visiteur est comparé avec l'addition d'apres, c'est comme si les deux variables n'étaient pas gardé en mémoire

Merci de m'éclairer

Re: problème operations mathematique avec mt_rand()

Posté : 22 oct. 2013, 21:01
par xTG
Premièrement une session doit être déclarée avant tout envoi au navigateur.
Donc tu dois placer ton session_start() avant ton HTML.

Deuxièmement ta variable de session est écrasée par la prochaine valeur à chaque rechargement de la page avant que tu puisses l'utiliser.
N'oublies pas qu'un script PHP s’exécute de haut en bas !

Re: problème operations mathematique avec mt_rand()

Posté : 22 oct. 2013, 21:15
par jeanmaki
J'ai mis le session_start() au début
j'ai du mettre $reponse = isset($_POST['reponse']); parce qu'il y avai un message d'erreur
mais du coup apres comment arriver a garder les valeur mt_rand apres

maintenant a chaque fois que je rentre une valeur juste ou fausse il montre toujours 'juste'
<?php
session_start();
?>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<body>
<?php


$num1=mt_rand(0,10);
$num2=mt_rand(0,10);
$res=($num1+$num2);
print("$num1 + $num2 = ");

$_SESSION['result'] = $res;

?>

<form name="form1" method="post" action="calcul.php">
Insérer la résultat pour le calcule ci-dessus:
<input name="number" type="text" size="5">
<input name="Submit" type="submit" value="Soumettez">
</form>

<?php
$reponse = isset($_POST['number']);

if(!empty($_POST['number']))
	{
		if($reponse==$res)			
			{
				
				echo 'Juste';
			}
			
		else
			{
				echo 'Faux';
			}
	}
else
	{
		echo 'remplir post';
	}

?>
</html>
</body>

Re: problème operations mathematique avec mt_rand()

Posté : 22 oct. 2013, 22:04
par xTG
j'ai du mettre $reponse = isset($_POST['reponse']); parce qu'il y avai un message d'erreur
Je vais donc poser la question fatidique... Pourquoi ?

Il y a deux façons de voir ta réponse :
1) j'ai sorti mon parapluie pour me protéger parce qu'il pleut.
2) j'ai sorti mon mouchoir pour me moucher parce qu'il pleut.

Je préfères franchement te laisser réfléchir, ton problème est tout simple.
Mais tu emplois des solutions sans réfléchir et sans les comprendre. :)

Regardes la documentation de la fonction isset(), ce à quoi elle sert et ce qu'elle retourne.
Et réfléchis de nouveau à l'ordre d'exécution de ton code. Comme je te l'ai fait remarqué ton code est du genre :

Code : Tout sélectionner

res = 2 + 1 res = 6 Afficher res
Je ne connais aucune calculatrice qui exécutes ce genre de code. ^^