Как сделать поиск (фильтрацию), кликая по ссылкам?

Тема в разделе "Как сделать...", создана пользователем danneo, 15 фев 2015.

  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    Хочу сделать выбору из БД "пошаговую". В блоке вывести название поля, например,
    Пол: плитка|паркет
    Цвет: красный|синий|зеленый
    и т.д.
    Пользователь нажимает сначала на пол "плитка", Страница перезагружается и выводятся записи по соответствию условиям (пол). Ссылка подсвечивается (через стиль).
    Далее нажимает на любой цвет. Страница снова перезагружается и выводятся записи по соответствию условиям (пол+цвет). Ссылка подсвечивается (через стиль).
    И т.д.
    Не могу все во едино свести... может быть есть готовые решения? Точнее, где их взять.
    Можно без перезагрузки страницы.
     
  2. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    191
    Автоматическая отправка формы может быть сделана так:
    HTML:
    
      <select name="sort"  onchange="this.form.submit();" >
         <option value="0">Не выбрано</option>
         <option value="1">По имени</option>
         <option value="2">По убыванию цены</option>
         <option value="3">По возрастанию цены</option>
       </select>
    
    Должен заметить, что метод отправки лучше делать Гет, чтобы в адресе запоминался промежуточный выбор.
    А в option нужно отслеживать что выбрано — с помощью selected
     
    Последнее редактирование: 15 фев 2015
  3. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    вы читали вопрос? Причем тут select и onchange?
     
  4. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    191
    А при том, что «кликая по ССЫЛКАМ» — не получится. Должна быть ФОРМА с select или input
    Пример http://www.extraparts.ru/collection/keyboard
    Обратите внимание как меняется адрес при выборе параметров
     
  5. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    видимо вы не все знаете... еще как можно. хотя бы потому, что я сделал. Ну или потому, что есть и на других сайтах. Правда остается вопрос в оптимизации, готовых решений.
    может быть, вернусь к рассмотрению варианта с формой.
     
  6. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    191
    Тогда сложность реализации на стороне сервера будет увеличиваться в квадрате на каждый параметр.
    А при применении формы она практически не увеличивается — делаем foreach по get массиву, и сколько там в массиве параметров, 5 или 10 — без разницы, движок даже не заметит.
    Я Вам не из головы это всё пишу, а из своего опыта реализации поиска, если что.
    Только у меня внутри по-другому сделано чем на том сайте что показал, ещё проще.
     
  7. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.451
    Симпатии:
    1.245
    И что по вашему делает форма, передающая запрос методом $_GET?

    Всё нормально получится, проходишь циклом foreach по параметрам и формируешь ссылки типа
    <a href="/page?color=red">red</a>
    <a href="/page?color=green">green</a>

    для мультипараметров, т.е. после того как выбрали цвет надо еще размер выбрать, пример:
    <a href="/page?color=red&size=48">48</a>
    <a href="/page?color=green&size=50">50</a>

    и т.д.

    На php скрипте разбираешь url через parse_url(), потом query из этого массива разбираешь через parse_str(), обрабатываешь уникальность параметров и собираешь обратно через http_build_query() и http_build_url() - надо если нужно выбрать только один цвет или только один размер
    Подробности по работе с функциям смотри на php.net
     
    danneo нравится это.
  8. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    191
    latteo

    ключевые слова «сложность реализации на стороне сервера будет увеличиваться в квадрате на каждый параметр».
    Согласитесь, что ссылками сложнее гораздо — трудно группировку свойств делать.
    И кстати реализацию сортировки именно через Гет лучше и делать.
    Вот мой пример реализации сортировки:

    Выбирайте параметры селектами — каталог автоматически перезагружается.
     
    Последнее редактирование: 27 фев 2015
  9. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.451
    Симпатии:
    1.245
    Значит, что-то неверно сделано в коде...
    У меня на работе половина админки на ссылках, половина на формах - разницы в сложности никакой не вижу.

    Хотя я начал понимать о какой простоте ты говоришь - у тебя сразу все параметры передаются по всем возможным опциям. Минус такого подхода в загромождении url...