|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||
|
Membre régulier
![]() Nicolas Étudiant Inscription : mai 2010 Messages : 308 ![]() |
Bonjour,
dans l'optique de la refonte d'un site internet, j'aimerais changer le menu. Ce que j'aimerais faire c'est une sorte de menu déroulant, horizontal et sous l'image du site. En cliquant sur la catégorie souhaitée, on obtient une liste comportant les sous-catégories. Puis en cliquant sur les sous-catégories, la page appelée s'ouvre. 1er problème : comment puis-je faire ce menu en utilisant une base de données ? Code sql :
Code php :
|
||||
|
|
00
|
|
|
#2 | ||||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Personnellement je ne le verrait pas comme ça. Je verrais plutôt une table catégories:
Code :
Code :
--- EDIT: j'ai fait ça à l'arache et ça marche pas en fait >>> voir 2 post plus loin
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||||
|
00
|
|
|
#3 |
|
Membre régulier
![]() Nicolas Étudiant Inscription : mai 2010 Messages : 308 ![]() |
J'ai édité le titre, il est plus juste ainsi.
Je ne comprends pas trop les bases que tu me proposes Est-ce que tu peux un peu expliciter ? |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
dans ta base ou voit on les sous catégories ?
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#5 | ||
|
Membre régulier
![]() Nicolas Étudiant Inscription : mai 2010 Messages : 308 ![]() |
Ah bah oui, c'est exact.
Merci. Je vais donc changer mes bases. En fait je l'avais déjà fait mais je pensais pas que ça me servirait. :/ Code sql :
ça va aussi de cette façon? Même si c'est pas exactement comme tu m'as montré ? |
||
|
|
00
|
|
|
#6 | ||||||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Comme tu as fait là c'est pas faux. Je trouvais ça plus cohérent de tout mettre dans une seule table avec une relation 1-n sur elle même:
![]() Ainsi, tu peux créer autant de catégories et de niveaux de sous catégories que tu souhaite, avec une seule table, en gardant la sécurité des contraintes. Le code : Code :
Code :
Code :
Je te fais un exemple de requête de séléction bouge pas.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||||||
|
00
|
|
|
#7 |
|
Membre régulier
![]() Nicolas Étudiant Inscription : mai 2010 Messages : 308 ![]() |
"Je trouvais ça plus cohérent de tout mettre dans une seule table avec une relation 1-n sur elle même:"
Ouh la, j'ai pas encore vu ça moi ! Bon après l'essentiel c'est que ça fonctionne. (juste par curiosité, c'est quel niveau d'études les tables à relation 1-n sur elles-mêmes?) |
|
|
00
|
|
|
#8 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
(on voit ça en première année.)
En fait, si tu regarde tes tables sommaire et sousCateg tu te rends compte qu'elles sont identiques à un champ près: le numéro de la catégorie parente (dans sommaire). C'est exactement comme si je te disait de modéliser une table personne avec la cardinalité suivante: "une personne est mariée à une autre personne". Si tu considère l'exemple suivant: (j'aime les schémas)Dans cet exemple, le trait en pointillé caractérise une relation "un homme à une femme et une seule." (si c'était "un homme à obligatoirement une femme et une seule", le trait serait plein et le champ marqué en rouge ferait partie de la clé). Cet exemple n'est pas faux, mais il ne permet pas de modéliser les mariages homosexuels par exemple. De plus, on constate une redondance entre les tables hommes et femmes qui ont en commun le nom, le prénom et la date de naissance. Il pourra donc s'avérer judicieux de généraliser tout ça: ![]() Dans ce dernier exemple, on a fait disparaitre une table inutile, on a pour cela créé une table personne avec un champ sexe permettant de différencier les hommes de femmes. La relation permet les mariages homosexuels, si on avait voulu faire de la polygamie / polyandrie, on aurait pu faire: ![]() (note que la cardinalité est devenue 1-n).
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#9 | ||||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Toujours en se plaçant dans mon dernier exemple de la table categories , la requête permettant d'obtenir la liste des catégories et leur catégories parentes est:
Code :
Code :
Je réfléchis à un algo pour modéliser le menu et je reviens.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||||
|
00
|
|
|
#10 |
|
Membre régulier
![]() Nicolas Étudiant Inscription : mai 2010 Messages : 308 ![]() |
Wah !
![]() ça en fait des choses à retenir la. Rassure moi, quand tu parles de 1ère année, c'est bien 1ère année d'école d'ingénieur ? Je suis en 2ème année de BTS IG et je n'ai jamais vu ça. Merci beaucoup pour le mal que tu te donnes pour moi. |
|
|
00
|
|
|
#11 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
ça faisait partie de ma première année d'IUT en Analyse et Conception des Systèmes d'Information. On avait un bon prof pour le cours.
Si ça t'intéresse la l'analyse, tu peux jeter un oeil aux méthodes Merise et Lapage: http://fr.wikipedia.org/wiki/Merise_%28informatique%29 http://www.priceminister.com/offer/b...que-Livre.html Tu ne trouvera pas beaucoup de cours sur internet sur Lapage pour la bonne raison que c'est notre prof et sa collègue qui ont écrit ce bouquin, et à part de lui, j'ai jamais entendu parler de cette méthode. Mais elle est très puissante.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#12 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
c'est un façon simple de le concevoir cette manière mais qui n'est pas simple a mettre en place après surtout en itération, tu peu t'orienter vers la technique nested :
http://dev.mysql.com/tech-resources/...ical-data.html j'ai vu un article sympa sur les différentes techniques de menu je vais le retrouver EDIT : retrouver ->
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#13 | |
|
Membre régulier
![]() Nicolas Étudiant Inscription : mai 2010 Messages : 308 ![]() |
Citation:
Merci pour vos réponses. Reste plus qu'à trouver comment faire un menu en utilisant ces informations :p Au fait, au fur et à mesure de vos réponses, je me demande : on est bien toujours sur mon problème de menu la ? Quelque chose de ce style ? (on rigole pas sur mon talent artistique !) http://img152.imageshack.us/img152/3...lustration.png En bleu l'image, en dessous mon menu. Quand je clique sur une case du menu, il se déroule et dans les cases déroulées, il y a les sous menus. |
|
|
|
00
|
|
|
#14 | ||||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
J'ai trouvé un bout de code sur stack overflow qui correspond bien à ce que tu veux faire et qui s'adapte parfaitement au cas présent:
Code :
A mettre avec tes librairies. Pour l'appeller, voilà un exemple testé en situation réele: Code :
![]() Bon maintenant il faut que je retrouve mon bout de code CSS capable d'afficher et de cacher des nodes de menus déroulant sans Javascript et c'est gagné @stealth35 je suis pas convaincu que cette technique soit plus simple...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||||
|
00
|
|
|
#15 | |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
Edit: Damned, je l'ai pas sur moi, il faut que je le refasse...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
|
00
|
|
|
#16 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Citation:
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#17 | |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
Enfin, j'ai jeté un œil à la technique proposée sur le site de MySQL,c'est vrai que c'est bien, mais si j'ai tout compris, on ne peut théoriquement pas avoir un niveau de nesting infini, et les requêtes pour avoir l'ensemble de l'arbre consomment de toute façon de la mémoire. Après, ça dépend où tu veux mettre la charge. Reconnais quand même que comme ça c'est pas bien compliqué
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
|
00
|
|
|
#18 |
|
Membre régulier
![]() Nicolas Étudiant Inscription : mai 2010 Messages : 308 ![]() |
|
|
|
00
|
|
|
#19 | ||||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Plutôt dérouler les sous menu au passage de la souris sur les éléments parents. J'avais réalisé des règles CSS qui permettaient de le faire à un niveau infini. Mais je ne retrouve plus mon travail.
En fait je vais pas avoir le temps de le refaire. Il va faloir te débrouiller, voici tout de même un début de piste: Code :
Pour un code HTML de la forme: Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||||
|
00
|
|
|
#20 |
|
Membre régulier
![]() Nicolas Étudiant Inscription : mai 2010 Messages : 308 ![]() |
Merci beaucoup.
Dès que je pourrais j'essayerais ton code. Je ne mets pas (encore) le sujet en résolu, si quelqu'un a quelque chose à rajouter ou modifier. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com