Фильтры в интернет магазине

123
Aisamiery
На сайте с 12.04.2015
Offline
293
#11
tarkas777 #:
Через get параметры. Например p10=100-102

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

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
T7
На сайте с 10.04.2017
Offline
58
#12
Aisamiery #:

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

Добрый день.
Не совсем понял про числа...
В базе данных есть
таблица  property_values(property_value_code, property_code, property_value)
property_value_code - код варианта
property_code - код характеристики
property_value - значение  варианта

Таблица products_property(
product_id, property_code, property_value_code)
product_id - код товара
property_code - код  характеристики
property_value_code -   код варианта




Aisamiery
На сайте с 12.04.2015
Offline
293
#13
tarkas777 #:
В базе данных есть

В целом все же я могу вам посоветовать лучше воспользоваться эластиком, там уже все это есть и работает очень быстро, либо если товаров не много можете воспользоваться облачным сервисом algolia, там есть бесплатный тариф

W1
На сайте с 22.01.2021
Offline
285
#14
Странная какая-то тема. Такое впечатление, что каждый говорит о чём-то своём, и никто друг друга не понимает. По крайней мере я так ничего и не понял по задачам, стоящим перед ТС.
Мой форум - https://webinfo.guru –Там я всегда на связи
Aisamiery
На сайте с 12.04.2015
Offline
293
#15
webinfo #:
Странная какая-то тема. Такое впечатление, что каждый говорит о чём-то своём, и никто друг друга не понимает. По крайней мере я так ничего и не понял по задачам, стоящим перед ТС.

ТС хочет чтобы в его фильтре рядом со значением была цифра соответствующая товарам этому значению. 

Например у него есть диваны и фильтр: Прямой, Угловой и ТС хочет чтобы у него было как Прямой (200), Угловой (120), вот ему надо как то получить 200 и 120, но судя по вопросам предполагаю, что ему что то готовое нужно

M
На сайте с 04.12.2013
Offline
223
#16
webinfo #:
По крайней мере я так ничего и не понял по задачам, стоящим перед ТС.
В теме проскакивало про фасетный фильтр. Вот только ТС написал, что уже сделал «фасеточный поиск» 😐
Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
T7
На сайте с 10.04.2017
Offline
58
#17
miketomlin #:
В теме проскакивало про фасетный фильтр. Вот только ТС написал, что уже сделал «фасеточный поиск» 😐

Добрый день.
Сам «фасеточный поиск»  я сделал. Не смог сделать другое...

Вот пример запроса который выдает список вариантов характеристик по определенной категории в случае, когда не выбрали не одного варианта, а значит и нет get параметров для фильтрации.

SELECT pv.property_value_code, pv.property_code, pp.property_value, fp.filter_prop_code, count(pp.product_id) AS count_products

from property_values pv, products_property pp, filter_props fp, property p,

       (SELECT p1.product_id, v1.variant_id

     FROM products p1, contents c1, variants v1

     WHERE c1.object_id=p1.product_id AND

     v1.product_id=p1.product_id AND

     v1.variant_default=1 and

     c1.parent=320412) z2

WHERE pp.property_code=pv.property_code AND

p.property_code=pp.property_code AND

p.property_status=1 AND

pv.property_value_code=pp.property_value_code AND

fp.property_code=pv.property_code AND

fp.filter_prop_status=1 AND

z2.product_id=pp.product_id

GROUP BY pv.property_value_code, pv.property_code, pp.property_value, fp.filter_prop_code

ORDER BY pv.property_code, pp.property_value


Проблема в том, что нужен алгоритм фильтрации  и получения списка вариантов при выборе пользователем.
320412 - код категории
count_products - количество товара варианта
property_code - код характеристики
property_value_code - код значения варианта

T7
На сайте с 10.04.2017
Offline
58
#18
Aisamiery #:

ТС хочет чтобы в его фильтре рядом со значением была цифра соответствующая товарам этому значению. 

Например у него есть диваны и фильтр: Прямой, Угловой и ТС хочет чтобы у него было как Прямой (200), Угловой (120), вот ему надо как то получить 200 и 120, но судя по вопросам предполагаю, что ему что то готовое нужно

Правильно, мне нужно получить 200 и 120 но и также убрать варианты с нулевыми количествами. Нужен алгоритм, готовое вряд ли подойдет (разве что как пример)

W1
На сайте с 22.01.2021
Offline
285
#19
tarkas777 #:

Вот пример запроса

Сами писали, или кого-то попросили? С такими запросами ваш сайт будет лежать и не вставать.

tarkas777 #:
Проблема в том, что нужен алгоритм фильтрации  и получения вариантов при выборе пользователем

Не знаете, куда вставить GET-параметры?

T7
На сайте с 10.04.2017
Offline
58
#20
webinfo #:

Сами писали, или кого-то попросили? С такими запросами ваш сайт будет лежать и не вставать.

Не знаете, куда вставить GET-параметры?

Скорость  - менее 1 секунды при 10000 товаров в категории (которые есть в наличии, а так товаров больше). База на PostgreSQL 14.
Просто вставить get параметры не проблема, но это не то что нужно.  К примеру  товар - это книга, фильтр по характеристикам  - бренд (выбрали вариант Эксмо) и год издания (выбрали 2020, 2021)
Мне нужно чтобы варианты были не только выбранные но и оставшиеся невыбранными (с количеством товаров в скобках). Если количество ноль - вариант не показывается. Если просто фильтровать по get параметрам то останутся только выбранные варианты

png filters_tmp2.png
123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий