IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Question sur nombre aléatoire


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 11
    Points
    11
    Par défaut Question sur nombre aléatoire
    Bonjour à tous,

    Je dois créer un petit jeu en php dans lequel il faut deviner un nombre entre 0 et 100 avec un nombre limité d'essais (7).
    Mon problème c'est que j'ai réussi à générer un nombre aléatoire mais il change à chaque fois dès qu'on clique sur le bouton "Vérifieré.

    Comment faire pour garder ce nombre même après avoir cliqué sur le bouton ?

    Merci d'avance pour vos réponse.

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Pour conserver quelque chose entre deux appels à un script, tu peux utiliser soit les sessions, soit ruser.
    Pour ne garder qu'une seule malheureuse valeur, faut pas sortir l'artillerie lourde (les sessions), tu peux la passer dans ton formulaire en champ caché <input type="hidden" value="nombreAléatoireDeterminéAuPremierAppel" /> -
    Ensuite tu vérifies à chaque soumission si ce nombre est défini
    - si oui tu le compares avec la valeur saisie
    - si non, tu le génères et positionnes le compteur d'essais à 0.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Merci de m'avoir répondu, le problème c'est que le nombre généré je l'ai inséré dans une variable et lorsque je mets cette variable dans le value, ça m'affiche le nom de la variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" value="$nombre" />

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par Blinki47 Voir le message
    Merci de m'avoir répondu, le problème c'est que le nombre généré je l'ai inséré dans une variable et lorsque je mets cette variable dans le value, ça m'affiche le nom de la variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" value="$nombre" />
    C'est normal, il faut procéder comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" value="<?php echo $nombre; ?>" />

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Merci, maintenant ça marche mieux. Cependant le problème reste le même lorsque que j’appuie sur le bouton "Vérifier", cette valeur change aussi...

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    ok, postes le code de ton formulaire et le php qui va avec

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-88859-1"/>
    	<title>Jeu</title>
    	<link rel="stylesheet" href="feuille.css" />
    	<img src="proba.png" style="display:block;margin:auto;width:256px:height:256px;vertical-align:middle"/>
    	<link rel="shortcut icon" type="image/x-icon" href="11252.ico" />
     
    	<?php
     
    	//création d'un nombre aléatoire entre 1 et 100
     
    	$nb_min = 1;
    	$nb_max = 100;
    	$nombre = mt_rand($nb_min,$nb_max);
    	//test
    	echo $nombre;
    	?>		
    	<script type="text/JavaScript">
    	function verification()
    {
    var nb=document.getElementById("choixnombre").value;
     
    if (isNaN(nb))
    {		
         alert("Rentrez un nombre");
         document.getElementById("choixnombre").value="";
    }
    else if(nb> 100  || nb< 0)
    {
          alert("Rentrez un nombre entre 0 et 100");
    	  document.getElementById("choixnombre").value="";
    }
    }
    	</script>
    </head>
    </br>
    <body>
    	<form action="jeu.php">
    	<fieldset style=" width:500px; height:150px">
    	<p align=center>
    	Entrer un nombre entre 0 et 100 :
    	<input type="text" name="choixnombre" id="choixnombre" size="3" required="required"/>
    	<input type="hidden" value="<?php echo $nombre; ?>" />
    	<br/>
    	<br/>
    	<input type="submit" value="Vérifier" onclick="verification()">
    	</p>
    	Essais restant :
    	<input type="text" name="essairestant" value=7 id="essairestant" size="1" disabled />
    	</fieldset>
    </body>
    </html>

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    J'ai repris ton code pour te montrer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <?php
     
    // on vérifie si le nombre a déjà été généré
    // dans ce cas il sera renvoyé par le formulaire de saisie
    if (isset($_POST['mystere']) && ctype_digit($_POST['mystere'])) {
       $nombre = $_POST['mystere'];
    }
    else {
       $nombre = mt_rand(1, 100);
    }
     
    // on récupère le nombre de tentatives déjà faites
    if (isset($_POST['nbTentatives']) && ctype_digit($_POST['nbTentatives'])) {
       $nbTentatives = $_POST['nbTentatives'];
       // on incrémente
       $nbTentatives += 1;
    }
    else {
       $nbTentatives = 0;
    }
     
    $essaisRestants = 7 - $nbTentatives;
    ?>
    <html>
    <head>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-88859-1"/>
       <title>Jeu</title>
       <link rel="stylesheet" href="feuille.css" />
       <link rel="shortcut icon" type="image/x-icon" href="11252.ico" />
       <script type="text/javascript">
       function verification() {
          var nb = document.getElementById("choixnombre").value;
          if (isNaN(nb)) {
             alert("Rentrez un nombre");
             document.getElementById("choixnombre").value="";
          }
          else
          if ((nb > 100) || (nb < 0)) {
             alert("Rentrez un nombre entre 0 et 100");
             document.getElementById("choixnombre").value = "";
          }
          else {
             document.formJeu.submit();
          }
       }
       </script>
    </head>
    <body>
       <br />
       <img src="proba.png" style="display:block;margin:auto;width:256px:height:256px;vertical-align:middle" />
       <form method="post" action="jeu.php" name="formJeu">
          <fieldset style=" width:500px; height:150px">
             <p align="center">Entrer un nombre entre 0 et 100 :
                <input type="text" name="choixnombre" id="choixnombre" size="3" required="required"/>
                <input type="hidden" name="mystere" value="<?php echo $nombre; ?>" />
                <input type="hidden" name="nbTentatives" value="<?php echo $nbTentatives; ?>" />
                <br /><br />
                <input type="button" value="Vérifier" onclick="verification()">
             </p>
             Essais restant : <?php echo $essaisRestants; ?>
          </fieldset>
       </form>
    </body>
    </html>
    Quleques notes :
    Tu ne dois pas avoir un bouton de type="submit" dans ton formulaire car tu utilises une fonction js de vérification des données saisies. Un bouton submit fera que le formulaire appelera le script dans l'attribut action du formulaire.
    C'est le code js qui devra le soumettre, une fois qu'il n'y a plus d'erreurs.

    Bon courage pour tes débuts.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Je te remercie pour ton aide. En fait pour le bouton type="submit" je l'ai mis car sinon l'attribut "required" ne fonctionne pas avec type="button".

    J'ai essayé ça mais ça ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (nb="") {
             alert("Rentrez un nombre entre 0 et 100");
    Ensuite dernière question, pour comparer les deux nombres je le fais en PHP ou en Javascript ?

  10. #10
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    En mettant type="submit" tu court-circuites ta fonction js verification().

    Citation Envoyé par Blinki47 Voir le message
    Ensuite dernière question, pour comparer les deux nombres je le fais en PHP ou en Javascript ?
    C'est à toi de voir, dans ce cas de figure tu peux très bien tout gérer en js comme il est tout à fait possible aussi de gérer cette devinette en php.
    Le mieux c'est que tu essayes les deux.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Je vais laisser avec "button".^^

    Ensuite je vais tester les deux alors.

    Merci pour tes réponses.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Voilà ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php if (isset($_POST['choixnombre'])) { 
       $choixnombre = $_POST['choixnombre'];
    	}
    	?>
     
     
       <?php while ($essaisRestants >=  1): ?>
    	<?php if ($nombre > choixnombre): ?>
    		Le nombre choisi est trop petit !
    	<?php else: ?>
    		<?php if ($nombre < choixnombre): ?>
    			Le nombre choisi est trop grand !
    		<?php else: ?>
    			Bravo, vous avez trouvé le nombre mystère !;
    		<?php endif; ?>
    	<?php endif; ?>
    <?php endwhile; ?>
    Mais le problème c'est que j'ai cette erreur :" Use of undefined choixnombre-assumed 'choixnombre' "

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if ($nombre > choixnombre): ?>
    Il manquerait pas un $ quelque part ?
    Indice : avant le nom d'une variable...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Effectivement.

    Maintenant ça met "Undefined variable" (c'est normal puisque quand l'utilisateur arrive pour la première fois sur la page, il n'a pas encore rentré de nombre)

  15. #15
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Mouais... de toute façon, j'ai l'impression qu'il y a un truc que tu n'as pas trop compris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php while ($essaisRestants >=  1): ?>
    c'est quoi le but du while exactement ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    En fait, l'utilisateur n'a que 7 tentatives pour trouver le nombre mystère d’où le while.

  17. #17
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    Salut,

    pourquoi ne passes-tu pas par les variables de session ?
    tu le parametre une fois ton nombre, ainsi que le nombre d'essai
    puis, a chaque "load" de la page, tu decremente...
    ca t'evitera pas mal de code
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  18. #18
    En attente de confirmation mail
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 32
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Blink147
    En fait, l'utilisateur n'a que 7 tentatives pour trouver le nombre mystère d’où le while.
    Ta page se ré-actualise à chaque essais de l'utilisateur réinitialisant par la même occasion les variables de ton script.
    Ta boucle est faite manuellement lorsque l'utilisateur recharge la page jusqu'à ce qu'il gagne ou qu'il perde.
    Ton code devrait plus ressembler à quelque chose du genre :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    if (isset($_POST['choixnombre'])) { 
    	$choixnombre = $_POST['choixnombre'];
    }
    $essaisRestants = (!empty($_POST["essaisRestants"])) ? (int) $_POST["essaisRestants"] : 8;
    $essaisRestants--;
    	?>
     
     
       <?php if($essaisRestants > 0): ?>
    	<?php if ($nombre > choixnombre): ?>
    		Le nombre choisi est trop petit !
    	<?php else: ?>
    		<?php if ($nombre < choixnombre): ?>
    			Le nombre choisi est trop grand !
    		<?php else: ?>
    			Bravo, vous avez trouvé le nombre mystère !;
    		<?php endif; ?>
    	<?php endif; ?>
    <?php else: ?>
    	Vous avez perdu!
    <?php endif; ?>
    Citation Envoyé par Doksuri
    pourquoi ne passes-tu pas par les variables de session ?
    C'est un peu lourd à utiliser pour un code aussi simple à mon avis

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Le jeu fonctionne mais lorsqu'on arrive sur la page pour la première fois , il y a toujours cette erreur :" Undefined variable: choixnombre".

  20. #20
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    c'est normal au premier appel, aucun nombre n'a pu être choisi car c'est justement le 1er appel.
    Cas d'utilisation à gérer avec par exemple : si le nombre de tentatives restantes = tentatives maximales autorisées alors 1er appel...

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/09/2014, 14h37
  2. Réponses: 11
    Dernier message: 01/05/2007, 00h15
  3. [Conception] Question sur un code permettant de connaître le nombre de connectés
    Par inferno66667 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 19/12/2005, 19h49
  4. p'tite question de cryptage ( nombre aléatoire )
    Par smyley dans le forum Algorithmes et structures de données
    Réponses: 53
    Dernier message: 08/11/2004, 10h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo