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


Lartak
Réponse acceptée

Voilà le code PHP fonctionnel ici.

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
Auteur

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

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

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

NewAir01
Auteur

Sa fonctionne toujours pas jeremy

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
Auteur

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;
}

?>

Peut être le fait d'utiliser while !?

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

<?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 !";
    }
}