Bonjour à tous et à toutes.
Voilà comme expliqué dans le titre je souhaiterai faire un menu qui serait stocké en BDD, pour que je puisse le récupérer via requête SQL et afficher le tout avec Smarty.
Alors déjà je vous montre ce que j'ai déjà réalisé et pour commencer voila ma requêtes SQL :Voici ma table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM `menu` ORDER BY `pid`
Grâce à ce résultat, quand je récupère ce dernier dans un tableau en php, je fais une boucle et à chaque ligne (grâce aux champs class et pid) j'ouvre et ferme les balises qu'il faut avec smarty. L'avantage du "machin" que j'ai fait c'est que mon tableau ne sera parcouru qu'une et une seul fois. L’inconvénient par contre c'est que maintenant si je souhaite ajouter un nouvel entête à mon menu par exemple et que je désire qu'il soit en première position devant tout les autres. Je devrais changer le "pid" de toutes les lignes de mon tableau et le stocker en BDD. Si par contre je souhaite ajouter un sous menu à l’entête "Home" et bien je devrais changer le pid de tout les sous menus qui sont après lui pour le mettre à la bonne position...etc en gros je devrais faire pas mal de requêtes SQL. Ce qui, vous en conviendrez, n'est pas du tout optimisé.
Donc ma question est, y a t-il une méthode pour créer le(s) table(s) et les champs à mettre dans une BDD qui puisse respecter ses trois critères :
- Qu'il y est le moins de table possible. (1 table idéalement)
- Que je n'ai pas à parcourir un ou plusieurs tableau(x) plusieurs fois juste pour afficher mon menu.
- Que lorsque je souhaite ajouter, supprimer ou modifier un entête ou sous menu. Je n'ai pas besoin de faire une tonne de requête sql pour réorganiser ma table afin de respecter l'ordre d'affichage du menu selon le désire du client.
Désoler pour ce long pavé mais je voulais bien détailler mon problème. Merci par avance au temps que vous me consacrerez et aux réponses (je suis sûr) utile pour la réalisation de mon problème.
Cordialement.
Partager