20
Avr

Faire un menu avec récursion

Fonction récursive?

Cet exercice est simplement, un moyen de comprendre la récursion avec php. Une fonction récursive est une fonction qui s’appelle elle même sous certaines conditions. 🙂

Bon à quoi sert vraiment cette sacré fonction. Alors c’est un moyen très efficace de construire une arborescence, par exemple dans notre exemple: un menu.

Pour commencer on peut d’abord donner un exemple de ce qu’il faut réaliser.

  • Premier menu
  • Second menu
    • Premier sous-menu
    • Second sous-menu

C’est un mini exemple de rien du tout, évidemment une fois ceci fait on peut générer des menu en cascade avec beaucoup plus de profondeur.

Ceci dit vous pouvez aussi faire des sites map ou des arborescences de privilèges, je laisse cela à votre créativité.

Commençons donc notre exercice:

Comment allons nous donc réaliser ce menu?

On remarque qu’en fait chacun des sous-menu sont lié à un simple et unique menu parent. Bien. Mais il existe à part ça un ensemble de menu qui n’auront pas de parent.. mmm…

Bon allé d’accord, nous auront quand même des menu qui seront raccroché à rien. On va mettre ici 0, en supposant qu’il n’y ai aucune occurrence avec l’id 0.

idNom du menuparent
1Premier menu0
2Second menu0
3Premier sous-menu2
4Second sous-menu2

Bon donc de cette manière nous auront une cohérence dans la structure de nos données.

Et comment on affiche ça avec php et la récursion?

C’est très simple, nous allons pour cela mettre notre model dans un tableau, on aurait pu très bien mettre tout cela dans une DB.

On va par rapport à un fonction daffichage simple ajouter un paramètre à notre fonction qui va déterminer une fois qu’il commencera à boucler si l’id du noeud courant est contenu dans n’importe quel des autres dans le champ “parent” à chaque fois qu’on entre dans la boucle. Il suffira de mettre une condition au préalable pour savoir si oui ou non la valeur est affichable ou non

Pas de commentaire

Leave a Comment

Your email address will not be published. Required fields are marked *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Contactez-nous

Retourner sur le site

Formulaire de contact

Votre nom (obligatoire)

Votre email (obligatoire)

Sujet

Votre message

[recaptcha]