Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Релятивный фильтр

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Igon
Отправлено: 28 Сентября, 2016 - 05:27:54
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Сент. 2016  


Помог: 0 раз(а)




Добрый день, пишу для сайта умный фильтр по аналогии Яндекс.Маркета.
Собственно уже который день озадачился вопросом реализация релятивного фильтра.
Что имеем:
Динамическую форму: (Форма генерируется автоматически, но для наглядности вставил HTML)
CODE (text):
скопировать код в буфер обмена
  1. <form method="get" action="">
  2. <div>
  3. <label>Asus</label>
  4. <input type="checkbox" name="filter[]" value="Asus">
  5. <label>Acer</label>
  6. <input type="checkbox" name="filter[]" value="Acer">
  7. <label>Lenovo</label>
  8. <input type="checkbox" name="filter[]" value="Lenovo">
  9. </div>
  10. <div>
  11. <label>2015</label>
  12. <input type="checkbox" name="filter[]" value="2015">
  13. <label>2014</label>
  14. <input type="checkbox" name="filter[]" value="2014">
  15. <label>2013</label>
  16. <input type="checkbox" name="filter[]" value="2013">
  17. </div>
  18. <button>Искать</button>
  19. </form>

После сабмита формы имеется url следующего вида:
CODE (text):
скопировать код в буфер обмена
  1. site.com?filter=Asus&filter=2015

Так же имеем таблицы в базе данных:
CODE (text):
скопировать код в буфер обмена
  1. products (id, title)
  2. products_to_filter (id, product_id, filter_id)

Сам обработчик выглядит следующим образом (P.S фреймворк Laravel)
CODE (text):
скопировать код в буфер обмена
  1.  
  2. Выборка соответствующих фильтров.
  3. $filter[] = explode(',', $request->input('filter');
  4. $filters = DB::table('products_to_filter')->whereIn('id', $filter)
  5. ->get()
  6. ->all();
  7. foreach($filters as $row) {$filterArray[] = $row->product_id;}
  8. Выборка продуктов:
  9. $products = DB::table('products')->whereIn('id', $filterArray)->get()->all();

Собственно моя проблема заключается в следующем, фильтр работает, но не совсем так как мне нужно, тобишь при фильтрации, он должен результаты уменьшать, а он же наоборот ищет более углубленно, и как следствие увеличивает кол-во результатов. Как решить данную проблему?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB