Tom's Guide > Forum > Programmation > pb d'algo (parcours d'arbre en php/mysql)

pb d'algo (parcours d'arbre en php/mysql)

Forum Programmation : pb d'algo (parcours d'arbre en php/mysql)

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,

Je travaille sur une application PHP, avec une base de donnée Mysql.
Je bloque sur une fonction qui me permet pour un élément d'une table, de trouver tous ses éléments pères.
C'est à dire qu'un élément peut en contenir d'autre et/ou être lui même contenu dans un élément.
En fait la représentation idéale est un arbre :http://www.hebergementimages.com/images/1197029579_arbre.jpg

Dans ce cas là je cherche tous les chemins menant à l'élément E42 en partant de la racine (E45).

Voici ma fonction PHP :

Code :
  1. function search($id){
  2.    
  3.     //requete qui trouve les papas 
  4.     $req = 'SELECT id_asm, id_assemblages
  5.             FROM assemblages
  6.             WHERE id_composants='.$id.'
  7.             '; 
  8.    
  9.     $res = mysql_query($req);
  10.     $nb = mysql_num_rows($res);
  11.    
  12.    
  13.     if($nb==1){
  14.    
  15.        
  16.         $r = mysql_fetch_array($res);
  17.      
  18.         $c .= $id;
  19.         $c .= '-'.search($r['id_asm']);
  20.      
  21.      
  22.     }elseif($nb>1){
  23.    
  24.      
  25.      
  26.       while ($r = mysql_fetch_array($res)){
  27.        
  28.    
  29.         $c .= $id.'-'.search($r['id_asm']);
  30.            
  31.       }
  32.      
  33.      
  34.     }elseif($nb==0){
  35.      
  36.       $c .= $id.'*';
  37.            
  38.     }
  39.    
  40.    
  41.    
  42.     return $c;
  43.    
  44.    
  45. }




Elle me sort le résultat suivant :

E45-E46-E44-E42*E44-E43-E42*E45-E44-E42*E44-E43-E42*E45-E43-E42*

Comme vous pouvez le voir, je suis pas loin de la solution, sauf que par ex, pour l'embranchement ou y a l'étoile sur le schéma, la fonction perd le chemin qu'il y a avant l'embrachement étoilé. Je n'arrive pas à avoir le chemin complet. (y a moyen de le récupérer avec des bidouillages sur la chaîne de caractère retournée, mais je prefererais éviter et trouver LA solution propre).
Si y en a parmis vous qui m'ont déjà lu jusqu'ici et qui se sentent le courage de regarder de plus près mon pb, je les remercie :)

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.
Tom's Guide > Forum > Programmation > pb d'algo (parcours d'arbre en php/mysql)
Aller à :

Il y a 1925 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens