Salut,
J'y perds un peu mon latin...
Dans une table où sont classées des rubriques de manière hiérarchique, j'ai besoin de retrouver la rubrique la plus haute.
La table est composée de 3 champs : id_rubrique (int), parent (int) et nom (varchar).
Pour cela, j'utilise la fonction suivante:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php function rubrique_parente($id_rubrique){ $q = mysql_query("SELECT * FROM rubrique WHERE id_rubrique=".$id_rubrique); if($q == true){ $r = mysql_fetch_object($q); $nom = $r->nom; $parent_rub = $r->parent; if(intval($parent_rub) > 0){ rubrique_parente($parent_rub); } elseif(intval($parent_rub) === 0){ $top_parent = $nom; } else{ $top_parent = 'orpheline'; } } else{ $top_parent = 'abandonnée'; } echo $top_parent.'<br />'; // pour débugger return ($top_parent); } ?>
Je prends l'exemple suivant : la rubrique n°5 intitulée PHP est l'enfant directe de la rubrique n°1 intitulée Webmasters.
J'utilise donc la fonction pour retrouver le parent de plus haut niveau :
Et là, alors que je ne devrais sortir qu'avec un seul résultat, j'obtiens
Code php : Sélectionner tout - Visualiser dans une fenêtre à part <?php echo 'La rubrique est '.rubrique_parente(5); ?>
Je n'aurais pas dû avoir plusieurs passages et je devrais aussi avoir un résultat !webmasters
webmasters
La rubrique est
Quelqu'un peut-il m'aider sur ce point SVP?
Merci !
Partager