Créer arborescence depuis BDD

Créer arborescence depuis BDD - PHP - Programmation

Marsh Posté le 27-03-2013 à 15:06:32    

Bonjour tout le monde,
je sèche depuis longtemps depuis un problème qui m'empêche d'avancer !
je bricole dans tous les sens mais n'y parviens pas, c'est pourquoi je sollicite votre aide.
 
Je suis sur un site e-commerce. La BDD est bien évidemment en mysql. Les tables sont alimentées chaque jour par un fichier CSV qui est uploadée sur le site par une application tierce.
Ce fichier CSV est conçu comme ça :
CB | CI | Designation | Refart | Activite | Famille | SousFamille | PVTTC | T3ETTC | QteStock | PrixTransportTTC
 
Ma table "articles" contient en entête les memes champs que le CSV.
Jusque là tout va bien.
 
Mon problème est le suivant :
le client me demande de lui construire un menu dynamique sur 3 niveaux par exemple :
BLANC
------RIDEAUX
------LINGE
-----------HOUSSE
-----------COUETTE
-----------DRAPS
------ACCESSOIRES
CUISINE
------LIVRES
------USTENSILES
-----------MOULES
-----------PLATS
-----------COUVERTS
etc
 
et j'ai beau me creuser la tête, me servir des différents tutos trouvés, je n'y parviens pas.
J'ai essayé ça : http://mayeul.com/php-construire-u [...] recursive/ mais il faut créer une table spécifique à partir de ma table "articles". Et là non plus je vois pas comment extraire de cette table "articles" les données et leur attribuer une "parentalité".
Quelqu'un pourrait me filer un coup de main ? une source ?
 
ça devient très chaud et extrèmement urgent cet histoire !
 
Merci d'avance ! :hello:

Reply

Marsh Posté le 27-03-2013 à 15:06:32   

Reply

Marsh Posté le 27-03-2013 à 16:58:30    

J'imagine que les 3 niveaux correspondent aux champs Activite, Famille et Sousfamille?

 

Si oui, il faut faire par exemple :

 
Code :
  1. Select distinct activite, famille, sousfamille
  2. from nom_table
  3. order by activite, famille, sousfamille
 

De cette manière tu récupère la liste des menus à créer.
Ca sera de la forme :

 

BLANC   RIDEAUX  -
BLANC   LINGE  HOUSSE
BLANC   LINGE  COUETTE
BLANC   LINGE  DRAPS
BLANC   ACCESSOIRES  -
CUISINE LIVRES  -
CUISINE USTENSILES  MOULES
CUISINE USTENSILES  PLATS
CUISINE USTENSILES  COUVERTS

 

Ensuite il faut faire une fonction qui va générer le menu en fonction des champs.

 

L'idée c'est de lire la colonne activite. Si elle est différente  de l'activité en cours, tu créé un nouveau menu de niveau 0, 1 (et 2 si renseigné), sinon tu compares la colonne famille. Si elle est différence de la famille précédente, tu créé un nouveau menu de niveau 1 et 2, sinon tu créé juste un nouveau menu de niveau 2.

 

Ça doit pas être bien clair, mais c'est pas évident à expliquer comme ça.

 

Une fois que tu aura les données ce sera surement plus simple à visualiser.


Message édité par x1fr le 27-03-2013 à 17:01:09

---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 27-03-2013 à 17:34:21    

merci à toi, je connaissais pas ce select "DISTINCT" ! je passais derrière par un array_unique en PHP qui me galérais aussi un peu (fallais le sortir des foreach).
maintenant il me reste a me pencher sur le menu en lui-meme.
tu n'aurais pas un bout de code par hasard ?

Reply

Marsh Posté le 28-03-2013 à 00:42:21    

j'arrive à rien....un petit coup de main SVP ?

Reply

Marsh Posté le 28-03-2013 à 10:01:02    

un exemple vite fait :

 

http://phpfiddle.org/main/code/86f-vp4

 

à peaufiner
(cliquer sur "run" pour voir le résultat)

Message cité 1 fois
Message édité par x1fr le 28-03-2013 à 10:01:36

---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 29-03-2013 à 16:04:37    

x1fr a écrit :

un exemple vite fait :
 
http://phpfiddle.org/main/code/86f-vp4
 
à peaufiner
(cliquer sur "run" pour voir le résultat)


 
super GRAND MERCI !!
histoire de bien abuser de toi  :ange: aurais-tu une solution pour mettre tout ça dans un menu déroulant  select au lieu d'une liste ul ?

Reply

Marsh Posté le 29-03-2013 à 23:23:58    

ca se fait en css (à base de liste dans le code html justement)
 
exemple :
http://line25.com/tutorials/how-to [...] pdown-menu


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed