Фільтр пошуку на php

Фільтр пошуку на PHP

Відео: Фільтрація даних вбудованими фільтрами PHP

Мене іноді просять розповісти, як робляться складні фільтри пошуку. Наприклад, як він зроблений на тому ж Яндекс.Маркеті, де може бути сотня різних параметрів відбору товарів? У цій статті я розповім, як таке робиться, адже тут немає абсолютно нічого складного. Все це робиться за єдиним принципом, про який читайте далі.

Для початку має бути таблиця, по якій буде йти пошук. Нехай це буде спрощена таблиця для ноутбуків:

Відео: Сортування товарів в каталозі інтернет магазину

  • id - унікальний ідентифікатор.
  • price - ціна.
  • manufacturer - виробник.
  • wi-fi - наявність Wi-Fi.

Тепер розберемо форму пошуку:




Думаю, тут, все прозоро. Єдине, що зверніть увагу на manufacturers []. Квадратні дужки означають, що в скрипт потрапить масив з усіма значеннями, обраними користувачем. Щоб краще це зрозуміти, просто виведіть print_r ($ _ POST), тоді Ви все зрозумієте.

Тепер розберемо скрипт. З метою спрощення скрипта я не став його ускладнювати скриптами, що відповідають за безпеку, і обмежився функцією htmlspecialchars (). Однак, в реальності, обов`язково треба перевіряти все, що приходить від користувача, використовуючи, наприклад, регулярні вирази і / або вбудовані функції перевірки змінних на їх значення.




Головне завдання скрипта - "Зібрати" SQL-запит на основі того, що прийшло від користувача:

Відео: Post Filter Generаtor - створення пошукового фільтра

lt ;?php
function addWhere($ where, $ add, $ and =true){
if($ where){
if($ and) $ where .="AND $ add"-
else $ where .="OR $ add"-
}
else $ where = $ add-
return $ where-
}
if(!empty($ _POST["Filter"])){
$ where
=""-
if($ _POST["Price_start"]) $ where = addWhere($ where,"` Price` gt; = ` ".htmlspecialchars($ _POST["Price_start"]))." `"-
if($ _POST["Price_end"]) $ where = addWhere($ where,"` Price` lt; = ` ".htmlspecialchars($ _POST["Price_end"]))." `"-
if($ _POST["Manufacturers"]) $ where = addWhere($ where,"` Manufacturer` IN ( ".htmlspecialchars(implode(",", $ _POST["Manufacturers"])).")") -
if($ _POST["Wifi"]) $ where = addWhere($ where,"` Wifi` = `1` ") -
$ sql
="SELECT * FROM` my_table` "-
if($ where) $ sql .="WHERE $ where"-
echo $ sql
-
}
?gt;

Думаю, що з виконанням отриманого запиту і виведенням результату проблем виникнути не повинно. Якщо це не так або в даному скрипті не все зрозуміло, то Вам тоді однозначно потрібно спочатку вивчити це: https://srs.myrusakov.ru/php.

Як бачите, складні фільтри реалізуються в PHP дуже просто. Що стосується "красивих"Скриптів, де рухаються всякі повзунки і відразу змінюється результат - це все те ж саме, тільки запити відправляються не через форму, а через Ajax, а потім приймається відповідь від сервера з результатом, який динамічно виводиться через чистий jаvascript, або з використанням jQuery.

Ось за таким принципом робиться будь фільтр пошуку на PHP.

Поділися в соціальних мережах:

Схожі
Як дізнатися pid скриптаЯк дізнатися pid скрипта
Метасимволи в регулярних виразівМетасимволи в регулярних виразів
Як зробити чатЯк зробити чат
Як зробити підписку на сайті (v2)Як зробити підписку на сайті (v2)
Створення динамічної функції на phpСтворення динамічної функції на php
Зведені таблиці excel.Зведені таблиці excel.
Реалізація пошуку на сайті через phpРеалізація пошуку на сайті через php
Динамічний висновок в php-скриптіДинамічний висновок в php-скрипті
Відправка get-запитів в curlВідправка get-запитів в curl
Скасування повторної відправки формиСкасування повторної відправки форми
» » Фільтр пошуку на php