Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1192 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [PHP / SQL] Conception Menu Dynamique a sous Categories Variables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP / SQL] Conception Menu Dynamique a sous Categories Variables

n°1978776
tanshiro
Posté le 30-03-2010 à 10:51:31  profilanswer
 

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
 
 

mood
Publicité
Posté le 30-03-2010 à 10:51:31  profilanswer
 

n°1978791
flo850
moi je
Posté le 30-03-2010 à 11:01:17  profilanswer
 

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/

n°1978802
tanshiro
Posté le 30-03-2010 à 11:14:17  profilanswer
 

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 ?

n°1978817
tanshiro
Posté le 30-03-2010 à 11:45:42  profilanswer
 

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 ?  [:matleflou]

n°1978826
Fred999
Rabat-joie
Posté le 30-03-2010 à 11:58:52  profilanswer
 

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.

n°1978920
rufo
Pas me confondre avec Lycos!
Posté le 30-03-2010 à 14:34:56  profilanswer
 

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... ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1978933
tanshiro
Posté le 30-03-2010 à 14:48:30  profilanswer
 

Merci rufo, je vais jeter un œil a ton code.
 
 :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [PHP / SQL] Conception Menu Dynamique a sous Categories Variables

 

Sujets relatifs
[PHP] foreach qui ignore des valeurs d'un tableauMenu avec effets Alpha Tweenlite et liens
Menu CSS déroulant, problème IE8Faire un tableau en parsant des chaines issues de pages HTML dynamique
Modifier un script java-script en PhP / MySQLportée des variables
[PHP]lister les bases mysql...[Javascript] Un menu déroulant qui rempli un champ texte
PHP, Excel et ODBC[SQL] Connaîter les permissions du shéma
Plus de sujets relatifs à : [PHP / SQL] Conception Menu Dynamique a sous Categories Variables


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR