Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Фильтр по каталогу
 
 автор: grafen   (22.04.2012 в 02:03)   письмо автору
 
 

Всем привет! Делаю каталог с фильтрами. Не могу отфильтровать.

Есть три таблицы:
- Продукты
- Фильтры
- Продукт-фильтр (связь)

Таблица "продукты":
id | name
1 | Овсянка
2 | Гречка
3 | Рис

Таблица "фильтры":
id | name
1 | 0.5кг
2 | 0.7кг
3 | 0.9кг
4 | Вкусно
5 | Не вкусно
6 | Гадость

Таблица "продукт-фильтр":
id | idproduct | idfilter
1 | 1 | 1
2 | 2 | 3
3 | 3 | 1
4 | 1 | 4


Как отфильтровать, что если вкусно и 0.5кг, то выведет Овсянку.
Если 0.5кг и гадость, то ничего не выведет.
Если только 0.5кг, то выведет овсянку и рис.
Если только 0.9кг, то выведет гречку.
Если 0.9кг и не вкусно, то ничего.
И так далее, логика здесь самая обычная.

Параметры принимаю из адресной строки, получаю массив id фильтров.
Количество фильтров может быть разное.

Помогите, я уже не понимаю.

p.s. Делал сначала, чтобы все фильтры для конкретного товара хранились в поле в виде: [4][55][2] и потом искать через LIKE, но сказали, что это не правильно, переделал всю систему на способ, который описал выше и вообще не могу справиться.

Очень жду любой помощи! Заранее спасибо!

  Ответить  
 
 автор: confirm   (22.04.2012 в 04:33)   письмо автору
 
   для: grafen   (22.04.2012 в 02:03)
 

Вы в разделе html так и не ответили, зачем вы дважды сбрасываете на сервер значение одного и того же поля формы, только сперва под именем idfilter, а затем filter, и здесь наблюдается почти такая же картина. А что, к примеру, Рис не может быть 0.5 и вкусно?
Кстати, в таблице связей поле id совсем не обязательно.

У товара есть характеристики, например, рис - поставщик (Китай, Вьетнам, Малайзия, и т.д.), тип (гранулированный или нет), упаковка (тип и вес, или развесной), цена за упаковку или за единицу.
Вкусно, не вкусно, гадость и т.п., это не характеристики товара, это могут быть только отзывы покупателей, а о вкусах не спорят. И не понятно, что в вашем понимании "фильтр" - если это как характеристика товара, то трудно представить, чтобы на полках магазина выставлялся товар - "Рис, 0.5 кг, 100 руб, хрень полнейшая". Тоже самое, вызывает большое сомнение, чтобы покупатель искал товар по "хрень полнейшая", если "фильтр", это все таки для поиска. То есть, то что у вас определяет вкусы пользователей, не имеет права быть в данной таблице связей, хотя бы уже потому, что вкусы разные и отзывов о товаре может быть много, а не только вкусно или нет. И коли вы хотите увязать в этой таблице связи и отзывы, то она должна одним ключом ссылаться на другую таблицу, и если пользователь желает с ними ознакомиться, пожалуйста.
Если описать все возможные характеристики, всех возможных товаров имеющихся в магазине в таблице, то они будут расположены в строку, а никак не в столбец, как у вас, так как, например, не может быть, чтобы характеристика определяющая цвет товара, определяла бы сразу два цвета - красный и черный, как и не может быть, чтобы упаковка была сразу и 0.5 кг, и 0.9 кг. А у вас получается практически такое.

  Ответить  
 
 автор: grafen   (22.04.2012 в 13:17)   письмо автору
 
   для: confirm   (22.04.2012 в 04:33)
 

Спасибо, что ответили. Я показал лишь пример, а данные придуманные. Мне кажется, что это правильная структура таблиц, но я не могу составить запрос к БД, как мне кажется - проблема в этом.

Очень жду помощи!

  Ответить  
 
 автор: confirm   (22.04.2012 в 13:31)   письмо автору
 
   для: grafen   (22.04.2012 в 13:17)
 

Ну, если вы считаете, что таковая связь это правильно, то думайте сами. Лично я считаю, что определять различную размерность, находящуюся в столбце, и кому она принадлежит, это сплошная морока.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования