Bonjour,
En fait, il faut que tu construises un schéma de bdd + souple/évolutif.
Il vaut mieux que tu ait une table produits avec les caractéristiques basiques et communes à tous les types de produits :
produits :
- id_produit
- nom
- reference
- prix_ht
Dans cette table tu auras une ligne par produits
Et avoir ensuite une table dynamique avec les caractéristiques/attributs possibles + une table qui fait le lien entre les produits et les attributs.
attributs:
- id_attribut
- libelle_attribut
Dans cette table, tu auras une ligne par caractéristiques possibles quelque soit le produit : type; longueur, largeur, poids, finition, couleur...
produit_attributs :
- id_produit
- id_attribut
- valeur
Dans cette table (qui va être très grosse) tu auras une ligne par caractéristique de chaque produit et leur valeur associé.
-----------------------------
Ainsi si tu as un canapé rouge de 220x95cm ça va te faire 1 entrée dans la table produits :
ID = 1 ; NOM = "Mon beau canapé" ; REFERENCE = CANAP12548 ; PRIX_HT = 120
4 entrées dans la table attributs:
ID_ATTRIBUT = 1 ; LIBELLE_ATTRIBUT = "Catégorie"
ID_ATTRIBUT = 2 ; LIBELLE_ATTRIBUT = "Couleur"
ID_ATTRIBUT = 3 ; LIBELLE_ATTRIBUT = "Largeur"
ID_ATTRIBUT = 4 ; LIBELLE_ATTRIBUT = "Profondeur"
et 4 entrées dans la table produit_attributs :
ID_PRODUIT = 1 ; ID_ATTRIBUT = 1 ; VALEUR = "canapé"
ID_PRODUIT = 1 ; ID_ATTRIBUT = 2 ; VALEUR = "rouge"
ID_PRODUIT = 1 ; ID_ATTRIBUT = 3 ; VALEUR = 220
ID_PRODUIT = 1 ; ID_ATTRIBUT = 4 ; VALEUR = 95
L'avantage de cette approche c'est que ta liste de caractéristiques sera complètement évolutive.
A noter que ce que tu cherches à faire existe déjà, ça s'appelle un PIM (Product Information Management) et il y en a qui existe en PHP comme
Akeneo par exemple.