Page 1 sur 1

Script de recherche dans Arborescence

Posté : 30 juin 2011, 17:50
par Darco
Bonjour à tous,
Voilà j'ai un soucis de concepotion de script :(

Dans une table d'abo j'ai ce genre d'enregistrement :

id | NOM | Parent |
1 | Accueil | 0 |
2 | Menu 1 | 0 |
3 | Menu 2 | 0 |
4 | Menu 1-1 | 2 |
5 | Menu 1-2 | 2 |
6 | Menu 1-3 | 2 |
7 | Menu 2-1 | 3 |
8 | Menu 2-2 | 3 |
9 | Menu 2-2-1 | 8 |

....
id = Identifiant de la table
Nom = Nom de la Rubrqieu (ou Sous-Rubrique, Sous-Sous-Rubrique... etc.)
Parent = Le lien entre les rubrique.
Ex. : Ici l'enregistrement numéro 4 est "l'enfant" du numéro 2.

Qui me permet d'afficher un menu déroulant sous "X" Niveau.

Ce que j'aimerai c'est ou que je sois dans l'arborescence je puise retrouver "La Rubrique Mère" ddans laquelle je me trouve.
Alors j'ai fait :

Je regarde le champ parent ou je me trouve, si c'est égal à "0" (zéro) je suis dans ma "Rubrique Mère"
Sinon je regarde a quel "ID" correspond ce "PARENT"... Ainsi de suite...
Mais je ne sais pas à l'avance la "profondeur" du Menu. Et je ne veux (et ne peux) pas faire un test sur "X" niveau
Y aurait'il un moyuen plus simple !?
Merci
De votre aide.
Darco

Re: Script de recherche dans Arborescence

Posté : 01 juil. 2011, 08:47
par Mazarini
Bonjour,

Il faut faire une fonction récurcive qui s'appelle elle même.
function mere($id)
{
   $SQL = 'select...'; /* de la ligne $id
   $res = mysql-query($SQL);
   $data = mysql_fetch_assoc($res);  
   if ($data['parent'] == 0) 
   {
      return $id; /* plus de parent
   }
   else
   {
      return mere($data['parent']); /* tu recherches le parent suivant
}
(tu ajouteras le controle de la bonne exécution de mysql)

Re: Script de recherche dans Arborescence

Posté : 01 juil. 2011, 14:11
par Darco
Mazarini,
Je te remercie de ta réponse... Je n'y avais pas pensé... peur de boucle sans fin peut être.

Je vais la mettre en pratique..
Encore Merci
Darco