[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск по нескольким параметрам
natalina
Доброго времени суток! Столкнулась с такой проблемой: необходимо организовать поиск по БД по нескольким полям, которые выбирает пользователь, то есть заранее мне неизвестно, что именно он выберет. Помогите пожалуйста советом с логикой, как обычно такое реализуют.
AllesKlar
Цитата
которые выбирает пользователь

Ты же сама даешь варианты выбора, следовательно, тебе известно, какие фильтры могут быть выбраны, и какие поля для этих фильтров сопоставляются в базе.
А дальше смотришь, что выбрал пользователь и динамически (в цикле или простым перебором условий, если полей не много) создаешь условие 'WHERE ' для sql-запроса

_____________
[продано копирайтерам]
TranceIT
SELECT ... FROM ... WHERE row1=1 AND row2=2 AND row3=3 ...


_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
natalina
Цитата (TranceIT @ 5.03.2014 - 11:52)
SELECT ... FROM ... WHERE row1=1 AND row2=2 AND row3=3 ...

Спасибо, но если бы всё было так просто... Не обязательно, что пользователь выберет обязательно все поля и такой запрос тогда вообще ничего не вернёт.
TranceIT
Определите поля, которые пользователь заполнил и в зависимости от этого делайте запрос.

_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
Valick
natalina, существует обычный и полнотекстовый поиск, какой применять в конкретном случае зависит от архитектуры БД и от критериев и логики поиска.
Вы задали слишком обобщенный вопрос, чтобы получить не него конкретный ответ.
Ну и:
Цитата
то есть заранее мне неизвестно, что именно он выберет

так не бывает, программист на то и программист, чтобы просчитать все возможные варианты и возможно сгруппировать их немного унифицировав.

_____________
Стимулятор ~yoomoney - 41001303250491
TranceIT
natalina
Собственно да. Вы уже как минимум ожидаете критерии поиска. Остается только разделить данные на части и составить соотношение и\или между ними. Отсюда и строится логика.

_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
natalina
Спасибо всем! В общем получается примерно так

$query ='SELECT * FROM table_name WHERE ';
$and = '';
foreach ($_POST as $key => $value) {
if(!empty($value)){
$query.= $and.$key.' = '.$value;
$and = ' AND ';
//echo $key.$value.'<br/>';
}
}


Ну там уже буду смотреть по логике, возможно надо будет OR. И возможно для некоторых параметров LIKE
TranceIT
natalina
Двигаетесь в правильном направлении.

_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
Valick
Цитата
В общем получается примерно так

это настолько примерно, что даже теорией назвать нельзя, все гораздо сложнее smile.gif


_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.