[PHP] Variable dynamique et bouclage de requête

Variable dynamique et bouclage de requête [PHP] - Programmation

Marsh Posté le 05-02-2002 à 20:35:13    

ok, j'ai un ptit souci qui m'a tracassé toute la journée
 
je veux faire une arborescence à partir d'un schéma de donnée simple : 3 champs de BDD nommées Id, Pere et Nom.
 
quand Pere = 0, on a une branche de base, les enfants sont les champs ayant comme Pere l'Id de la ligne parente, ainsi de suite pour pouvoir faire un arbre complet, chaque enfant ayant comme Pere la valeur de l'Id du Pere.  :pt1cable:  
 
faut ensuite que j'imbrique des requêtes du style  
SELECT Id,Nom,Pere where Pere=Id
while (...) {
  affichage du parent
  SELECT Id,Nom,Pere where Pere=Id_du_Parent {
    afifchage du fils 1 (avec incrémentation à chaque fois du numéro de fils)
 etc..
et de boucler le tout histoire de pas devoir mettre 50 requêtes..  
 
1 - j'espère que c'est clair
2 - je mets pas de code je suis parvenu à rien du tout la rigueur je peux mettre le X requêtes imbriquées mais bon..
 
Merci !!!


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 05-02-2002 à 20:35:13   

Reply

Marsh Posté le 05-02-2002 à 22:29:55    

une fonciton récursive fera très bien l'affaire dans ce cas :
 
function AfficherFils($id){
  static $i=0;
  $query= "SELECT id,pere,nom from table where pere=$id";
  $res= mysql_query($query, $connexion);
  While ( $row= mysql_fetch_object($res) ){
     echo $i++. " Nom : ".$row->nom;
     AfficherFils($row->pere);
  }
}
 
AfficherFils(0);
 
je ne suis pas trop sûr du static, faudrait vérifier

Reply

Marsh Posté le 06-02-2002 à 11:59:37    

ça me fait une boucle infinie apparemment...
 
je donne mon exemple codé en dur et que je veux pouvoir boucler :
 
// Récupération des branche Parentes de l'arbre
$Query = mysql_query("SELECT Id,Nom from $Tbl_Categorie where Pere=0",$Connect);
while ($result = mysql_fetch_array($Query)) {
  echo $result["Nom"]."<br>";
 
  // Récup des enfants au niveau 1
  $Query2 = mysql_query("SELECT Id,Nom from $Tbl_Categorie where Pere=".$result["Id"]."",$Connect);
  while ($result2 = mysql_fetch_array($Query2)) {
    echo "  ".$result2["Nom"]."<br>";
 
    // Récup des enfants au niveau 2
    $Query3 = mysql_query("SELECT Id,Nom from $Tbl_Categorie where Pere=".$result2["Id"]."",$Connect);
    while ($result3 = mysql_fetch_array($Query3)) {
      echo "    ".$result3["Nom"]."<br>";
    }
  }
}
 
ici on ne peut récupérer que 2 niveaux de l'arbre, l'idéal serait de pouvoir incrémenter le nom des variables (Query1,result1) dans une boucle pour pouvoir avoir autant de niveau qu'on veut...


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed