Гриша К.
Новичок
Вопрос по существующей структуре набора параметров (цвет, размер и т.л.) для товаров.
Здравствуйте.
В данный момент в интернет-магазине есть определенная структура БД, позволяющая определять для товаров параметры имеющие разную цены, что в дальнейшем также позволяет реализовывать фильтр по параметрам.
Краткий пример структуры БД (в полной структуре, параметры и значения параметров могут принадлежать множеству категорий товаров, + сортировка параметров и значений):
[sql]
# Имена параметров (опций)
CREATE TABLE `catalog_option` (
`option_id` int(11) NOT NULL auto_increment,
`option_name` varchar(255) NOT NULL default '',
PRIMARY KEY (`option_id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
# Значения параметров
CREATE TABLE `catalog_option_value` (
`option_value_id` int(11) NOT NULL auto_increment,
`option_id` int(11) NOT NULL default '0',
`option_value_name` varchar(255) NOT NULL default '',
PRIMARY KEY (`option_value_id`),
KEY `option_id` (`option_id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
# Значения параметров по ценам товара
CREATE TABLE `catalog_price_2_option_value` (
`price_id` int(11) NOT NULL default '0',
`option_value_id` int(11) NOT NULL default '0',
KEY `price_id` (`price_id`),
KEY `option_value_id` (`option_value_id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
[/sql]
В фильтре по параметрам, выводятся ниспадающие списки со значениями параметров для каждого параметра. Пример: http://magazin.pozvonochnik.info/catalog/16/
Из фильтра передается для каждого ИД параметра (option_id) по одному ИД значению (option_value_id), в соответвии с которыми из БД извлекаются соответсвующие товары.
Но вот в чем возникла сложность. Предположим! для каждого из товаров решено определить параметр вес, тогда к примеру в ниспадающем списке может выводиться 200 значений параметров (Вес (кг): 1, 2, 3, 4 .... 200) - это неудобно и громоздко!
У меня пока что созрело только такое решение: определять для параметров тип (ниспадающий список, поле для ввода текстовых данных, флажок и т.д.), т.е. например для параметра Вес (кг), в фильтре выводить текстовое поле для ввода значения веса, и каким-то образом извлекать товары соответвующие значению параметров (а не ИД значений параметров).
Возможно у кого-то есть опыт по решению схожей задачи, и вы мжете подсказать иду ли я в правильном направлении, или может быть посоветуете несколько иную реализацию по решению данной задачи.
Здравствуйте.
В данный момент в интернет-магазине есть определенная структура БД, позволяющая определять для товаров параметры имеющие разную цены, что в дальнейшем также позволяет реализовывать фильтр по параметрам.
Краткий пример структуры БД (в полной структуре, параметры и значения параметров могут принадлежать множеству категорий товаров, + сортировка параметров и значений):
[sql]
# Имена параметров (опций)
CREATE TABLE `catalog_option` (
`option_id` int(11) NOT NULL auto_increment,
`option_name` varchar(255) NOT NULL default '',
PRIMARY KEY (`option_id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
# Значения параметров
CREATE TABLE `catalog_option_value` (
`option_value_id` int(11) NOT NULL auto_increment,
`option_id` int(11) NOT NULL default '0',
`option_value_name` varchar(255) NOT NULL default '',
PRIMARY KEY (`option_value_id`),
KEY `option_id` (`option_id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
# Значения параметров по ценам товара
CREATE TABLE `catalog_price_2_option_value` (
`price_id` int(11) NOT NULL default '0',
`option_value_id` int(11) NOT NULL default '0',
KEY `price_id` (`price_id`),
KEY `option_value_id` (`option_value_id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
[/sql]
В фильтре по параметрам, выводятся ниспадающие списки со значениями параметров для каждого параметра. Пример: http://magazin.pozvonochnik.info/catalog/16/
Из фильтра передается для каждого ИД параметра (option_id) по одному ИД значению (option_value_id), в соответвии с которыми из БД извлекаются соответсвующие товары.
Но вот в чем возникла сложность. Предположим! для каждого из товаров решено определить параметр вес, тогда к примеру в ниспадающем списке может выводиться 200 значений параметров (Вес (кг): 1, 2, 3, 4 .... 200) - это неудобно и громоздко!
У меня пока что созрело только такое решение: определять для параметров тип (ниспадающий список, поле для ввода текстовых данных, флажок и т.д.), т.е. например для параметра Вес (кг), в фильтре выводить текстовое поле для ввода значения веса, и каким-то образом извлекать товары соответвующие значению параметров (а не ИД значений параметров).
Возможно у кого-то есть опыт по решению схожей задачи, и вы мжете подсказать иду ли я в правильном направлении, или может быть посоветуете несколько иную реализацию по решению данной задачи.