2013-08-10 5 views
2

Im пытается изменить алгоритм фильтра для моего списка продуктов.Фильтр продуктов для электронной коммерции

Например, у меня есть 2 телевизора.

Первый: экран размером 117 Cm, бренд Samsung. Второй: размер экрана 203 CM, марка Sharp.

И у меня есть следующие фильтры:

Марка: Samsung, Sharp

размер

экрана: 117 Cm, 203 CM

Если я хочу видеть только Samsung телевизоры и проверить фильтр Samsung , как я могу прийти к выводу, что я должен удалить размер экрана 203 из фильтров, потому что у samsung есть только 117 см телевизора.

Но если я проверю четкое телевидение и samsung в одно и то же время, тогда я должен увидеть оба фильтра размера экрана.

Я прошу идею для некоторого алгоритма php/mysql.

Надеюсь, вы понимаете, о чем я спрашиваю.

Для примера смотрите здесь: http://www.ebay.co.uk/sch/Televisions-/11071/i.html?_dcat=11071&Display%2520Technology=LED%2520LCD&rt=nc

Сайт знает, сколько продуктов он имеет иметь в своем распоряжении пользователя проверяет любой фильтр: например: «40» - 49" (326)) -> они знают, что у них есть 326 продукты до проверки пользовательских фильтров

Короче:. флажки вы проверить в фильтрах, должны быть отключены, если комбинация не доступна для продуктов

у меня есть 3 таблицы:. продуктов (id_product, имя), фильтры (id_filter, name, id_category), filters_values ​​(id, id_product, id_filter, value)

На моей странице product_list должно появиться только фильтр, который после проверки возвращает продукты.

Моя первая мысль - сделать sql из каждой комбинации значений фильтра. Например, 10 фильтров с 4 значениями: 40 кв., Чтобы проверить, не возвращают ли продукты продукты. Но это способ сильно подчеркнуть db.

Например, если у меня есть один фильтр с 4 значениями, я должен сделать 4 запроса, чтобы посмотрите, есть ли у меня продукты по определенному значению.

У меня есть 10 фильтров, каждый из которых имеет 4 значения, я должен выполнить 40 sql-запрос. Который много. Как я могу сделать это быстрее?

Благодаря

+0

Что такое расположение таблиц? Каковы данные в таблицах (образец)? И какие результаты вы ищете? –

+0

. , Измените свой вопрос вместо того, чтобы помещать эту информацию в комментарий. –

ответ

4

я обычно делаю что-то вроде этого в PHP:

// queries all products if no filter are specified 
$sql_query = "SELECT * FROM products "; 


// add fileters e.g. from $_GET array 
$i = 0; 
foreach($filter_array as $filter -> $filter_value) 
{ 
    if(! $i) 
    { 
     $sql_query .= "WHERE "; 
    } 
    else 
    { 
     $sql_query .= " AND "; 
    } 

    $sql_query .= $fliter . " = '" . $filter_value . "'"; 

    $i++;  
} 

// generating something like: 
// "SELECT * FROM products WHERE color = 'green' AND brand = 'samsung'" 
// now execture $sql_query 

Это всего лишь набросок, но я думаю, вы получите идею

+0

Запрос на выбор продуктов не является проблемой.Моя проблема в том, что я не знаю, как сохранить только значения фильтра, если проверены, я получаю результаты. – Catalin

+1

@ Leo Вы можете дать нам пример, где вы его использовали. –