Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/02/2012, 11h01   #1
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 1
Points : 1
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.
Blinki47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 14h08   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 554
Points : 2 554
Envoyer un message via Skype™ à rawsrc
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.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 14h59   #3
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 1
Points : 1
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 :
<input type="hidden" value="$nombre" />
Blinki47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 15h15   #4
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 554
Points : 2 554
Envoyer un message via Skype™ à rawsrc
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 :
<input type="hidden" value="$nombre" />
C'est normal, il faut procéder comme ça :
Code :
<input type="hidden" value="<?php echo $nombre; ?>" />
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 15h22   #5
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 1
Points : 1
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...
Blinki47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 15h35   #6
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 554
Points : 2 554
Envoyer un message via Skype™ à rawsrc
ok, postes le code de ton formulaire et le php qui va avec
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 15h42   #7
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 1
Points : 1
Voilà le code :

Code :
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>
Blinki47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 16h23   #8
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 554
Points : 2 554
Envoyer un message via Skype™ à rawsrc
J'ai repris ton code pour te montrer :
Code :
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.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/02/2012, 17h18   #9
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 1
Points : 1
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 :
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 ?
Blinki47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 17h53   #10
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 554
Points : 2 554
Envoyer un message via Skype™ à rawsrc
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.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 19h14   #11
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 1
Points : 1
Je vais laisser avec "button".^^

Ensuite je vais tester les deux alors.

Merci pour tes réponses.
Blinki47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2012, 09h31   #12
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 1
Points : 1
Voilà ce que j'ai fait :

Code :
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' "
Blinki47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2012, 09h49   #13
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 786
Points : 35 786
Code :
<?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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2012, 10h46   #14
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 1
Points : 1
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)
Blinki47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2012, 11h00   #15
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 786
Points : 35 786
Mouais... de toute façon, j'ai l'impression qu'il y a un truc que tu n'as pas trop compris :
Code :
<?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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2012, 11h24   #16
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 1
Points : 1
En fait, l'utilisateur n'a que 7 tentatives pour trouver le nombre mystère d’où le while.
Blinki47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2012, 11h35   #17
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 250
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 250
Points : 1 514
Points : 1 514
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.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2012, 11h40   #18
Membre du Club
 
Homme
Développeur Web
Inscription : 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 : 53
Points : 53
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 :
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
osore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2012, 13h00   #19
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 1
Points : 1
Le jeu fonctionne mais lorsqu'on arrive sur la page pour la première fois , il y a toujours cette erreur :" Undefined variable: choixnombre".
Blinki47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2012, 13h43   #20
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 554
Points : 2 554
Envoyer un message via Skype™ à rawsrc
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...
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h31.


 
 
 
 
Partenaires

Hébergement Web