Boucle dans boucle

Kevergeek Messages postés 64 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 22 janvier 2006 - 18 nov. 2004 à 21:44
Kevergeek Messages postés 64 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 22 janvier 2006 - 19 nov. 2004 à 17:53
voilà en fait je voudrais faire un systeme de dossier pour afficher des grades des joueurs sur un jeu que chui en train de mettre au point...
pour ca je veux utiliser un systeme de dossier comme sous l'explorateur

ex:

+adjudant
|+sergent
||+caporal
|||+soldat
|||+soldat

et ainsi de suite...
1 = "soldat"
2 = "caporal"
3 = "segent"
4 = "adjudant"

je voulais prendre le plus haut rang >> $rang = 4
et ensuite utiliser des boucles les unes dans les autres pour afficher tous les joueurs des differents rangs

//defini le rang le plus elevé
$rang = 4;

//affiche les joueurs du rang 4
$result = mysql_query("SELECT * FROM $table WHERE joueur_rang='$rank'"); //on selectionne tous les joueurs du rang 4
while($joueur = mysql_fetch_array($result)) {
  echo $joueur[$name]; //on affiche les joueurs du rang 4
  $rang--; //$rang = 3
  $result = mysql_query("SELECT * FROM $table WHERE joueur_rang='$rank'"); //on selectionne tous les joueurs du rang 3
  while($joueur = mysql_fetch_array($result)) {
    echo $joueur[$name]; //on affiche les joueurs du rang 3
    $rang--; //$rang = 2
    $result = mysql_query("SELECT * FROM $table WHERE joueur_rang='$rank'"); //on selectionne tous les joueurs du rang 2
    while($joueur = mysql_fetch_array($result)) {
      echo $joueur[$name]; //on affiche les joueurs du rang 2
      $rang--; //$rang = 1
      $result = mysql_query("SELECT * FROM $table WHERE joueur_rang='$rank'"); //on selectionne tous les joueurs du rang 1
      while($joueur = mysql_fetch_array($result)) {
        echo $joueur[$name]; //on affiche les joueurs du rang 1
      }
    }
  }
}


Pour ainsi obtenir un truc du genre :

+paul (rang 4)
|+mike (rang 3)
||+jean-jacques (rang 2)
|||+michel (rang 1)
|||+hervé (rang 1)

Le problème est que je n'est pas seulement 4 boucles a effectuer mais 19 et il n'y a pas qu'un simple "echo" a l'interieur de chaque boucle...
Effectivement, le code que je vous est affiché est une simplification !
Donc comment pourrais-je faire pour automatiser la construction d'une boucle dans une autre et ainsi de suite jusqu'à ce que $rang = 1 ?
Merci d'avance pour votre aide :)

8 réponses

ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
19 nov. 2004 à 00:14
salut

si jai bien compris tu veut un truc comme ca????

$rang = 19;
while($rang != 0){
$requete = "SELECT * FROM $table WHERE joueur_rang='$rang'";
$result = mysql_query($requete);
while($joueur = mysql_fetch_array($result)){
echo $joueur[$name]; //on affiche les joueurs du rang n
}
$rang--;
}


pour eviter de faire les 19 boucles imbriquer ;)
++

"Aucun de nous ne sait ce que nous savons tous, ensemble."
Lao Tseu inventeur du "copier coller" 8-)
0
Kevergeek Messages postés 64 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 22 janvier 2006
19 nov. 2004 à 00:48
nah dsl c'est vrai que j'ai pris un mauvaise exemple mais c'était pour simplifier lol

effectivement ton code fonctionne pour l'exemple que j'ai donné mais pas pour le suivant :

+adjudant
|+sergent
||+caporal
|||+soldat
|||+soldat
||+caporal
|||+soldat
|+sergent
||+caporal
|||+soldat

voilà c'est deja plus difficile ;)
0
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
19 nov. 2004 à 08:32
salut

Ton code au dessus ne doit pas marcher non plus vu que ya aucunne dependence entre les requete pour savoir envers qui creer l'arborescence

++

"Aucun de nous ne sait ce que nous savons tous, ensemble."
Lao Tseu inventeur du "copier coller" 8-)
0
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
19 nov. 2004 à 09:16
salut

je vien de penser a un truc.

$rang = 19;
while($rang != 0){
$requete[$rang] = "SELECT * FROM $table WHERE joueur_rang='$rang'";
if($rang != 19){$requete ." and depend_de '$joueur[$name]'";
}
$result[$rang] = mysql_query($requete[$rang]);
while($joueur = mysql_fetch_array($result[$rang])){
echo $joueur[$name]; //on affiche les joueurs du rang n
}
$rang--;
} 


ya quelques modif vu que je connais pas ta base
++

"Aucun de nous ne sait ce que nous savons tous, ensemble."
Lao Tseu inventeur du "copier coller" 8-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kevergeek Messages postés 64 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 22 janvier 2006
19 nov. 2004 à 11:02
"Ton code au dessus ne doit pas marcher non plus vu que ya aucunne dependence entre les requete pour savoir envers qui creer l'arborescence"

si comme je l'ai dit, j'ai mis ici un code simplifié mais la vraie version le fait (de la meme facon que le code que tu m'as proposé d'ailleur ^^)
0
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
19 nov. 2004 à 11:53
Salut

encore moi ca me triture ton truc....
juste vite fait en passant ca serait pet etre uinteressant de stocker combien ya de mec du meme rang sous un mec enfaisant un truc du style

$grade_en_dessous[$rang] = mysql_num_rows($resultat);

ca permettrait de repeter la boucle du dessus et de ne pas afficher qu'un chemin

$rang = 19;
while($rang != 0){
$requete[$rang] = "SELECT * FROM $table WHERE joueur_rang='$rang'";
if($rang != 19){$requete ." and depend_de '$joueur[$name]'";
}
$grade_en_dessous[$rang] = mysql_num_rows($resultat);
$result[$rang] = mysql_query($requete[$rang]);
while($joueur = mysql_fetch_array($result[$rang])){
echo $joueur[$name]; //on affiche les joueurs du rang n
//fo regarder si ya un mec en dessous si oui on descend d'un rang donc on continue le script
//sinon on continue d'afficher et a la fin on decremente le grade juste au dessus
}
$rang--;
} 


++

PS : j'essaye de faire avancer ton probleme en tesuggerant les idées qui me passe par la tete.... Je sais pas si je vais trouver une solution mais j'espere bien t'aider

"Aucun de nous ne sait ce que nous savons tous, ensemble."
Lao Tseu inventeur du "copier coller" 8-)
0
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
19 nov. 2004 à 11:57
re:

tant que jy suis un petit lien

http://www.treeview.net/

ca a l'air sympa

++

"Aucun de nous ne sait ce que nous savons tous, ensemble."
Lao Tseu inventeur du "copier coller" 8-)
0
Kevergeek Messages postés 64 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 22 janvier 2006
19 nov. 2004 à 17:53
oué je vois ce que tu veux dire, si il y a une personne Y qui depend de X, on décremente et on l'affiche mais si ce n'est pas le cas, on ne décrémente pas et on affiche le suivant...

oué c'est pas bete, je vais me pencher sur le probleme et je te tiens au courant ! merci pour l'idee ;)
0
Rejoignez-nous