pb algorithmiques : parcours d'arbre
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/ima...9579_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 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
function search($id){
//requete qui trouve les papas
$req = 'SELECT id_asm, id_assemblages
FROM assemblages
WHERE id_composants='.$id.'
';
$res = mysql_query($req);
$nb = mysql_num_rows($res);
if($nb==1){
$r = mysql_fetch_array($res);
$c .= $id;
$c .= '-'.search($r['id_asm']);
}elseif($nb>1){
while ($r = mysql_fetch_array($res)){
$c .= $id.'-'.search($r['id_asm']);
}
}elseif($nb==0){
$c .= $id.'*';
}
return $c;
} |
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 :)