Conception Menu Dynamique a sous Categories Variables [PHP / SQL] - SQL/NoSQL - Programmation
Marsh Posté le 30-03-2010 à 11:01:17
Version simple ( un produit est dans une seule cat )
2 tables :
categorie ( id,idParent, nom)
Produit(id,idCategorie,nom,...)
Version moins simple :
un produit est dans plusieurs catégories
Categorie ( id,idParent, nom)
ProduitCategorie(idCategorie,idProduit)
Produit(id,nom,...)
Version encore mieux :
tu remplace categorie(id,idparent,nom) par categorie(id,left,right,nom) et tu lis http://sqlpro.developpez.com/cours/arborescence/
Marsh Posté le 30-03-2010 à 11:14:17
Yes,
merci flo850. Ben, justement, j'étais en train de lire un truc sur la représentation intervallaire et j'me demandais si un truc comme ça pouvait m'être vraiment utile ...
Donc la question qui me vient en second est, comment je gère ça dans mon core PHP après ? ( ou C, ou Java, on s'en fous en fait).
Pour reprendre l'exemple de tout a l'heure :
Je veux afficher une 505 break turbo, voiture Française, de la marque Pigeot.
Pour faire un psedo-algo-moisi :
SELECT nom FROM categorie WHERE idParent='vide'
--> Afficher les résultats
--> Pour chaques résultats
SELECT nom FROM categorie WHERE idParent='id_du_dessus'
--> Afficher les résultats
--> Pour chaques résultats
etc...
Si je fais comme ça, comment je sais comment la prochaine requete va chopper des sous-catégories ou des produits ?
Marsh Posté le 30-03-2010 à 11:45:42
Ha ben je crois que j'ai trouvé.
Quelqu'un peu me corriger ?
SELECT nom FROM categorie WHERE idParent='vide'
--> Afficher les résultats
--> Pour chaques résultats
Si [id.CATEGORIES] n’est pas présent dans [idcateg.PRODUITS]
SELECT nom FROM categorie WHERE idParent='id_du_dessus'
--> Afficher les résultats
--> Pour chaques résultats
Fin_Si
SELECT nom FROM produits WHERE [idcateg.PRODUITS]= 'idcateg_de_la_boucle_du_dessus'
--> Afficher les résultats
Vous en pensez quoi ? C'est dramatique ?
Marsh Posté le 30-03-2010 à 11:58:52
Avec une représentation parent-enfant, le mieux amha pour récupérer ton arborescence de catégories est de faire du récursif.
Par contre, ça peut très vite devenir une usine à gaz au niveau de l'imbrication des catégories entre elles.
En gros, l'algo donnerait :
je cherche une catégorie
je regarde si cette catégorie a des enfants
si oui, j'effectue la même opération pour ses enfants
sinon, je regarde quels sont les produits attachés à la catégorie.
Marsh Posté le 30-03-2010 à 14:34:56
J'ai déjà mis en oeuvre l'arborescence avec une table type (id, idparent, nom) dans mon soft icare (cf ma signature). T'as toutes les fonctions pour récupérer des produits (moi, c'était des configurations de machines associées à des mots-clés organisés en arbo), faire des recherches sur certaines catégories ou sous-catégories...
Marsh Posté le 30-03-2010 à 10:51:31
Bonjour à tous (du moins, tous ce qui ont le courage de me lire).
J'aurais besoin d'un coup de main concernant la conception d'un menu dynamique pour mon site Web. C'est un peu complexe, donc je n'ai rien trouvé de suffisamment spécifique sur le net.
Explications :
Faire un menu déroulant concernant la gestion de produits par des catégories, des sous catégories, des sous-sous catégories, voire encore plus profond.
Contraintes : je ne connais pas le "niveau de profondeur" des sous catégories. Ces niveaux peuvent être variable en fonction des cat/sous-cat.
Un produit peut appartenir à une catégorie, mais un autre produits peut appartenir à une sous-sous-sous catégories.
A l'aide d'une interface d'admin., je dois pouvoir ajouter simplement une catégorie, une sous catégorie et descendre autant que je veux. Une sous-cat doit bien évidement appartenir à une categorie.
A l'aide d'une interface d'admin, je dois pouvoir ajouter simplement un produit en l'associant SOIT a une catégorie SOIT a une sous-categ, etc...
Tentative d'exemple :
Voitures >> Voitures Françaises >> Pigeot >> (là plein de Pigeot)
Voitures >> Voitures Françaises >> Rinault >> (là plein de Rinault)
Voitures >> Voitures Indiennes >> (là pleins de voitures Tata)
Mobylettes >> (là pleins de mobylettes)
Par l'interface d'admin :
- je dois pouvoir créer la marque Française Cotroën.
- je dois pouvoir ajouter la Cotroën modèle "B4 Salvador Dali".
- je dois pouvoir ajouter la mobylette 103 SPY.
- je dois pouvoir ajouter la catégorie hélicoptères.
- etc
Problème :
Déjà, lors de la conception de ma BDD (MySQL pour info).
Je ne sais pas comment gérer mes sous-categ / sous-sous-categ /sous-sous-sous.....
La profondeur peut être variable et modifiable. Je ne peux donc pas avoir une organisation simple comme :
[CATÉGORIE]0,n------appartenir------1,1[PRODUITS]
Je ne peux pas avoir non plus :
[CATÉGORIE]0,n------appartenir------1,1[SOUS-CATÉGORIE]0,n------appartenir------1,1[PRODUITS]
...étant donné que je ne connais pas la "profondeur" des sous-categ.
Pourriez-vous me conseiller en ce qui concerne la conception de ma BDD ? Je pense que d'autres questions viendront par la suite, mais je vais me contenter d'une piste pour chercher un peu.
Merci