Le système de ton amis a un gros avantage :
- Récusrivité => Possibilité d'avoir un nombre infini de menus, et sur une même échèle, d'avoir des entrées de menu finales et des noeux pointants sur des sous-menus.
Le gros avantage, c'est que outre être plus propre niveau conception, c'est bien plus souple pour faire des menus plus complèxes.
MAIS ce système a un énorme inconvénient ! Très peux de SGBD sont capable de faire des requêtes récursives. A pas se fait, les informations seront difficiles (et donc lentes) à retrouver et mettre à jour.
Le meilleur moyen pour s'en sortir quand on n'a pas un SGBD capable de faire de la récursivité, c'est de faire des procédures stockées. Mais à nouveau, tous les SGBD (je pense notamment à MySQL version actuelles) ne supportent pas.
Donc ce système est très bon pour une base sous Oracle (supporte les requêtes récusrives avec les mots clés CONNECT BY et PRIOR)
Déconseillé mais utilisable avec SQL Server, Access (sisi), PostGRE, DB2, etc.
Inexploitable ou presque avec MySQL.
Le second système consite à créer une table menu avec cette structure (bien plus limité, mais très simplement utilisable)
MENU
niveau1
niveau2
niveau3
libelle
action
...
Et dedans :
Code :
- 1 NULL NULL Acceuil /home.php
- 2 NULL NULL Catalogue NULL
- 3 NULL NULL Personnalisation NULL
- 2 1 NULL Pour les mères NULL
- 2 2 NULL Pour les pères NULL
- 2 1 1 Fleurs /cat/fleurs.php
- 2 1 2 Habits /cat/habits.php
- 2 2 1 Voitures /cat/voitures.php
- 2 2 2 Foot /cat.foot.php
- ...
|
C'est pas très propre, mais ça permet de récupérer assez simplement les infos. Deplus, ça accepte sur un même niveau des fins de menus et des noeuds. Par contre le nueau maximum des menus est codé en dur (ici 3)