Bonjour,

Le but de mon app, c'est d'avoir un produit une voiture Audi, qui à différentes couleurs (rouge, blanche, noir). Le prix de cet Audi varie selon sa couleur, de plus si jamais une voiture n'as aucune option, elle à un prix de base automatiquement. Je souhaitais donc savoir comment puis-je gérer cela ?

J'ai pensé à avoir une table voiture, couleurs et une table pivot couleur_voiture, et y insérer le prix à l'intérieur ?

Voiture:
    -> Nom
    -> Prix
    -> Photo
Couleur:
    ->Nom
Couleur_Voiture
    ->Couleur_id
    ->Voiture_id
    ->Prix

12 réponses


Personnellement si j'étais toi, je partirai du début, càd :
1) Définis un prix de base par modèle de voiture sans aucune couleur et options
2) Définis un prix par couleur et
3) Définis un prix par option

Ensuite tu fais tes tables de cette manière,

- Table 1 => Modèles
     - Nom du modèle
     - Prix de base

   Table 2 => Couleurs 
        - Nom couleur
        - Prix pour la couleur

    Table 3 => Options 
        - Nom de l'option 
        - Prix

      Et ensuite tu sais récuperer le prix d'un produit en fonction de sa couleur et de ses options.

      Et tu peux même si tu désires enregistrer le produit (car commande ou quoi)

      Créer une 4eme table - Produit avec les 3 id des différentes tables + prix final :)
Taiga
Auteur

Merci pour ton message, pour le coup j'ai seulement 2 tables, Voiture et Couleur, au début j'avais fait ce système la, une voiture un prix de base puis celui-ci augmente selon sa couleur. Le problème étant que l'administrateur va connaître le prix de la voiture avec sa couleur, et ce système obligerais l'utilisateur à calculer le prix sans couleur etc...

De plus ce système la, ne peut pas fonctionner, si demain j'ai une moto à la place d'une voiture (table qui se renomme en véhicule du coup), cela voudrais dire que ma couleur à toujours le même prix, et c'est le prix du véhicule qui change ? Est-ce la bonne solution ?

Bonjour,

Si c'est adapté à ton cas de figure tu peux pour te simplifier la vie et créer 2 tables :

  • Une pour les véhicules
  • Une pour les déclinaisons (options/couleurs/autre)

Et tu enregistre les tarifs dans la table des déclinaison avec un lien vers l'ID du véhicule qui correspond :

Véhicules
==========
1 : Audi A5
2 : Audi A8
3 : Moto Harley

Déclinaisons
===========
1 : "Version standard" - 10000 € - vehicule_id : 1
2 : "Version rouge" - 12000 € - vehicule_id : 1
3 : "Version rouge avec clim" - 15000 € - vehicule_id : 1
4 : "Version standard" - 15000 € - vehicule_id : 2
5 : "Version Toutes options" - 20000 € - vehicule_id : 2
6 : "Version Franges cuir" - 22000 € - vehicule_id : 3

Comme ça tu peux te créer autant de déclinaisons que tu veux avec autant de tarif.

Tu n'as plus de tarifs de base + prix de l'option.

Je pense que c'est plus souple à l'usage car moins restrictif.
Tu pourras sans soucis, un jour faire un prix pour une version spéciale.

Kaimite

Taiga
Auteur

Salut, merci pour ta réponse, cette solution fonctionne bien effectivement, cependant je me demande si le nom de la déclinaison doit être 'open' à l'utilisateur ?

Si je prend l'exemple de Tshirt, j'ai une variante taille, et je vais avoir une liste déroulante qui va afficher

Tshirt Imprimé
Taille: XS/S/M/L/XL

Ce pourquoi je tenais à ma table variantes ;)

je l'ai nommée "déclinaisons" mais libre à toi de le nommer autrement :)

Mais si tu as des t-shirts tu n'est plus sur un table de véhicules mais sur une table produits et en face une table tarifs... :)

Kaimite

Taiga
Auteur

Yep, mais pour le coup, si j'ai une table produit qui as des déclinaisons et une table tarifs, je doit bien avoir 3 tables non ?

pour les declinaison je ferait un truc plus generique. plutot que d'avoir la somme en dur pourquoi pas un multiplicateur, avec une declinaison, une description et plusieur multiplicateur selon le type de model et un tableu d.id vehicule. par exemple

rouge - couleur rouge vehicule - [1.4, 1.6, 1.8] - [id1, id2]

et du coup tu a tous les multiplicateur de tes produit et tu peut utiliser la couleur rouge partous une fois elle a une lisaison selon le tableau d.id et tu peut faire un multiplicateur par model de voiture.

c'est peut etre pas opti mais je viens de finir de travailler et je suis ko ^^

Taiga
Auteur

Merci pour ta réponse, j'ai pris l'exemple de voiture pensant que ça allais être plus simple pour l'explication. Sauf qu'au final, c'est l'exemple le plus vaste étant donnée qu'en déclinaisons vous pensez à des modèles, couleurs et autres options haha !

Mon app traite des produits avec une seule déclinaison possible uniquement, ce pourquoi je me disais qu'une table variantes associé au produit était une bonne solution ?

il y aura 2 declinaisons de ton produit réellement, le standard et avec opions. Du coup la table produit vas comprendre les info de ton produit (titre, description, photo) et tu aura dans ta table déclinaisons les 2 declinaison associé au produit qui contiendrons chacun le prix de la déclinaison (standard et options) et l'id produit associé

Taiga
Auteur

D'accord, mais du coup je suis obligé d'avoir quelques chose comme :

T-shirt imprimé text -> Taille S 20€
T-shirt imprimé text -> Taille M 23€
T-shirt Dessin -> Taille S 30€

Du coup mes tailles sont dupliquées à chaque fois

Je pensais plus à avoir un formulaire où je resneigne toutes mes déclinaisons et dans le formulaire produit selectionner les déclinaisons que j'ai besoins et y mettre leurs prix (à la prestashop)

je verrais bien un truc comme ça;

table produit:
    - photo
    - titre
    - description
    - id_declinaison

table déclinaison:
        - titre
        - id_produit
        - id_tarif

table tarif:
        - nom
        - prix

parce que du coup si tu viens à ajouter la gestion de remise plus tard, tu peux le faire directement au niveau de la table tarif et du coup tu ne casses pas la structure de base de tes produits.

Je travaille beaucoup sur le développement autour des produits Microsoft entreprise ou divalto (petit ERP de gestion commerciale) et ils gèrent les infos articlent dans la base de cette façon-là. quand tu créer un produit par exemple avec le crm Microsoft tu crée un tarif qui va contenir les remises, le prix le currency, tu créais une unité de mesure associée au tarif puis tu créais la famille de produit contenant les produits associés au tarif et du coup aux déclinaisons.

Taiga
Auteur

Très bien, merci pour l'infos, et si demain je suis amméné à avoir 2/3/4 déclinaisons ?

Je ne sais pas si tu à déjà utilisé prestashop ?

Je touve leurs système sympa, mais je suis incapable de savoir comment il l'ont développé,

Tu créer des déclinaisons, Couleur, Taille puis tu leurs assigne des valeurs (Rouge, vert, jaune | S,M,L )
Lorsque tu créer ton produit tu as un bouton ajouter des déclinaisons tu choisis Rouge S, Rouge M, et tu assigne un tarifs.

J'aimerais bien avoir le même principe, même si moi je reste dans une optique de produit/déclinaisons/tarifs

Jusqu'as présent j'ai raisoné comme ceci:

table produit:
    - Nom
    - description

table déclinaison:
        - titre

table tarif:
        - nom
        - prix
table produit-declinaison
        - id_produit
        - id_declinaison
        - prix