Soucis devine le nombre

Par NewAir01, il y a 9 ans


Bonjour,
J'essaye de me faire un petit système pour qu'un utilisateur trouve le nombre tous semble correct mais il y'a un soucis.. quand j'entre un chiffre il m'affiche toujours "Veuillez introduire un nombre"...

<?php $number=rand(0,10); if (isset($_POST['Sub'])) { if (!isset($_POST['chiffre']) AND !empty($_POST['chiffre'])) { $chiffre = intval($chiffre); while ($chiffre != $number) { if ($chiffre > $number) { $error = "Trop haut"; } else{ $error= "Trop bas"; } } if ($chiffre == $number) { $msg = "Vous avez trouvé le bon chiffre !"; } } else{ $error = "Veuillez introduire un chiffre !"; } } ?> <form method="POST"> <input type="text" placeholder="Entrez votre chiffre !" name="chiffre"/> <input type="Submit" value="Envoyez !" name="Sub"/> </form> <?php if (isset($error)) { echo $error; } if (isset($msg)) { echo $msg; } ?>

Merci

11 réponses

JeremieMeunier, il y a 9 ans

Bonsoir, avec ton 1er if tu teste l'absence de variable

<?php $number=rand(0,10); if (isset($_POST['Sub'])) { if (isset($_POST['chiffre']) AND empty($_POST['chiffre'])) { $chiffre = intval($chiffre); while ($chiffre != $number) { if ($chiffre > $number) { $error = "Trop haut"; } else{ $error= "Trop bas"; } } if ($chiffre == $number) { $msg = "Vous avez trouvé le bon chiffre !"; } } else{ $error = "Veuillez introduire un chiffre !"; } } ?>
NewAir01, il y a 9 ans

Salut,
Le soucis c'est que sa tourne dans le vide en me mettant une erreur de temps depasser + le $chiffre non definis ...

JeremieMeunier, il y a 9 ans

Tu ne déclare pas le fait que ta variable POST est = à $chiffre donc forcément pour lui tu n'a pas rentré de valeur !

<?php $number= rand(0,10); if (isset($_POST['Sub'])) { if (isset($_POST['chiffre']) AND empty($_POST['chiffre'])) { $chiffre = $_POST['chiffre']; if($chiffre != $number) { if ($chiffre > $number) { $error = "Trop haut"; } else { $error= "Trop bas"; } } elseif($chiffre == $number) { $msg = "Vous avez trouvé le bon chiffre !"; } } else { $error = "Veuillez introduire un chiffre !"; } } ?>

Après fait gaffe à ton intval

Huggy, il y a 9 ans

Bonjour,
Juste une question : c'est normal de regénérer le nombre aléatoire à chaque tentative ?

NewAir01, il y a 9 ans

Sa fonctionne toujours pas jeremy

JeremieMeunier, il y a 9 ans

Huggy<br />
Bonjour,
Juste une question : c'est normal de regénérer le nombre aléatoire à chaque tentative ?</blockquote>

Il a peut-être raison le fait de recharger la page fait que tu as un nouveau nombre ! Je sais que j'avais essayer aussi de créer un système avec un nombre mais ça reste compliquer ! Je rajoutais un <input type="hidden" value="mon_nombre" /> pour que ça fonctionne ! En plus toi tu veut que l'utilisateur devine le nombre en lui disant plus haut, plus bas.

<!-- Ton form --> <form method="post" action="ma_page.php"> <input type="HIDDEN" value="<?php echo $chiffre; ?>" > <input type="text" placeholder="Rentrez un chiffre" > <input type="submit" value="Essayer" > </form>

Et excuse moi, je n'avais pas fait gaffe mais :

php.net<br />
empty — Détermine si une variable est vide</blockquote>
Donc en faite il fallait que tu mette :

<!-- Le PHP au début de la page --> <?php $number= rand(0,10); if (isset($_POST['Sub'])) { if (isset($_POST['chiffre']) AND !empty($_POST['chiffre'])) { //Ton code de vérification } ?>
NewAir01, il y a 9 ans

Salut,
Toujours rien ..
J'ai fais passez le chiffre aléatoire dans une variable pour qu'elle reste la même..
Mais sa tourne toujours dans le vide..

<?php $number=rand(0,10); if (isset($_POST['Sub'])) { if (isset($_POST['chiffre']) AND !empty($_POST['chiffre'])) { $chiffre = intval($chiffre); while ($_POST['chiffre'] != $_SESSION['number']) { if ($_POST['chiffre'] > $_SESSION['number']) { $error = "Trop haut"; } else{ $error= "Trop bas"; } } if ($_SESSION['number'] == $_POST['chiffre']) { $msg = "Vous avez trouvé le bon chiffre !"; } } else{ $error = "Veuillez introduire un chiffre !"; } } ?> <form method="POST"> <input type="text" placeholder="Entrez votre chiffre !" name="chiffre"/> <input type="Submit" value="Envoyez !" name="Sub"/> </form> <?php var_dump($_POST['chiffre']); if (isset($error)) { echo $error; } if (isset($msg)) { echo $msg; } ?>
JeremieMeunier, il y a 9 ans

Peut être le fait d'utiliser while !?

Lartak, il y a 9 ans

Voilà le code PHP fonctionnel ici.

E-Bismuth, il y a 9 ans

Vous avez des problèmes d'algorithmes, surtout si la valeur à chercher est 0 car empty(0)=True donc la condition isset AND !empty ne fonctionnera pas il vaut mieux choisir un OR dans ce cas, de plus intval(abc)=0 donc le résultat de votre algorithmes sera bon alors que ce n'est pas le cas

E-Bismuth, il y a 9 ans
<?php session_start(); $limits = ['min' => 0, 'max' => 10]; if (empty($_SESSION['number'])) { $_SESSION['number'] = rand($limits['min'], $limits['max']); } $number = $_SESSION['number']; if (isset($_POST['Sub'])) { if ((isset($_POST['chiffre']) OR !empty($_POST['chiffre'])) AND (is_int($_POST['chiffre']))) { $chiffre = intval($_POST['chiffre']); if ($chiffre > $number) { $message = 'Trop haut'; } elseif ($chiffre < $number) { $message = 'Trop bas'; } else { $message = 'Vous avez trouvé le bon chiffre !'; unset($_SESSION['number'], $number); } } else { $message = "Veuillez introduire un chiffre !"; } }