IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Site multilingues et bases de données


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut Site multilingues et bases de données
    Bonjour,
    j'espere que je poste au bon endroit!

    j'aurais 3 petites questions:

    je suis entrain de reflechir a concevoir un site ecommerce multilingues, une decision quant a la maniere de le faire a ete price a l'issu de ce topic (fichiers de traductions xml): http://www.developpez.net/forums/d80...multi-langues/
    mais les questions que je me pose maintenant sont:

    1- je vais avoir themes -> rubriques -> produits
    le menu sera construit a partir du contenu de themes, rubriques et produits.
    les petits exemples avec lesquels je travaillaient ne sont plus valable car ce que je veux faire mnt est un peu costaud. j'ai mis dans un fichier .php la stucture du menu manuellement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $menu = array(
    		'rubrique1' => array( // element id => sous menu
    			'cat1',
    			'cat2',
    			'cat3',
    			'cat4'
    		),
    		'rubrique2' => array(
    			'cat5',
    			'cat6',
    			'cat7'
    		),
    		...
    );
    rubrique1, cat1, cat2 sont des variable qui figurent dans le fichier de traduction...
    je me rends compte que rubrique1, rubrique2, cat1, cat2, ... seront mieux placés dans une base de données, car si une nouvelle rubrique s'ajoute, je serai obligé de la rajouté a la main dans ce fichier text. Approuvez vous ce choix ??

    2- rubrique1, rubrique2, cat1, cat2, ... seront dans une table de "references": rubriques (id_rub, libelle) mais sachant que les libellés vont etre en plusieurs langues, comment pourrais je concevoir cette table? je vois un truc du genre: rubriques (id_rub, id_trad, lang, libelle):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1   1   en   Hello
    2   2   en   Good
    2   3   fr   Bien
    2   4   es   Bueno
    1   5   fr   Bonjour
    mais je suis sur qu'il doit y avoir plus simple, je suis a cours d'idees

    3- et une derniere question, quelle est la meilleure structure pour une table qui stocke des "chaussures" sachant que le meme model peut exister en plusieurs couleur, model, et pointures...

    Merci infiniment
    Reda

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    mais je suis sur qu'il doit y avoir plus simple
    Plus simple, je n'en sais rien, mais pour ce qui est de stocker les infos comme "rubrique", "categories" etc ... une base de données me semble indispensable, je ne vois pas comment on pourrait faire sans.

    Ton site proposera obligatoirement de faire des recherches, que ce soit dans les rubriques, catégories, produits, etc ... avec même plusieurs critères (sur le nom des produits, des catégories, le prix, et surtout sur le contenu linguistique des produits, etc ...)
    Si tous ces contenus, voir même 1 seul se trouve dans du XML et les autres dans la Bdd, (ou pire, du tout XML), il te seras impossible, du moins très compliqué (hyper même) de faire des jointures, de mettre tout ceci en relation pour ressortir très exactement des produits par exemple.


    A mon sens, les seuls éléments qui pourraient être placés dans des fichiers XML, c'est les contenu propre à l'interface, totalement éloignés du contenu des produits, catégories, rubrique etc ...

    Aussi, j'ai jamais vraiment adhéré d'utiliser des noms comme clés primaire, mais plutôt des IDs, comme pour la langue.
    J'aurais donc créé une table "langue" avec au moins 2 champs :
    lang_id, code
    1, fr
    2, en
    etc ...

    De plus, le fait d'avoir une table "langue", tu pourrais l'exploiter pour renseigner le nom où ce trouverait le fichier linguistique, ou le nom du répertoire pour peu qu'il y aurait plusieurs type de contenu linguistique (ça risque fort d'être le cas).
    Voir d'autres infos propres à chaque langue.
    Tout ceci permettra de rendre l'application plus dynamique, plus automatisée.
    lang_id, code, rep
    1, fr, francais
    2, en, anglais
    etc ...

    Pour ce qui est de la rubrique, là aussi j'aurais fais autrement, séparé les relations propres entre rubrique|categories et les contenu linguistiques (en se basant sur la table "langue")
    table categories
    cat_id, statut, date_cree (le statut pour : valide ou non valide, donc 0 ou 1)
    1, 1, 2010-04-10
    2, 0, 2010-04-10
    3, 1, , 2010-04-10
    etc ...
    table categories_lang
    cat_id, lang_id, nom, date_creation
    1, 1, cat_un
    1, 2, cat_one
    2, 1, cat_deux
    2, 2, cat_two
    etc ...

    table rubrique
    rubrique_id, statut, date_cree
    1, 1, 2010-04-10
    2, 0, 2010-04-10
    3, 1, 2010-04-10
    etc ...
    table rubrique_lang
    rubrique_id, lang_id, nom
    1, 1, rub_un
    1, 2, rub_one
    2, 1, rub_deux
    2, 2, rub_two
    etc ...

    rubrique_et_categories
    rubrique_id, cat_id
    1, 1
    1, 2
    1, 3
    1, 4
    2, 5
    2, 6
    2, 7


    Comme tu peux voir, ce modèle est plus compliqué (malheureusement), car il y a plus de tables, tout est doublé, du moins, les données propres séparées du contenu linguistique, mais c'est théoriquement comme ceci que la Bdd devrait être conçue. (je dis bien théoriquement).
    A l'usage, pour récupérer les contenus, tout est une question de jointure.

    Tu remarqueras d'ailleurs que j'ai rajouté par endroit 2 champs : un statut et une date de création.
    Ceci est évidemment volontaire pour mieux te rendre compte que, si tu souhaite avoir ce genre d'infos, et bien si on ne sépare pas les choses, il va avoir un phénomène de répétition sur certaines données.
    A titre d'exemple, et théoriquement, si on décide de ne pas proposer/afficher une catégorie (pour X ou Y raison), il n'y a pas lieu de répéter cette info pour chaque langue (le statut).
    Même chose pour la date de création de la catégorie par exemple.


    Tout ceci est juste pour information, il est évident que tu est le seul à savoir si cela correspond ou pas à se que tu souhaite faire.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Bonjour et Merci RunCodePhp pour ta reponse bien detailee!
    Aussi, j'ai jamais vraiment adhéré d'utiliser des noms comme clés primaire, mais plutôt des IDs, comme pour la langue.
    J'aurais donc créé une table "langue" avec au moins 2 champs :
    lang_id, code
    1, fr
    2, en
    etc ...
    je sais mais dans ces exemple, j'utilise fr et en juste pour simplifier les choses

    cat_id, statut, date_cree (le statut pour : valide ou non valide, donc 0 ou 1)
    1, 1, 2010-04-10
    2, 0, 2010-04-10
    3, 1, , 2010-04-10
    etc ...
    table categories_lang
    cat_id, lang_id, nom, date_creation
    1, 1, cat_un
    1, 2, cat_one
    2, 1, cat_deux
    2, 2, cat_two
    etc ...
    c'est bien ce que j'avais en tete, sans le champs valide et date mais ca me paraissait un peu bizarre d'avoir une table avec un seul champ!!
    du coup, voila ce que je vais faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    table menu (id_menu, id_cat, valid, dt) : // melange de themes, rubriques et categories, j'utilise 'y' et 'n' pour les champs boolean
    1    1    y     2009-04-29
    2    1    y     2009-04-29
    3    2    y     2009-04-29
    4    2    y     2009-04-29
    5    2    y     2009-04-29
    ...
     
    table menu_traductions (id_menu, lang, libelle) :
    1    fr    Bonjour
    1    es    Hola
    1    en    Hello
    2    fr    Bonne nuit
    2    en    Good night
    ...
     
    table categories (id_cat, libelle) :
    1    Theme
    2    Rubrique
    3    Categorie
    ...
    j'ai par contre du mal a voir comment creer la table qui permettra de constituer le menu qui est de 3 niveaux :
    "Theme 1" contiendra "Rubrique 1" qui contiendra "categorie 1", "categorie 2", "categorie 3", ...

    oh lalaaaa, une vrai prise de tete!!

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    j'ai par contre du mal a voir comment creer la table qui permettra de constituer le menu qui est de 3 niveaux :
    "Theme 1" contiendra "Rubrique 1" qui contiendra "categorie 1", "categorie 2", "categorie 3"
    Tu parle de rubrique, mais on pourrait aussi "niveau" ou "arborescence".
    En faite, c'est ni plus ni moins comme sur PC, un répertoire qui contiendrait d'autres répertoires, et ces derniers, des fichiers.
    Mais le terme "rubrique" reste correcte. C'est juste pour se le représenter différemment.

    Il me semble avoir donner un bon exemple (pas très bien présenté peut être).
    Il faut 3 tables, il me semble difficile d'en faire moins (comme vouloir le faire avec 2 tables seulement).
    Je ne sait pas si je parviendrais à le formuler autrement (j'suis pas prof, que veux tu).

    Il faudrait une première table, qui elle se contenterait de contenir les différentes rubriques.
    Table "rubriques"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ID  | valid
    ----------
    1   | y
    2   | y
    3   | n
    La même, mais cette fois pour la séparation donnée/langue.
    Table "rubriques_traduction"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ID  | lang | libelle
    -----------------
    1   | en   | rub_1_EN
    1   | fr   |  rub_1_FR
    2   | en   | rub_2_EN
    2   | fr   | rub_2_FR
    3   | en   | rub_3_EN
    3   | fr   | rub_3_FR
    (sorry pour les noms bidons, et pas très top ... m'enfin, on fait c'qu'on peu)
    Les champs ID et lang devront être tous 2 la clé primaire, donc une clé double.
    Exemple : PRIMARY KEY (ID, lang)
    (Faudra faire de même pour la table "menu_traductions")
    Maintenant, on a les rubriques. C'est comme pour les menus, il y a rien de plus.

    Reste une table pour lier chaque menu à aux rubriques (ou inversement).
    Table "rubriques_menu"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    id_rub | id_menu
    -----------------
    1      | 1
    1      | 2
    1      | 3
    1      | 4
    2      | 5
    2      | 6
    2      | 7
    Là aussi il faudra créer une clé double.
    PRIMARY KEY (id_rub, id_menu)


    j'ai par contre du mal a voir comment creer la table qui permettra de constituer le menu qui est de 3 niveaux
    Tu est sûr qu'il y a 3 niveau ?
    J'en vois que 2 : 1 Rubrique (niveau 1) contient une séries de menus (niveau 2).
    Peut importe le nombre de rubriques (1 ou 10), et peu importe ne nombre de menus.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Tu est sûr qu'il y a 3 niveau ?
    J'en vois que 2 : 1 Rubrique (niveau 1) contient une séries de menus (niveau 2).
    Peut importe le nombre de rubriques (1 ou 10), et peu importe ne nombre de menus.
    Oui, j'en ai 3 et ca peut devenir 4 a l'avenir...
    Pour parler de choses plus concretes, voici a peu pres a quoi resemblera mon menu
    Maison, Soin & Beauté, ... (niveau 1)
    quand on clique sur "Maison" on trouve:
    Salle de bain, Salle a manger, Cuisine, ... (niveau 2)
    et quand on clique sur "Salle a manger" on trouve:
    Tables, Chaises, Plateaux, Accessoires, ... (niveau 3)
    c'est un peu comme le site de ikea.fr

    Reste une table pour lier chaque menu à aux rubriques (ou inversement).
    Table "rubriques_menu"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    id_rub | id_menu
    -----------------
    1      | 1
    1      | 2
    1      | 3
    1      | 4
    2      | 5
    2      | 6
    2      | 7
    j'ai un peu de mal a te suivre, dans ton exemple, quelle sera la table menu?
    moi je compte regrouper les elements du menu, rubriques et categories dans la meme table et les differencier par un champ comme je l'ai montre dans la table "menu"

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Oui, j'en ai 3 et ca peut devenir 4 a l'avenir...
    Pour parler de choses plus concretes, voici a peu pres a quoi resemblera mon menu
    Maison, Soin & Beauté, ... (niveau 1)
    quand on clique sur "Maison" on trouve:
    Salle de bain, Salle a manger, Cuisine, ... (niveau 2)
    et quand on clique sur "Salle a manger" on trouve:
    Tables, Chaises, Plateaux, Accessoires, ... (niveau 3)
    Ca change pas mal les choses.
    A aucun moment, ni aucun de tes exemples n'ont représentés ça.


    Ca se peut qu'il existe plusieurs moyens de le faire, mais le problème, c'est que j'utilise qu'1 seule technique, et ça depuis pas mal de temps.
    Du coup, je me suis pas vraiment penché sur le comment faire autrement.

    Je vais te le décrire, mais attention, ce n'est pas dit que c'est la meilleure façon de faire.
    D'ailleurs, et théoriquement, ça ne respecte pas les bonnes conventions de conceptions d'une Bdd, il "casse" un peu les règles.
    L'avantage, c'est qu'il est simple à mettre en oeuvre coté Bdd (c'est surement pour cette raison que certain l'adopte).
    Cependant, il a un inconvénient du coté du code Php, ça demandera de faire des trucs particuliers.
    A voir donc ...


    Le truc ici, serait de ne plus faire allusion à des rubriques, mais avoir qu'une table categories (enfin, 2 pour les langues), et la particularité c'est que des catégories contiennent d'autres catégories.
    Pour représenter ça, il y a 2 champs : cat_id, parent_id
    Du coup, on peu avoir une arborescence infinie, un nombre de niveau infini.
    Ce n'est pas pour autant qu'il faudra créer 10 ou 15 niveau, sinon ça devient un vrai labyrinthe.
    C'est donc soit même qui décide le nombre de niveau, ou d'imbrication.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Table categories
    cat_id | parent_id | valid
    --------------------------
    1      | 0      | y
    2      | 0      | y
    3      | 1      | y
    4      | 1      | n
    5      | 4      | y
    6      | 4      | y
    7      | 4      | y
    8      | 7      | y
    9      | 7      | y
    10     | 2     | y
    Ici, j'ai représenté 4 niveaux.
    Le 1er ce sont les catégories enfants 1,2 dont la catégorie parente vaut 0
    Le 2ème ce sont les cat. enf. 3,4 dont la cat. parente vaut 1
    Le 3ème les cat. enf. 5,6,7 dont la cat. parent vaut 4 (celle ci dessus)
    Le 4ème les cat. enf. 8,9 dont la cat. parent vaut 7 (celle ci dessu aussi)
    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    c(1) - p(0) [NIVEAU 1]
    --------- c(3) - p(1) [NIVEAU 2]
     
    --------- c(4) - p(1) [NIVEAU 2]
    ------------------c(5) - p(4) [NIVEAU 3]
     
    ------------------ c(6) - p(4) [NIVEAU 3]
     
    ------------------ c(7) - p(4) [NIVEAU 3]
    --------------------------- c(8) - p(7) [NIVEAU 4]
    --------------------------- c(8) - p(7) [NIVEAU 4]
     
    c(2) - p(0)
    --------- c(10) - p(2) [NIVEAU 2]
    Ici, j'ai rien fais coté langue/libellés, mais faudra une table pour ça, comme vu dans les post plus hauts.

    En espérant de ne pas m'être trompé non plus.

    Après, il faudra une table produits (ou articles, ou autre éléments, peu importe le nom) qui sera lié à tout ça, une table qui contiendra que 2 champs (cat_id, article_id), une d'un nom du genre categories2articles (indépendamment de la table articles).


    Si ceci ne correspond pas à tes attentes, faudrait peut être voir du coté des Softs, genre Open Source, et voir quelles technique il utilise.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    ah c'est pas mal ce que tu fais, j'avais pas trop pensé a ca
    par contre il y a un petit probleme: comment ferais tu pour afficher les elements du niveau 1 ou 2??
    je reflechis afin d'ameliorer ta proposition, je pense rajouter une colonne "niveau"...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    oh lalaaaaaa, je m'arrache les cheveux!!
    je voulais faire quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Table categories
    cat_id | niveau  | libelle // je mets directement le libellé pour simplifier
    --------------------------
    1      | 1      | Maison
    2      | 1      | Soins & Beauté
    3      | 2      | Salon
    4      | 2      | Salle à manger
    5      | 3      | Tables
    6      | 3      | Chaises
    7      | 2      | Huiles
    8      | 2      | Savons
    9      | 2      | Parfums
    10     | 3      | Savon marseilles
    mais le probleme c'est que 1 element de niveau 3 peut appartenir a plusieurs elements de niveau 2.
    Ex: Tables (niv 3), fera parti de Salon et Salle a manger (niv 2)
    ou pourrais je tout simplement creer une autre table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Table categories
    id_niv2 | id_niv3
    --------------------------
    5      | 3
    5      | 4
    6      | 4
    6      | 3
    meme si elle fait reference a la meme table???

    je commence a envisager la solution suivante, qui sera la plus normalisée mais peut etre casse tete:
    table "menu_niveau1": (id_niv1, libelle)
    "menu_niveau2": (id_niv2, libelle)
    "menu_niveau3": (id_niv3, libelle)
    "menu_niveau1_niveau2": (id_niv1, id_niv2)
    "menu_niveau2_niveau3": (id_niv2, id_niv3)

    là aussi je ne parle pas des traductions pour des raisons de simplicité

    qu'en penses tu?

  9. #9
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 690
    Points : 20 211
    Points
    20 211
    Par défaut
    Pour ton arborescence de catégorie , je pense que le plus intéressant est de se tourner vers une représentation intervallaire.
    Ce n'est pas évident à saisir de prime abord mais c'est très performant et flexible à l'utilisation.
    Par contre tu risques de trouver confronter au même problème pour les sous catégorie appartenant à 2 catégories parentes
    Plus d'info ici : http://sqlpro.developpez.com/cours/arborescence/


    Pour le multi langue la solution de RunCodePhp est à mon avis la bonne. Un petit comparatif de diverses possibilité pour les bdd multilangue :
    http://grunkslife.blogspot.com/2010/...ltilingue.html
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Pour ton arborescence de catégorie , je pense que le plus intéressant est de se tourner vers une représentation intervallaire.
    Ce n'est pas évident à saisir de prime abord mais c'est très performant et flexible à l'utilisation.
    Par contre tu risques de trouver confronter au même problème pour les sous catégorie appartenant à 2 catégories parentes
    Plus d'info ici : http://sqlpro.developpez.com/cours/arborescence/
    Ah ouais, là c'est bien complique, et j'ai pas trop envie de me lancer dans ce genre de procedure!! je vais peut etre devoir repenser le menu afin d'avoir que 2 niveau max, mais c'est pas gagné!!

    our le multi langue la solution de RunCodePhp est à mon avis la bonne. Un petit comparatif de diverses possibilité pour les bdd multilangue :
    http://grunkslife.blogspot.com/2010/...ltilingue.html
    Oui, c'est bien ce que j'utiliserai mais j'en parle pas trop dans les exemples pour simplifier un peu la comprehension...

  11. #11
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par grunk
    je pense que le plus intéressant est de se tourner vers une représentation intervallaire.
    Ce n'est pas évident à saisir de prime abord mais c'est très performant et flexible à l'utilisation.
    C'est vachement abstrait comme type de représentation ... chaud les marrons

    Ce qui est déroutant, c'est le fait de faire une soustraction entre la valeur de 2 champs (l'intervalle en faite) pour connaitre les familles.
    Même mieux, il faut modifier les valeurs de toutes une famille (voir toutes les familles en cascade) en cas d'intercalation (c'est du Français ça : intercalation ? J'ai un doute ...).
    Faut un code sacrément robuste, sinon, on risque de passer de la petite culotte à la boite de cassoulet sans crier garde.

    Aucune comparaison n'est à mon avis possible entre un concept simple comme parent/enfant et celui ci (intervalles).


    Mise à part ça, sans nulle doute que ce concept soit digne d'intérêt.
    Les nombreuses requêtes et autres procédures stockées sont vraiment les biens venues, voir indispensables pour aborder un concept pareil.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  12. #12
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par redah75 Voir le message
    mais le probleme c'est que 1 element de niveau 3 peut appartenir a plusieurs elements de niveau 2.
    Ex: Tables (niv 3), fera parti de Salon et Salle a manger (niv 2)
    ou pourrais je tout simplement creer une autre table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Table categories
    id_niv2 | id_niv3
    --------------------------
    5      | 3
    5      | 4
    6      | 4
    6      | 3
    meme si elle fait reference a la meme table???
    Personnellement, c'est comme ça que je ferais : une table à part qui contient la hiérarchie.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    @RunCodePhp: dans ton exemple de la table categories, comment ferais tu pour afficher les elements du niveau 1 ou 2?? en gros comment peux tu faire la separation entre differents niveaux mis a part parent_id=0

    Merci grunk et _Mac_ pour votre participation

  14. #14
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par redah75;
    @RunCodePhp: dans ton exemple de la table categories, comment ferais tu pour afficher les elements du niveau 1 ou 2?? en gros comment peux tu faire la separation entre differents niveaux mis a part parent_id=0
    Le principe est simple, car se sera le fait qu'une catégorie parente soit aussi un enfant (ou fille).
    En somme, tout tient sur l'existence ou non, est c'est en faisant les requêtes SQL, et une vérification.
    Il n'est pas nécessaire d'avoir le niveau dans la Bdd, car c'est le fait d'entrer dans une nouvelle branche qui permettra de le savoir. (ça sera du Php en faite).

    La seule particularité, ce sont les toutes 1ères catégories, (je dirais le NIVEAU 0 (au lieu de 1) comme parent vaut 0), c'est l'exception.
    Cette valeur est donc connue d'avance, et ne peut être autrement.

    Partant de là, pour créer le menu, et représenter l'arborescence, il faut d'abord, en 1er, récupérer les catégories dont le parent vaut 0.
    Ensuite, pour les autres requêtes, les autres niveaux, il peut avoir 2 techniques :
    - Soit on exploite une fonction récursive.
    - Soit on crée une fonction qui va contenir toutes les requêtes imbriquées.

    Bon, pour la 2ème, ce ne sera pas possible si on a des niveaux très élevés. M'enfin, je pars du principe que 4 niveaux est un maximum qu'on se fixe soit même, car pour un site Web, au-delà c'est un labyrinthe, très déroutant pour un visiteurs lambda.

    Si tu n'est pas très à l'aise en Php, et particulièrement avec les fonctions récursives, la 2 technique sera plus simple. Il y aura un peu plus de codes, c'est tout.
    Les 2 donneront le même résultat au bout de toute manière.

    Un exemple (juste le principe) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    // 1ère requête : Les catégories principale (Niveau 0)
    SELECT c.cat_id, c.parent_id, ct.libelle FROM categories c JOIN categories_trad ct ON ct.cat_id = c.cat_id WHERE c.parent_id = 0 AND ct.lang = 'fr'
     
    // total de catégories
    $tot_cat_0 = mysql_num_rows();
    if ((int)$tot_cat_0 > 0) {
    	// On boucle sur les catégories
    	while (...etc ...) {
    		// [ NIVEAU 0]
    		echo 'niv0 | '.$cat0['libelle'].'<br />';
    		//
    		SELECT c.cat_id, c.parent_id, ct.libelle FROM categories c JOIN categories_trad ct ON ct.cat_id = c.cat_id WHERE c.cat_id = $cat_0['parent_id'] AND ct.lang = 'fr'
     
    		// total de catégories
    		$tot_cat_1 = mysql_num_rows();
    		if ((int)$tot_cat_1 > 0) {
    			// On boucle sur les catégories
    			while (...etc ...) {
    				// [ NIVEAU 1]
    				echo 'niv1 | '.$cat1['libelle'].'<br />';
    				//
    				... etc ... etc ... même principe ...
    			}
    		}
    	}
    }
    C'est donc juste un exemple, le principe.
    Le minimum ici sera de se créer des fonctions (il y en aura plusieurs, c'est certain) qui s'occuperont à récupérer les infos selon se qu'on voudra faire.
    Après, tout est une question de présentation, du HTML (et CSS).
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  15. #15
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 690
    Points : 20 211
    Points
    20 211
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    C'est vachement abstrait comme type de représentation ... chaud les marrons

    Ce qui est déroutant, c'est le fait de faire une soustraction entre la valeur de 2 champs (l'intervalle en faite) pour connaitre les familles.
    Même mieux, il faut modifier les valeurs de toutes une famille (voir toutes les familles en cascade) en cas d'intercalation (c'est du Français ça : intercalation ? J'ai un doute ...).
    Faut un code sacrément robuste, sinon, on risque de passer de la petite culotte à la boite de cassoulet sans crier garde.

    Aucune comparaison n'est à mon avis possible entre un concept simple comme parent/enfant et celui ci (intervalles).
    Je m'écarte un peu du sujet initial, mais ce type de représentation prend tout son sens dans des cas comme les catégories qui on des ratios insert/select faible. L'insertion est en effet plus contraignante que sur un système parent/enfant classique.
    En revanche là on gagne énormément (comme décrit dans l'article) c'est à la recherche de noeud spécifique : pas de récursivité. Donc si tu as 12 niveau de catégorie pas besoin d'une boucle pleine de requête pour afficher ton arbre.

    Mais en effet si redah75 souhaite se limiter à 2 ou 3 niveau de profondeur , le jeu n'en vaut pas la chandelle.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Un exemple (juste le principe) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    // 1ère requête : Les catégories principale (Niveau 0)
    SELECT c.cat_id, c.parent_id, ct.libelle FROM categories c JOIN categories_trad ct ON ct.cat_id = c.cat_id WHERE c.parent_id = 0 AND ct.lang = 'fr'
     
    // total de catégories
    $tot_cat_0 = mysql_num_rows();
    if ((int)$tot_cat_0 > 0) {
    	// On boucle sur les catégories
    	while (...etc ...) {
    		// [ NIVEAU 0]
    		echo 'niv0 | '.$cat0['libelle'].'<br />';
    		//
    		SELECT c.cat_id, c.parent_id, ct.libelle FROM categories c JOIN categories_trad ct ON ct.cat_id = c.cat_id WHERE c.cat_id = $cat_0['parent_id'] AND ct.lang = 'fr'
     
    		// total de catégories
    		$tot_cat_1 = mysql_num_rows();
    		if ((int)$tot_cat_1 > 0) {
    			// On boucle sur les catégories
    			while (...etc ...) {
    				// [ NIVEAU 1]
    				echo 'niv1 | '.$cat1['libelle'].'<br />';
    				//
    				... etc ... etc ... même principe ...
    			}
    		}
    	}
    }
     
    C'est donc juste un exemple, le principe.
    Le minimum ici sera de se créer des fonctions (il y en aura plusieurs, c'est certain) qui s'occuperont à récupérer les infos selon se qu'on voudra faire.
    Après, tout est une question de présentation, du HTML (et CSS).
    j'ai du etre fatigué quand j'ai lu ta reponse #6, j'ai pourtant fait une simulation et ca me paraissait compliqué d'afficher les elements de niveau 1, 2 et 3... ta methode est vraiment bien mais je pense qu'elle represente 2 inconvenients:
    1- tu ne peux pas afficher directement les elements de niveau 2 ou 3, tu es obligé de passer par le niveau 1 pour recuperer les id qui te permettront d'aller plus loin
    2- un element de niveau 3 par ex ne peut pas appartenir a plusieurs elements de niveau 2, sauf si on procede a une duplication de l'element niveau 3!!

    j'ai peut etre trouvé une solution qui reprend ton principe et un peu amelioré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Table categories
    id_element | niveau  | libelle // je mets directement le libellé pour simplifier
    --------------------------
    1      | 1      | Maison
    2      | 1      | Soins & Beauté
    3      | 2      | Salon
    4      | 2      | Salle à manger
    5      | 3      | Tables
    6      | 3      | Chaises
    7      | 2      | Huiles
    8      | 2      | Savons
    9      | 2      | Parfums
    10     | 3      | Savon marseilles
     
    Table categories_dependances
    id_element | id_dependence
    --------------------------
    1      | 3 // Maison -> Salon
    1      | 4 // Maison -> Salle a manger
    3      | 5 // Salon -> Table
    4      | 5 // Salle a manger -> Table
    2      | 7 // Soin & beaute -> Huiles
    2      | 8 // Soin & beaute -> Savons
    8      | 10 // Savons -> Savon de Marseilles
    ...
    qu'en pensez vous?

  17. #17
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    qu'en pensez vous?
    Comme ça, vite fait, je dirais que ça va pas
    Passe encore pour la 1ère table, mais la 2ème j'ai du mal à adhérer.


    A mon sens, tu recherche avant tout la simplicité, et par conséquent ce serait le modèle qu'a évoqué @_Mac_ qui serait le plus simple.
    Il donne automatiquement le niveau du fait que c'est le nombre de tables et leur dépendances entre elles qui qui le donne.
    Elles sont les une imbriquées autres. Très simple comme principe.

    Si je ne dis pas de bêtise, il me semble qu'à l'époque de Mambo (ex. Joomla) c'est ce modèle qui était utilisé (Section / Catégories / Items).
    Mais il doit en avoir d'autres qui l'exploite, c'est certain.

    Le modèle que je t'ai proposé (qui n'est pas de mon invention, loin de là) est lui adopté par osCommerce, Spip, WordPress (pas sûr quand même) et peut être Joomla (mais là aussi, pas sûr).
    Mais j'en connais peu de Softs, mais là aussi c'est certain que d'autres l'utilisent.

    Et après, c'est le modèle qu'à évoqué Grunk. Mais là, je suis incapable de te dire ne serait ce 1 Soft qui l'utilise. Mais c'est certain qu'il doit en avoir.


    Au final, tu as déjà au moins sous le coude 3 modèles, 3 concepts différents, chacun ont leurs avantages et inconvénients, mais ils tous fait leur preuves, et encore aujourd'hui.
    Pourquoi chercher à réinventer la roue ?

    Si tu estime que ces 3 propositions ne correspondent pas à tes attentes, et bien prospecte du coté des Softs (Open Source), et un, voir plusieurs qui se rapprocherait au tiens. Ils ont tous, sans exceptions adopté une technique, et surement pas au hasard.

    En tout cas, c'est ainsi que je procède, du moins, pour des points aussi importants.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Comme ça, vite fait, je dirais que ça va pas
    Passe encore pour la 1ère table, mais la 2ème j'ai du mal à adhérer.

    A mon sens, tu recherche avant tout la simplicité, et par conséquent ce serait le modèle qu'a évoqué @_Mac_ qui serait le plus simple.
    Il donne automatiquement le niveau du fait que c'est le nombre de tables et leur dépendances entre elles qui qui le donne.
    Elles sont les une imbriquées autres. Très simple comme principe.
    ben au fait la 2e table que j'ai proposé "categories_dependances" est exctement la meme chose que j'ai cite dans le message #8 et que _MAC_ a confirmé dans le message #12, je ne comprends donc pas trop ce que tu veux dire par "le modèle qu'a évoqué @_Mac_ qui serait le plus simple" )

    Au final, tu as déjà au moins sous le coude 3 modèles, 3 concepts différents, chacun ont leurs avantages et inconvénients, mais ils tous fait leur preuves, et encore aujourd'hui.
    Pourquoi chercher à réinventer la roue ?
    PArles tu de ta solution, celle que _MAC_ a confirmé et celle de grunk (intervallaire) ??

    comme tu dis, j'aime bien la simplicite j'aime vraiment bien ta solution, mais:
    1- peux tu afficher directement les elements de niveau 2 ou 3, sans etre obligé de passer par le niveau 1 pour recuperer les id... ?
    2- comment ferais tu pour faire appartenir un element de niveau 3 a plusieurs elements de niveau 2 ??

  19. #19
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    ben au fait la 2e table que j'ai proposé "categories_dependances" est exctement la meme chose que j'ai cite dans le message #8 et que _MAC_ a confirmé dans le message #12, je ne comprends donc pas trop ce que tu veux dire par "le modèle qu'a évoqué @_Mac_ qui serait le plus simple" )
    J'en suis pas sûr, pas certain que le modèle que _MAC_ proposait serait une correction.
    M'enfin, je m'emmêle peut être les pinceaux aussi, avec tous ces noms qui changent à chaque fois.


    Ceci dit, je ne peux pas donner un avis sur ce que tu est en train de faire, car ça demanderait au moins de l'utiliser, pour justement voir quelle serait ces avantages et inconvénients.
    Mais comme je l'avais dit au tout début, j'utilise qu'un seul modèle, et ça depuis longtemps.
    Impossible donc d'en dire plus, sinon qu'au feeling. Autant dire pas grand chose.


    Pour un modèle très simple, le plus simple à mon sens, c'est d'avoir des tables les une dépendantes des autres, du coup, il y a pas besoin de faire allusion au niveau, le nombre de tables c'est leur niveau.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Table Sections (Niveau 1)
    sec_id | valide
    ---------------
    1       | y
    2       | y
     
    Table Rubriques (Niveau 2)
    rub_id | sec_id | valide
    1       | 1       | y
    2       | 1       | y
    3       | 2       | y
     
    Table Catégories (Niveau 3)
    cat_id | rub_id | valide
    1       | 1       | y
    2       | 1       | y
    4       | 2       | y
    5       | 2       | y
    6       | 2       | y
    C'est de ce modèle, ou de concept dont je parlais.
    Au lieu de donner comme nom Sections/Rubriques/Catégorie on peu les appeler Niveau1/Niveau2/Niveau3.
    Et si on veux 4 niveaux, faut rajouter une nouvelle table.
    Théoriquement, les produits ne pourront pas (ou devraient pas) être liés ni aux Sections ni aux Rubriques, mais que aux Catégories. Ceci peut être un inconvénient.
    Ca reste néanmoins un modèle utilisés par certains Softs.


    1- peux tu afficher directement les elements de niveau 2 ou 3, sans etre obligé de passer par le niveau 1 pour recuperer les id... ?
    Je ne vois pas trop où tu veux en venir, mais comme ça, je dirais oui.
    Si on a un ID de catégorie, on pourra afficher tous les produits liés à celle ci.
    A coté de ça, on aura pris soin d'optimiser son code, comme proposer directement l'arbre dans l'URL.
    Pour le 1er niveau : -http://...page.php?cats=1
    Pour le 2ème niveau : -http://...page.php?cats=1-10
    Pour le 3ème niveau ça donne : -http://...page.php?cats=1_10_3
    Il faut ruser un peu quoi


    2- comment ferais tu pour faire appartenir un element de niveau 3 a plusieurs elements de niveau 2 ??
    Il ne faut pas résonner avec le niveau, mais uniquement en catégories.
    On peu placer n'importe quelle catégories dans une autre catégorie, et même lier une catégorie enfant avec elle même comme parent (10, 10), c'est absurde, mais c'est possible, car rien ne l'empêche coté Bdd.

    Mais faut pas trop se focaliser sur ce point, car même si c'est possible, il vaut mieux ne pas le faire de trop (tout juste 1 fois ou 2), sinon ça revient à proposer les mêmes produits partout.
    Le client ne va plus rien comprendre, ça débouche sur une navigation chaotique.
    Il vaut mieux le faire coté produits, lier des produits avec des catégories différentes.
    C'est plus intéressant à mon avis, et si on réfléchi bien, on peu obtenir le même résultat, mais avec la possibilité de le faire plus finement, comme lier juste ceux que l'on veux.
    Faut faire gaffe aussi de dupliquer des catégories et les produits, au bout c'est le souk garantie.

    Il n'y a pas de questions à se poser sur ce modèle, car on peu tout faire, tout représenter, et même toutes les absurdités aussi, c'est dire.
    Ca fait parties des inconvénient d'ailleurs, comme le modèle intervallaire aussi à mon avis.
    C'est normal, car ces 2 modèles "cassent" un peu les règles de bonnes conception d'une Bdd, tout ça pour une question d'optimisation (à mon avis).
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Franchement les gars, chapeau!
    merci enormement pour toutes ces reponses qui m'ont bien ouvert les yeux sur des choses que j'ignorais.
    un grand merci a RunCodePhp pour tout le temps que tu m'as consacre et tes longs messages bien detailles et expliqués...

    maintenant, il ne me reste plus qu'a me metre au travail pour concevoir ce menu, mais avant tout, je dois peut etre revoir l'architecture/ergonomie du menu afin de simplifier la navigation...

    demain soir je pars en congé pour 3 semaines et demi, wow, ca va faire du bien, et je vous tiendrai au courant dès mon retour.

    j'aurais 2 dernieres choses a vous demander, je vous dis ce que c'est mais on en reparlera plus tard:
    1- quelle est la meilleure structure pour creer des tables pour les articles qui sont de nature differente: chaussure, vases, chaises, tables, ...??? ce qui me pose probleme, c'est plutot les chaussures, faut il faire qlq chose du genre ?? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    articles (id, categorie, titre, descriptif, ...)
    articles_details (id_article, reference, dimensions, poids, couleur, matiere_de_fabric, quantite, pointure, ...)
    devrais-je tout melanger dans la table articles_details ? c'est a dire que s'il s'agit de chaussures, le champs 'pointure' sera rempli mais pas dimensions, et s'il s'agit d'une table, le champ 'pointure' sera vide!!

    ou sinon j'ai une autre idee, TRES normalisee mais bon, je ne sais pas si ca vaut le coup!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    articles (id, categorie, titre, descriptif, ...)
    articles_details (id_article, id_colonne, text)
    articles_colonnes (id_colonne, libelle):
    Table articles
    id_article | cat | titre | descriptif
    ------------------------------------
    1          |  3  | ... | ...
    2          |  7  | ... | ...
     
    Table articles_colonnes
    id_colonne | libelle
    -------------------------
    1          | pointure
    2          | taille
    3          | quantité
    4          | couleur
    5          | poids
    ...
     
    Table articles_details
    id_article | id_colonne | text
    ---------------------------------
    1          | 1          | 41,5
    1          | 3          | 19
    1          | 4          | rouge
    1          | 5          | 400g
    Bon là aussi pour des raisons de simplicite je ne parle pas des langues, par contre est il mieux de mettre les couleurs: "Rouge", "Blanc" dans une autres table??

    2 quelle est la meilleure facon de gerer/creer la reference d'un article. Ex. pour les chaussures: chaus17854roug. ou avez vous des idees meilleures pour le renommage?

    Merci infiniment, je vous dois a tous une bierre

Discussions similaires

  1. Gérer les couleurs du site avec la base de données.
    Par ginkas31 dans le forum Webdesign & Ergonomie
    Réponses: 6
    Dernier message: 06/12/2008, 03h13
  2. relier mon site avec la base de donnée amadeus
    Par inizar dans le forum Débuter
    Réponses: 2
    Dernier message: 10/10/2008, 22h30
  3. Réponses: 1
    Dernier message: 29/02/2008, 02h56
  4. site collection et base de données
    Par lahcentsdi dans le forum SharePoint
    Réponses: 4
    Dernier message: 16/12/2007, 03h10
  5. Réponses: 3
    Dernier message: 03/10/2007, 01h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo