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 :

problème sur un random


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 49
    Points
    49
    Par défaut problème sur un random
    Bonjour,

    Voilà j'ai un petit soucis sur un random
    En gros dans ma page je passe un id en paramètre et je voudrais sortir 3 chiffres sauf l'id.

    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
     
    $R = array();
    $id = 1;
    $h = 3;
    for($i=0; $i<$h; $i++){
    	while($R[$i] == NULL){
    		$nb= mt_rand(0,10);
    		if($nb <= $h){
    			$compteur=0;
    				for($x =0; $x<$h ; $x++){
     
    					if($nb == $id || $nb ==$R[$x]){
     
    						$compteur = 1;
    						}
    				}
    			if($compteur == 0){
     
    				$R[$i] = $nb;
    			}
    		}
    	}
    	echo $R[$i];
    }
    si l'id vaut 0 il me donne sans soucis les chiffres 1 2 3
    si l'id est différent de 0, il plante et ne m'affiche de 2 3.

    Un petit coup de main serait le bienvenue ^^
    Merci d'avance

  2. #2
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonjour,

    rigolo à debugger mais j'ai pas trop compris à quoi sert ton script à part s'amuser avec le random...

    alors pour debugger :à l'ancienne, on met des trucs partout :

    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
    for($i=0; $i<$h; $i++){
      echo 'on cherche R['.$i.'] : <br />';
    	while($R[$i] == NULL){
     
    		$nb= mt_rand(0,10);
    	  echo '&nbsp; LE Nombre aleatoire : '.$nb.'<br />';	
    		if($nb <= $h){
    			$compteur=0;
    			echo '&nbsp;&nbsp; Compteur = 0; <br />';
    			echo '&nbsp;&nbsp; debut petite boucle :<br />';
    				for($x =0; $x<$h ; $x++){
    					echo '&nbsp;&nbsp;&nbsp; '.$x.'<br />';
    					if($nb == $id || $nb == $R[$x]){
    						if ($nb == $id)
    						  echo '&nbsp;&nbsp;&nbsp; Compteur =1 car Nombre Aleatoire = ID<br />';
    						if ($nb == $R[$x])
    						  echo '&nbsp;&nbsp;&nbsp; Compteur =1 car deja utilisé pour R['.$x.']<br />';
    						$compteur = 1;
    						}
    				}
    			if($compteur == 0){
    				echo '<br />&nbsp;&nbsp;&nbsp; Compteur =0 => $R['.$i.'] = Nombre aleatoire = '.$nb.'<br />';
    				$R[$i] = $nb;
    			}
    		}
    	}
    	echo ' <br /> => '.$R[$i].'<br /><br />';
    	echo '********************************<br /><br />';
    }
    et on se rend vite compte que ca boucle car le test est vrai si $R[$x] n'est pas encore défini pour le nombre aléatoire '0' (qui devra forcément arriver à un moment donné).

    Pour faire court :
    pour ne pas confondre NULL et Zéro, il faut faire le test avec '===' et non pas avec '=='

    CQFD !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 49
    Points
    49
    Par défaut
    Mon but est que quand j'ai un id passé en paramètre je dois générer un affichage en random sur le reste des id restant.

    Par exemple je sais que j'ai 4 id, j'en sélectionne 1, l'id 1

    mon but est d'afficher les données 0,2,3 en aléatoires
    mais en faisant ta boucle de test si id=0 nickel pas de soucis mais si id est différent de 0 ca foire et ca me fait une boucle infinie

  4. #4
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    OK.

    as tu testé ma correction ?

    de plus, on peut gagner du temps en faisant au lieu de

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 49
    Points
    49
    Par défaut
    oui j'ai testé ta solution et ca fonctionne toujours pas et j'ai mis


  6. #6
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    ca marche chez moi.

    mais il faut que tu remplaces tous les tests 'litigieux' "==" par "===".
    donc aussi

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 49
    Points
    49
    Par défaut
    Génial

    par contre tu peux m'expliquer ce que veux dire === s'il te plait

  8. #8
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    en gros, ca compare de facon encore plus précise tes variables.
    Ca va aller comparer le type en plus de la valeur.

    par exemple
    false==0 est vrai
    false===0 est faux

    tu peux tester ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ('0' == false)
      echo '0 == false<br>';
    if ('0' === false)
      echo '0 === false<br>';
    if (NULL == 0)
      echo 'NULL == 0<br>';
    if (NULL === 0)
      echo 'NULL === 0<br>';

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème sur la recherche fulltext en v4 !
    Par poppa dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/05/2004, 23h06
  2. Problème sur fiche MDIchild
    Par nivet dans le forum Composants VCL
    Réponses: 6
    Dernier message: 23/01/2004, 08h07
  3. Problème sur GetPrivateProfileString ???
    Par Bordelique dans le forum Langage
    Réponses: 7
    Dernier message: 25/06/2003, 22h15
  4. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 08h45
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 01h17

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