|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2012 Messages : 37 ![]() |
Bonjour à toutes et à tous!
Je cherche à créer un menu déroulant dynamique à 3 niveaux via ma bdd. Le problème c'est que je n'arrive pas à schématiser mes tables pour ce système. Je vais vous décrire ce que j'ai en tête mais ça ne m'a pas l'air convainquant et je suis sûr qu'il y a une meilleure façon de faire. J'ai un menu vertical qui permet d'accéder aux catégories de mes produits. Chaque catégories peut avoir une ou des sous-catégories et une ou des soussous-catégories. Donc 3 niveaux. En gros il y aura plusieurs catégories de niveaux 1 : bricolage, déco, bijouteries,... Dans déco on pourra trouver mobilier, rangement, ... et dans mobilier table, chaise, ... J'ai donc pensé faire 3 tables pour mon menu qui serait composées de la manière suivante: - category : NumeroCat (clé primaire) + Nom - categorySub1 NumeroCatSub1 (CP) + Nom + NumeroCat (copie de la clé primaire table category) - categorySub2 NumeroCatSub2 (CP) + Nom + NumeroCatSub1 (copie de la clé primaire NumeroCatSub1) Et la table des produits : - produits : id (AI - CP) + NumeroCat + NumeroCatSub1 + NumeroCatSub2 Il me semble que cette dernière table posera des problèmes vu que certains produits seront classés dans des catégories mais pas dans des sous catégories donc des champs seront vide. Peut être je me trompe car je ne vois vraiment pas comment construire ces tables de la façon la plus logique. Je vous remercie par avance pour vos conseils! |
|
|
00
|
|
|
#2 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 861 ![]() |
Une manière classique de faire est d'avoir une seule table categorie avec
id - nom - id_parent |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2012 Messages : 37 ![]() |
Merci pour ton intérêt sabotage.
Pourrais tu détailler davantage s'il te plait? Comment se composerait cette table, comme ça : id - nom - id_parent ------------------- 1 deco NULL 2 mobilier 1 3 chaise 1 et 2 ...etc Je vois pas trop Merci pour tes conseils |
|
|
00
|
|
|
#4 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 861 ![]() |
id - nom - id_parent
------------------- 1 deco NULL 2 mobilier 1 3 chaise 2 |
|
|
00
|
|
|
#5 | ||
|
Expert Confirmé
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 1 816 ![]() |
salut,
si tu veux des relations multiples, tu dois utiliser une table de liaison: categories: Citation:
Citation:
avec ça tu as les 2 principales façons d'aborder les arborescences d'une manière simple
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
|
||
|
|
00
|
|
|
#6 | ||
![]() ![]() |
@ericd69 Il n'est pas utile pour l'instant de l'embrouiller avec 2 tables.
Pour reprendre le modèle de Sabotage, avec une seule table : Code :
- sous-menu 1 : id_parent = id (du menu 0 parent) - sous-menu 2 : id_parent = id (du sous-menu 2 parent) - Le rang permet de classer les rubriques (et de pouvoir changer l'ordre d'affichage, éventuellement, sans changer les id) Pour info, Joomla ou Wordpress (pour ne citer d'eux) utilisent cette méthode pour créer des menu/sous-menus via l'admin. Si on prend cet exemple, on trouve 4 niveaux de menu/sous-menus.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément." Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique. "Quand le sage montre la lune, le sot regarde le doigt." Confucius, Homme d'Etat et philosophe chinois (551-479 av. J.-C). |
||
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 1 816 ![]() |
@jreaux62
il n'a pas à être embrouillé, c'est pas plus compliqué que de maintenir le compteur pour le rang, et si je lui propose ça c'est parce qu'il donne un exemple de sous catégories avec plusieurs antécédents (parents). hors si les éléments sont affiliés à une seuls catégorie ensuite ta structure est inadaptée par contre avec cette structure on évite la répétition de texte dans ce cas, la tienne est plus dédié as des données non répétitives ou quand les répétition sont des occurrences indépendantes... je l'utilise pour stocker l'arborescence de balises html en bd par exemple... ici ça permet, accessoirement, de compacter les tables et les données dans les buffers mysql pour le même résultat après, sur des petites structures, les 2 sont à peu près équivalentes en terme de performances
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com