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 :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
<?php echo 'La rubrique est '.rubrique_parente(5); ?>
Et là, alors que je ne devrais sortir qu'avec un seul résultat, j'obtiens
webmasters

webmasters
La rubrique est
Je n'aurais pas dû avoir plusieurs passages et je devrais aussi avoir un résultat !

Quelqu'un peut-il m'aider sur ce point SVP?

Merci !