Afficher une arborescence

Afficher une arborescence - PHP - Programmation

Marsh Posté le 22-02-2008 à 10:23:38    

Bonjour à tous,
 
voila mon problème, j'ai une liste de Poles d'une entreprise et je souhaiterais afficher cette liste sous la forme d'une arborescence de ce type :
 
PoleParent1
    -PoleEnfant1
    -PoleEnfant2
          -PoleEnfant3
PoleParent2
    -PoleEnfant1
           -PoleEnfant4
....
 
la table est sur un SQL Server : Pole_v2(ID,Label,PoleParent,IDAgentResp)
J'ai donc réussi a le faire pour seulement 2 niveaux, lorsque je suis passé au 3ème cela a provoqué un problème avec la boucle car les 2 derniers poles sont affichés 5 fois au lieu d'une seule.
Voici mon code :

Code :
  1. $sqlparent = "select distinct(Label),ID,PoleParent from Pole_v2";
  2. $valparent = mssql_query($sqlparent);
  3. while ($result = mssql_fetch_array($valparent))
  4.       {
  5.        if($result['PoleParent'] == "" )
  6.        {
  7.         $idPoleParent = $result['ID'];
  8.         echo '<li>'.$result['Label'].'</li>';
  9.        }
  10.        $sqlEnfant = "Select ID,Label from Pole_v2 where PoleParent='$idPoleParent'";
  11.        $valEnfant = mssql_query($sqlEnfant);
  12.        while ($result2 = mssql_fetch_array($valEnfant))
  13.        {
  14.         $idPoleParent2 = $result2['ID'];
  15.         echo '<dd>'.$result2['Label'].'</dd>';
  16.        }
  17.        $sqlEnfant2 = "Select ID,Label from Pole_v2 where PoleParent='$idPoleParent2'";
  18.        $valEnfant2 = mssql_query($sqlEnfant2);
  19.        while ($result3 = mssql_fetch_array($valEnfant2))
  20.        {
  21.         echo '<dd><dd>'.$result3['Label'].'</dd></dd>';
  22.        }
  23.       }


 
Si vous avez une idée pour que mon code fonctionne ou une autre manière de procéder ?
 
Merci par avance


Message édité par killingspree le 22-02-2008 à 10:25:22
Reply

Marsh Posté le 22-02-2008 à 10:23:38   

Reply

Marsh Posté le 22-02-2008 à 10:24:50    

Il faudrait procéder de manière récursive plutôt

Reply

Marsh Posté le 22-02-2008 à 10:26:10    

C'est à dire Florent G ? peux-tu être plus précis ?
 
Merci par avance

Reply

Marsh Posté le 22-02-2008 à 10:30:57    

Faut que tu fasses une fonction qui prend en paramètre un parent, et affiche la liste. Elle s'auto-appellera pour chaque élément

Reply

Marsh Posté le 22-02-2008 à 10:50:14    

ok merci.
Pourrais-tu me donner la structure de la fonction car c'est un peu flou, je ne vois pas vraiment comment faire.
 
Merci par avance.

Reply

Marsh Posté le 22-02-2008 à 11:17:01    

Code :
  1. function truc( $machin){
  2. //un traitement
  3. foreach($machin as $bidule){
  4.    truc($bidule);
  5. }
  6. }


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Sujets relatifs:

Leave a Replay

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