Boucle récursive pour fils d'ariane

Fermé
tyty - 30 juin 2009 à 13:21
eltyty Messages postés 2 Date d'inscription mardi 30 juin 2009 Statut Membre Dernière intervention 30 juin 2009 - 30 juin 2009 à 14:39
Bonjour,

Je souhaite faire un fils d'Ariane à l'aide d'une table "rubrique". Et là je me confronte au problème de récursivité et là je pêche. J'ai du mal à avoir la logique donc voici les quelques infos indispensables pour comprendre :

ID_RUBRIQUE ID_PARENT TITRE
---------------------------------------------
1 0 nom rubrique principal (A)
2 1 nom rubrique secondaire (B)
3 0 nom rubrique principale (C)
4 3 nom rubrique secondaire (D)
5 4 nom rubrique tertiaire (E)

J'aimerai pouvoir afficher un fils d'Ariane avec en fonction du niveau de la rubrique exemple

Si c'est la rubrique avec un id_parent à 0, c'est que c'est la première du niveau donc ça devrait afficher :
Home > nom rubrique principal (A ou C ici)
Si c'est une rubrique avec un id_parent différent de 0, c'est qu'il y a un parent donc selon le niveau on affiche :
Home > nom rubrique principal (A) > nom rubrique secondaire (B)
ou
Home > nom rubrique principal (C)> nom rubrique secondaire (D)> nom rubrique tertiaire (E)
Etc.

Donc je souhaiterai affiche qu'importe la profondeur. Car actuellement avec deux boule while j'arrive mais si je décide faire faire 4 niveau je suis embêter et je dois modifier le code.

Je vous serai très reconnaissant de m'indiquer le code avec les commentaire nécessaire.
J'ai essayé dans tous les sens et c'est vraiment important pour moi car je vais utiliser une méthode similaire pour mon menu après donc il faut que je comprenne.
Merci de votre compréhension et de prendre le temps nécessaire pour me répondre.

Peut être n'ai je pas bien étudié la table donc ...

Merci VRAIMENT à la personne qui me trouve la solution.

5 réponses

Salut,
j'espère que ceci répondra en partie à ta question =)


En global : Chemin (Chaine)

Fonction Afficher (ID_RUB)  {
Titre (Chaine);

ID_PARENT = obtenir_Id_Parent(ID_RUB); // Fonction qui récupère l'ID parent depuis une ID rubrique

SI(ID_PARENT == 0) { // On teste le niveau
Chemin = "Home" + Chemin;
} SINON {

Titre = obtenir_Titre(ID_RUB); // Fonction qui récupère un titre depuis une ID rubrique
Chemin = ">" + Titre + Chemin;
Afficher ( ID_RUB );

}


}
0
Ooops, petite correction :

En global : Chemin (Chaine)

Fonction Afficher (ID_RUB)  {
Titre (Chaine);

ID_PARENT = obtenir_Id_Parent(ID_RUB); // Fonction qui récupère l'ID parent depuis une ID rubrique

SI(ID_PARENT == 0) { // On teste le niveau
Chemin = "Home" + Chemin;
} SINON {

Titre = obtenir_Titre(ID_RUB); // Fonction qui récupère un titre depuis une ID rubrique
Chemin = ">" + Titre + Chemin;
Afficher ( ID_PARENT );

}
}
0
Dans mon 2ème post, j'ai changé ID_PARENT par ID_RUB, normal puisqu'on va dans le menu parent.
Pour résumer :

Fonction Afficher (ID de la rubrique)
Etape 1 : On affiche le titre de la rubrique
Etape 2 : On récupère l'ID père de la rubrique

Etape 3 : On relance la fonction Afficher( ) avec l'ID père de la rubrique, à la condition que cette ID soit différent de 0 (le Home)
0
eltyty Messages postés 2 Date d'inscription mardi 30 juin 2009 Statut Membre Dernière intervention 30 juin 2009
30 juin 2009 à 14:06
Bonjour,

et bien je vais tester ça assez rapidement dans la journée et je te tiens au courant. En tout cas déjà merci pour la réponse.
J'espère que ça va fonctionner.
Ca te dérange pas de te faire une alerte sur ce message car comme ca si ca ne marche pas tu seras au courant ;-)

Ca t'aurai déranger de tester en créant la table et avec le code comme ca je mettrai en parallèle tes explications avec le code réelle, juste au cas où. sinon déjà c'est plus clair :-)

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fais des updates toutes les heures (si c'est pas hors charte), je n'ai pas de compte mais je regarderai le topic régulièrement.

Je suis là jusqu'à 17h30. =)

Dans l'idée ça devrait être ça, techniquement je n'ai pas testé. ^^
0
eltyty Messages postés 2 Date d'inscription mardi 30 juin 2009 Statut Membre Dernière intervention 30 juin 2009
30 juin 2009 à 14:39
lut,
je vais regarder mais sinon pour ne pas crer un compte gratuit. Car avec tes explications ca va mieux mais comme je suis auto didact j'ai des fois du mal. Donc tes explications et le code je pense que je comprendrais nettement mieux, ainsi je pourrais l'adapter pour mon menu.
En tout cas je vais faire mon ménage d'abord et je m'occupe vite fais de mon gos et op je tente de réaliser le code. Sinon tu peux m'envoyer ça à cette adresse : bruno.m35@hotmail.fr.

Merci et à tout
0