помогите реализовать быстрый поиск

Статус
В этой теме нельзя размещать новые ответы.
PHP:
$fnd = ($fcountry != '' ? ' and country = "'.addslashes($fcountry).'"' : '').
       ($fcity != '' ? ' and city = "'.addslashes($fcity).'"' : '').
       ($ffound != ''  ? ' and found = "'.addslashes($ffound).'"' : '').
       ($ffor != ''  ? ' and forwhat = "'.addslashes($ffor).'"' : '');

$zapros = "SELECT * FROM users WHERE 1 ".$fnd;
если поле "страна" не пустое добавляем проверку из переменной, иначе пропускаем, далее тоже самое делаем с нужными полями...
и формируем один запрос.... выбираем все из юзеров где истина и нужный нам набор вариантов...

1) К твоему сведению это не поиск а выборка. не знаю насколько хорошо ты знаешь программирование и базы данных, но в MySQL поиск совпадений осуществляется через "WHERE LIKE %%"

2) Для чего тебе addslashes, если переменная у тебя экранируется одиночными кавычками? Я еще могу понять если б было к примеру
PHP:
'".addslashes($ffound)."'

Вместо
PHP:
"'.addslashes($ffound).'"
Да и вообще addslashes не спасет тебя от инъекции, это так на будущее.

3) Реализация выборки не динамическая, то есть если нужно добавлять дополнительные фильтры для поиска, нужно вручную править еще и php-код.

4) Выборка не универсальна, т.к. пользователь и к примеру укажет город, возраст и пол, а в БД имеется запись с тем же городом и возрастом, но с другим полом.

Отсюда вывод: ТС сам не знает чего он хочет, тему можно закрывать
 
1) а меня вполне устраивает выборка. Для меня это не принципиально...
2) мало ли что пользователь захочет написать в строке поиска...
3) я создал эту тему специально для того, что бы найти оптимальный вариант для решения данной проблемы.
4) я 4-ый пункт твой вообще не понял... если я ищу девушку 20 лет с Киева, то 20-ти летний парень с Киева мне не нужен... и поиск должен показать, что девушки нет...

или сайт должен мне сообщить "простите, девушек 20 лет с Киева нету, может с Москвы 19 летнюю выберешь?"

ты только к словам цепляешься... реализуй то что мне нужно - и выложи, а потом только тему закрывай.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху