Як зробити багатокритерійний пошук по сайту php
Розберемо цю задачу на прикладі многокритериального пошуку по сайту-каталогу, на якому представлені човни і катери різних виробників і з великим числом характеристик. Домовимося, що відвідувач сайту зможе шукати товари за такими характеристиками:
У реалізації пошуку широко задіяна алгебра логіки. Про логічних операціях з логічними ж функціями можна дізнатися з матеріалу "Булева алгебра (алгебра логіки)".
Чотири перші характеристики припускають вибір відвідувачем мінімального і максимального значень (тобто, шукаються варіанти "від" і "до"), а бренд - одного конкретного значення. Значення критеріїв вибираються зі спадного селектора. Користувач може вибрати значення тільки одного критерію (в цьому випадку всі інші критерії представлені повним діапазоном), кількох або всіх критеріїв.
Перше, що робимо - на всіх або певної сторінці сайту розміщуємо форму многорітеріального пошуку. Її код (пояснення - після коду):
Необхідні пояснення до наведеного коду. Припустимо, що ціна вказується в євро, тому і знак # 8364. Далі - важливий момент: значення селектора, відображуваного за замовчуванням як обраному, тобто, те, в якому записано "від" і "до", так само "е" (від слова empty - порожній). Воно передається скрипту-обробника, якщо користувач не вибрав мінімальне, або максимальне, або ж обидва значення будь-якого критерію. Скрипт обробки запиту з форми трактує це значення "е" як весь діапазон значень. Тобто, наприклад, якщо не вибрана ціна, то пошук буде проводиться серед позицій в базі даних з усіма значеннями ціни, а також тих, у яких ціна не вказана (буває і таке, наприклад, коли ціна ще формується). Точно таку ж роль значення селектора "е" грає і у інших критеріїв пошуку. Наприклад, якщо користувач шукає товар тільки по довжині, то всі інші критерії мають повні діапазони значень.
Далі - код скрипта-обробника, який розміщується в файлі-обробнику форми (наприклад, search.php) і забезпечує багатокритерійний пошук по сайту в базі даних. Він приведений разом з кодом виведення знайдених в результаті пошуку товарів. Пояснення, як ми вже домовилися - після коду.
Обіцяні пояснення. У першому умови для значення кожного критерію пошуку - значення "е", тобто, користувач не вибрав одне з яких обидва (мінімальне і максимальне) значення даного критерію пошуку по сайту. В альтернативному умови (значення критерію пошуку обрані) приймаються обрані значення критерію пошуку. Далі - варіанти запиту до бази даних сайту для випадків, коли не вибрані значення жодного з критеріїв пошуку, не обрана бренд і обрані значення всіх критеріїв пошуку по сайту. У базу даних сайту надходить запит зі значеннями критеріїв пошуку, обраних користувачем (якщо значення критерію пошуку не вибрано користувачем, в запиті надходить значення від "О" до будь-якого свідомо екстремального, наприклад, "1000000000", такого, що всі значення даного критерію в базі даних сайту явно менше цього екстремального значення). У реалізації пошуку широко задіяна алгебра логіки. Будувати складні логічні умови для пошуку Вам допоможе матеріал "Булева алгебра (алгебра логіки)".
А про операції для маніпулювання даними з баз даних - матеріал "Реляційна алгебра"
Ось, мабуть, все. Багатокритеріальний пошук по сайту готовий!
Поділитися з друзями