par
toojee » 24 déc. 2008, 19:49
T-shirt-001, Couleur, Vert
T-shirt-001, Couleur, Rouge <-- Erreur: un produit ne doit pas avoir N couleurs à la fois
Mais on pourrait utiliser les mêmes caractéristiques pour des produits différents:
T-shirt-001, Couleur, Vert
T-shirt-001, Taille, S
T-shirt-002, Couleur, Vert
T-shirt-002, Type, S
En fait si un tshirt peut avoir plusieurs couleurs, c'est le client de la boutique qui la choisie ainsi que par exemple la taille
1. Quels types de produits comptes-tu cibler?
Tous, c'est le commerçant qui décide de ce qu'il met et il peut mettre ce qu'il veut!
2. Quels sont les critères pour déterminer le prix d'un produit
La j'hésite entre 2 options :
- soit tu définie un prix de base et tu le fais varier selon les variations justement
- soit un prix par variations meme si c'est le meme prix
3. Quels sont les critères de regroupement ? types, catégories, familles, ... de produits
alors la! avant j'avais attriburer a un produit une catégorie et sous catégorie. Mais en réfléchissant il faut pouvoir attribuer plusieurs catégorie a un produit par exemple:
- le tshirt peut aller dans mode homme
- ou tshirt
- ou promotion
En m'appuyant sur ce que tu a fait, j'ai refondu ma bdd en mettant des exemples :
Code : Tout sélectionner
-- phpMyAdmin SQL Dump
-- version 2.11.6
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Mer 24 Décembre 2008 à 18:35
-- Version du serveur: 5.0.51
-- Version de PHP: 5.2.6
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de données: `test`
--
-- --------------------------------------------------------
--
-- Structure de la table `product`
--
CREATE TABLE `product` (
`product_id` smallint(6) unsigned NOT NULL auto_increment,
`family_id` smallint(4) unsigned NOT NULL,
`active` enum('false','true') collate utf8_unicode_ci NOT NULL default 'false',
`consultation` int(11) NOT NULL,
`cdate` datetime NOT NULL,
`mdate` datetime NOT NULL,
PRIMARY KEY (`product_id`),
KEY `family_id` (`family_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
--
-- Contenu de la table `product`
--
INSERT INTO `product` (`product_id`, `family_id`, `active`, `consultation`, `cdate`, `mdate`) VALUES
(1, 1, 'true', 3, '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
(2, 1, 'true', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
(3, 2, 'true', 2, '0000-00-00 00:00:00', '0000-00-00 00:00:00');
-- --------------------------------------------------------
--
-- Structure de la table `product_details`
--
CREATE TABLE `product_details` (
`detail_id` mediumint(6) unsigned NOT NULL auto_increment,
`product_id` smallint(6) unsigned NOT NULL,
`reference` varchar(20) collate utf8_unicode_ci NOT NULL,
`prix_ht` decimal(10,2) NOT NULL,
`tva` decimal(10,2) NOT NULL,
`ecotaxe` decimal(10,2) NOT NULL,
`promotion` decimal(10,2) NOT NULL,
`poids` decimal(10,2) NOT NULL,
`ean` char(13) collate utf8_unicode_ci NOT NULL,
`brand` varchar(30) collate utf8_unicode_ci NOT NULL,
`waranty` smallint(6) unsigned NOT NULL,
`max_quantity` smallint(6) unsigned NOT NULL,
`stock_management` enum('false','true') collate utf8_unicode_ci NOT NULL,
`unit` smallint(3) NOT NULL,
`unit_alert` smallint(3) NOT NULL,
`available` date NOT NULL,
`max_delay` smallint(3) unsigned NOT NULL,
PRIMARY KEY (`detail_id`),
UNIQUE KEY `reference` (`reference`),
KEY `product_id` (`product_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;
--
-- Contenu de la table `product_details`
--
INSERT INTO `product_details` (`detail_id`, `product_id`, `reference`, `prix_ht`, `tva`, `ecotaxe`, `promotion`, `poids`, `ean`, `brand`, `waranty`, `max_quantity`, `stock_management`, `unit`, `unit_alert`, `available`, `max_delay`) VALUES
(1, 1, '8ufg515gh', '20.00', '19.60', '0.00', '0.00', '200.00', '9dfdfd15d1', 'nike', 0, 20, 'true', 5, 1, '0000-00-00', 20),
(2, 1, '8ufg51fg5fd', '22.00', '19.60', '0.00', '0.00', '200.00', 'fg4f8g4fg54', 'nike', 0, 30, 'true', 10, 1, '0000-00-00', 20),
(3, 2, '5ffg45fg', '35.00', '19.60', '0.00', '0.00', '500.00', '6df5d6gf6df', 'addidas', 0, 30, 'true', 15, 1, '0000-00-00', 0),
(4, 3, '69dfd4f548', '36.00', '19.60', '0.00', '0.00', '352.00', '2fd96f5d6f5', 'ralf lauren', 0, 10, 'true', 5, 1, '0000-00-00', 0),
(5, 3, '69dfd4f549', '39.90', '19.60', '0.00', '0.00', '355.00', '4sd54d5f', 'ralf lauren', 0, 0, 'true', 9, 1, '0000-00-00', 0);
-- --------------------------------------------------------
--
-- Structure de la table `product_family`
--
CREATE TABLE `product_family` (
`family_id` smallint(4) unsigned NOT NULL auto_increment,
`category_id` smallint(4) NOT NULL,
`title` varchar(30) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`family_id`),
KEY `category_id` (`category_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
--
-- Contenu de la table `product_family`
--
INSERT INTO `product_family` (`family_id`, `category_id`, `title`) VALUES
(1, 1, 't-shirt'),
(2, 1, 'pull');
-- --------------------------------------------------------
--
-- Structure de la table `product_images`
--
CREATE TABLE `product_images` (
`image_id` smallint(4) unsigned NOT NULL auto_increment,
`product_id` mediumint(6) unsigned NOT NULL,
`position` smallint(2) NOT NULL,
`url_thumb_image` varchar(255) collate utf8_unicode_ci NOT NULL,
`url_full_image` varchar(255) collate utf8_unicode_ci NOT NULL,
`active` enum('false','true') collate utf8_unicode_ci NOT NULL default 'false',
PRIMARY KEY (`image_id`),
KEY `variation_id` (`product_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;
--
-- Contenu de la table `product_images`
--
INSERT INTO `product_images` (`image_id`, `product_id`, `position`, `url_thumb_image`, `url_full_image`, `active`) VALUES
(4, 1, 1, 'tshirt-nike-vert-L.jpg', 'tshirt-nike-vert-L_full.jpg', 'true'),
(5, 1, 2, 'tshirt-nike-vert-S.jpg', 'tshirt-nike-vert-S_full.jpg', 'true'),
(6, 2, 0, 'tshirt-addidas-pas-de-variations.jpg', 'tshirt-addidas-pas-de-variations_full.jpg', 'true'),
(7, 3, 1, 'pull-ralfLauren-manche_courte.jpg', 'pull-ralfLauren-manche_courte_full.jpg', 'true'),
(8, 3, 2, 'pull-ralfLauren-manche_longue.jpg', 'pull-ralfLauren-manche_longue_full.jpg', 'true');
-- --------------------------------------------------------
--
-- Structure de la table `product_variations`
--
CREATE TABLE `product_variations` (
`detail_id` mediumint(6) unsigned NOT NULL,
`variation_id` mediumint(6) NOT NULL,
UNIQUE KEY `detail_id` (`detail_id`,`variation_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Contenu de la table `product_variations`
--
INSERT INTO `product_variations` (`detail_id`, `variation_id`) VALUES
(1, 2),
(1, 5),
(2, 2),
(2, 4),
(4, 8),
(5, 7);
-- --------------------------------------------------------
--
-- Structure de la table `text_product`
--
CREATE TABLE `text_product` (
`product_id` smallint(4) unsigned NOT NULL,
`language` char(2) collate utf8_unicode_ci NOT NULL,
`title` varchar(30) collate utf8_unicode_ci NOT NULL,
`description` text collate utf8_unicode_ci NOT NULL,
`cdate` datetime NOT NULL,
`mdate` datetime NOT NULL,
UNIQUE KEY `product_id` (`product_id`,`language`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Contenu de la table `text_product`
--
INSERT INTO `text_product` (`product_id`, `language`, `title`, `description`, `cdate`, `mdate`) VALUES
(1, 'fr', 'T-shirt nike', 'Ce t-shirt est magnifique!', '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
(1, 'en', 'T-shirt nike', 'This t-shirt is amazing!', '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
(2, 'fr', 'T-shirt addidas', 'Ce tshirt n''est pas mal non plus', '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
(3, 'fr', 'Pull ralf lauren', 'Avec ce pull vous n''aurez plus jamais froid!', '0000-00-00 00:00:00', '0000-00-00 00:00:00');
-- --------------------------------------------------------
--
-- Structure de la table `variations`
--
CREATE TABLE `variations` (
`variation_id` mediumint(6) unsigned NOT NULL auto_increment,
`title` varchar(20) collate utf8_unicode_ci NOT NULL,
`value` varchar(20) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`variation_id`),
UNIQUE KEY `title` (`title`,`value`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;
--
-- Contenu de la table `variations`
--
INSERT INTO `variations` (`variation_id`, `title`, `value`) VALUES
(1, 'couleur', 'rouge'),
(2, 'couleur', 'vert'),
(3, 'couleur', 'bleu'),
(4, 'taille', 'S'),
(5, 'taille', 'L'),
(6, 'taille', 'XL'),
(7, 'manche', 'longue'),
(8, 'manche', 'courte');
Donc pour t'aider, il y a 3 produit "père" et a l'intérieur des variations
- produit_id = 1, tshirt nike vert et en taille L ou vert et en taille S
- p_id= 2, tshirt addidas sans variations
- p_id=3, pull ralf lauren manche longue ou manche courte
L'utilisateur a clique sur le tshirt par exemple, il arrive sur la fiche produit avec le titre, description etc... mais surtout il doit choisir sa taille entre L ou S avant de mettre dans le panier via une combobox. Evidemment on peut rajouter d'autre couleurs, ce qui au final fait 2 combobox, une couleur et l'autre taille.
Pour le pull, une seule combobox avec le choix entre manche longue ou manche courte ( d'ailleurs un pull manche courte je crois pas que ca existe ou sa s'appelle pas comme ca ^^ )
[quote]T-shirt-001, Couleur, Vert
T-shirt-001, Couleur, Rouge <-- Erreur: un produit ne doit pas avoir N couleurs à la fois
Mais on pourrait utiliser les mêmes caractéristiques pour des produits différents:
T-shirt-001, Couleur, Vert
T-shirt-001, Taille, S
T-shirt-002, Couleur, Vert
T-shirt-002, Type, S[/quote]
En fait si un tshirt peut avoir plusieurs couleurs, c'est le client de la boutique qui la choisie ainsi que par exemple la taille
[quote]1. Quels types de produits comptes-tu cibler? [/quote]
Tous, c'est le commerçant qui décide de ce qu'il met et il peut mettre ce qu'il veut!
[quote]2. Quels sont les critères pour déterminer le prix d'un produit [/quote]
La j'hésite entre 2 options :
- soit tu définie un prix de base et tu le fais varier selon les variations justement
- soit un prix par variations meme si c'est le meme prix
[quote]3. Quels sont les critères de regroupement ? types, catégories, familles, ... de produits [/quote]
alors la! avant j'avais attriburer a un produit une catégorie et sous catégorie. Mais en réfléchissant il faut pouvoir attribuer plusieurs catégorie a un produit par exemple:
- le tshirt peut aller dans mode homme
- ou tshirt
- ou promotion
En m'appuyant sur ce que tu a fait, j'ai refondu ma bdd en mettant des exemples :
[code]-- phpMyAdmin SQL Dump
-- version 2.11.6
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Mer 24 Décembre 2008 à 18:35
-- Version du serveur: 5.0.51
-- Version de PHP: 5.2.6
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de données: `test`
--
-- --------------------------------------------------------
--
-- Structure de la table `product`
--
CREATE TABLE `product` (
`product_id` smallint(6) unsigned NOT NULL auto_increment,
`family_id` smallint(4) unsigned NOT NULL,
`active` enum('false','true') collate utf8_unicode_ci NOT NULL default 'false',
`consultation` int(11) NOT NULL,
`cdate` datetime NOT NULL,
`mdate` datetime NOT NULL,
PRIMARY KEY (`product_id`),
KEY `family_id` (`family_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
--
-- Contenu de la table `product`
--
INSERT INTO `product` (`product_id`, `family_id`, `active`, `consultation`, `cdate`, `mdate`) VALUES
(1, 1, 'true', 3, '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
(2, 1, 'true', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
(3, 2, 'true', 2, '0000-00-00 00:00:00', '0000-00-00 00:00:00');
-- --------------------------------------------------------
--
-- Structure de la table `product_details`
--
CREATE TABLE `product_details` (
`detail_id` mediumint(6) unsigned NOT NULL auto_increment,
`product_id` smallint(6) unsigned NOT NULL,
`reference` varchar(20) collate utf8_unicode_ci NOT NULL,
`prix_ht` decimal(10,2) NOT NULL,
`tva` decimal(10,2) NOT NULL,
`ecotaxe` decimal(10,2) NOT NULL,
`promotion` decimal(10,2) NOT NULL,
`poids` decimal(10,2) NOT NULL,
`ean` char(13) collate utf8_unicode_ci NOT NULL,
`brand` varchar(30) collate utf8_unicode_ci NOT NULL,
`waranty` smallint(6) unsigned NOT NULL,
`max_quantity` smallint(6) unsigned NOT NULL,
`stock_management` enum('false','true') collate utf8_unicode_ci NOT NULL,
`unit` smallint(3) NOT NULL,
`unit_alert` smallint(3) NOT NULL,
`available` date NOT NULL,
`max_delay` smallint(3) unsigned NOT NULL,
PRIMARY KEY (`detail_id`),
UNIQUE KEY `reference` (`reference`),
KEY `product_id` (`product_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;
--
-- Contenu de la table `product_details`
--
INSERT INTO `product_details` (`detail_id`, `product_id`, `reference`, `prix_ht`, `tva`, `ecotaxe`, `promotion`, `poids`, `ean`, `brand`, `waranty`, `max_quantity`, `stock_management`, `unit`, `unit_alert`, `available`, `max_delay`) VALUES
(1, 1, '8ufg515gh', '20.00', '19.60', '0.00', '0.00', '200.00', '9dfdfd15d1', 'nike', 0, 20, 'true', 5, 1, '0000-00-00', 20),
(2, 1, '8ufg51fg5fd', '22.00', '19.60', '0.00', '0.00', '200.00', 'fg4f8g4fg54', 'nike', 0, 30, 'true', 10, 1, '0000-00-00', 20),
(3, 2, '5ffg45fg', '35.00', '19.60', '0.00', '0.00', '500.00', '6df5d6gf6df', 'addidas', 0, 30, 'true', 15, 1, '0000-00-00', 0),
(4, 3, '69dfd4f548', '36.00', '19.60', '0.00', '0.00', '352.00', '2fd96f5d6f5', 'ralf lauren', 0, 10, 'true', 5, 1, '0000-00-00', 0),
(5, 3, '69dfd4f549', '39.90', '19.60', '0.00', '0.00', '355.00', '4sd54d5f', 'ralf lauren', 0, 0, 'true', 9, 1, '0000-00-00', 0);
-- --------------------------------------------------------
--
-- Structure de la table `product_family`
--
CREATE TABLE `product_family` (
`family_id` smallint(4) unsigned NOT NULL auto_increment,
`category_id` smallint(4) NOT NULL,
`title` varchar(30) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`family_id`),
KEY `category_id` (`category_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
--
-- Contenu de la table `product_family`
--
INSERT INTO `product_family` (`family_id`, `category_id`, `title`) VALUES
(1, 1, 't-shirt'),
(2, 1, 'pull');
-- --------------------------------------------------------
--
-- Structure de la table `product_images`
--
CREATE TABLE `product_images` (
`image_id` smallint(4) unsigned NOT NULL auto_increment,
`product_id` mediumint(6) unsigned NOT NULL,
`position` smallint(2) NOT NULL,
`url_thumb_image` varchar(255) collate utf8_unicode_ci NOT NULL,
`url_full_image` varchar(255) collate utf8_unicode_ci NOT NULL,
`active` enum('false','true') collate utf8_unicode_ci NOT NULL default 'false',
PRIMARY KEY (`image_id`),
KEY `variation_id` (`product_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;
--
-- Contenu de la table `product_images`
--
INSERT INTO `product_images` (`image_id`, `product_id`, `position`, `url_thumb_image`, `url_full_image`, `active`) VALUES
(4, 1, 1, 'tshirt-nike-vert-L.jpg', 'tshirt-nike-vert-L_full.jpg', 'true'),
(5, 1, 2, 'tshirt-nike-vert-S.jpg', 'tshirt-nike-vert-S_full.jpg', 'true'),
(6, 2, 0, 'tshirt-addidas-pas-de-variations.jpg', 'tshirt-addidas-pas-de-variations_full.jpg', 'true'),
(7, 3, 1, 'pull-ralfLauren-manche_courte.jpg', 'pull-ralfLauren-manche_courte_full.jpg', 'true'),
(8, 3, 2, 'pull-ralfLauren-manche_longue.jpg', 'pull-ralfLauren-manche_longue_full.jpg', 'true');
-- --------------------------------------------------------
--
-- Structure de la table `product_variations`
--
CREATE TABLE `product_variations` (
`detail_id` mediumint(6) unsigned NOT NULL,
`variation_id` mediumint(6) NOT NULL,
UNIQUE KEY `detail_id` (`detail_id`,`variation_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Contenu de la table `product_variations`
--
INSERT INTO `product_variations` (`detail_id`, `variation_id`) VALUES
(1, 2),
(1, 5),
(2, 2),
(2, 4),
(4, 8),
(5, 7);
-- --------------------------------------------------------
--
-- Structure de la table `text_product`
--
CREATE TABLE `text_product` (
`product_id` smallint(4) unsigned NOT NULL,
`language` char(2) collate utf8_unicode_ci NOT NULL,
`title` varchar(30) collate utf8_unicode_ci NOT NULL,
`description` text collate utf8_unicode_ci NOT NULL,
`cdate` datetime NOT NULL,
`mdate` datetime NOT NULL,
UNIQUE KEY `product_id` (`product_id`,`language`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Contenu de la table `text_product`
--
INSERT INTO `text_product` (`product_id`, `language`, `title`, `description`, `cdate`, `mdate`) VALUES
(1, 'fr', 'T-shirt nike', 'Ce t-shirt est magnifique!', '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
(1, 'en', 'T-shirt nike', 'This t-shirt is amazing!', '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
(2, 'fr', 'T-shirt addidas', 'Ce tshirt n''est pas mal non plus', '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
(3, 'fr', 'Pull ralf lauren', 'Avec ce pull vous n''aurez plus jamais froid!', '0000-00-00 00:00:00', '0000-00-00 00:00:00');
-- --------------------------------------------------------
--
-- Structure de la table `variations`
--
CREATE TABLE `variations` (
`variation_id` mediumint(6) unsigned NOT NULL auto_increment,
`title` varchar(20) collate utf8_unicode_ci NOT NULL,
`value` varchar(20) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`variation_id`),
UNIQUE KEY `title` (`title`,`value`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;
--
-- Contenu de la table `variations`
--
INSERT INTO `variations` (`variation_id`, `title`, `value`) VALUES
(1, 'couleur', 'rouge'),
(2, 'couleur', 'vert'),
(3, 'couleur', 'bleu'),
(4, 'taille', 'S'),
(5, 'taille', 'L'),
(6, 'taille', 'XL'),
(7, 'manche', 'longue'),
(8, 'manche', 'courte');
[/code]
Donc pour t'aider, il y a 3 produit "père" et a l'intérieur des variations
- produit_id = 1, tshirt nike vert et en taille L ou vert et en taille S
- p_id= 2, tshirt addidas sans variations
- p_id=3, pull ralf lauren manche longue ou manche courte
L'utilisateur a clique sur le tshirt par exemple, il arrive sur la fiche produit avec le titre, description etc... mais surtout il doit choisir sa taille entre L ou S avant de mettre dans le panier via une combobox. Evidemment on peut rajouter d'autre couleurs, ce qui au final fait 2 combobox, une couleur et l'autre taille.
Pour le pull, une seule combobox avec le choix entre manche longue ou manche courte ( d'ailleurs un pull manche courte je crois pas que ca existe ou sa s'appelle pas comme ca ^^ )