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

Статус
В этой теме нельзя размещать новые ответы.

shmitacc

Постоялец
Регистрация
31 Авг 2009
Сообщения
76
Реакции
6
Как реализовать быстрый поиск по сайту?
Есть база данных (логин, город, страна, пол, возраст и т.д.)
Есть формочка для быстрого поиска.
Есть обработчик на пхп.

НО! Пользователь, который ищет, может, например, искать только по городу или по городу и возрасту или еще как то. Мне что, нужно делать огромное количество условий для поиска?
И чем больше параметров для поиска, тем больше условий этих... Должен же быть какой-то алгоритм для этого...
 
Как реализовать быстрый поиск по сайту?
Есть база данных (логин, город, страна, пол, возраст и т.д.)
Есть формочка для быстрого поиска.
Есть обработчик на пхп.

НО! Пользователь, который ищет, может, например, искать только по городу или по городу и возрасту или еще как то. Мне что, нужно делать огромное количество условий для поиска?
И чем больше параметров для поиска, тем больше условий этих... Должен же быть какой-то алгоритм для этого...

Добавляешь в форму чекбоксы:

HTML:
<input type="checkbox" name="search[]" value="all"> Везде
<input type="checkbox" name="search[]" value="age"> По возрасту
<input type="checkbox" name="search[]" value="city"> По городу

далее делаешь на js обработчик выбора "везде", т.е. при нажатии выделяются все чекбоксы. При запросе в БД используешь дополнительный параметр поиска, полученный в данном результате (результаты фильтра будут содержаться в массиве $_POST['search']).
 
Добавляешь в форму чекбоксы:
HTML:
<input type="checkbox" name="search[]" value="all"> Везде
<input type="checkbox" name="search[]" value="age"> По возрасту
<input type="checkbox" name="search[]" value="city"> По городу
далее делаешь на js обработчик выбора "везде", т.е. при нажатии выделяются все чекбоксы. При запросе в БД используешь дополнительный параметр поиска, полученный в данном результате (результаты фильтра будут содержаться в массиве $_POST['search']).

Да нет, а если нужно искать по городу, по возрасту и по полу. Или по стране и логину. Это сколько чек боксов ставить? и все равно нужно для каждого варианта выбора писать выборку из базы данных.
 
А как по-твоему программа должна определять по каким критериям осуществлять поиск если ты ее не научишь? Раздела "магии" или "искусственного интеллекта" тут нет
 
вопрос решил. просто в самом запросе нужно выполнять проверку
(...where ".$per=''? что то : что то.")
 
вопрос решил. просто в самом запросе нужно выполнять проверку
(...where ".$per=''? что то : что то.")
Вот эта твоя проверка как раз и ручной обезьяний труд. ПО варианту выше пробегаешься по массиву и создаешь 1 запрос в БД с условиями типа WHERE `city`LIKE %что-то там% OR `age` LIKE %что-то там%. И вообще порекомендовал бы тебе поучить программирование и базы данных заодною
 
Согласен с saen. Напиши либо функцию либо класс для формирования запросов к базе данных.
Если интересует могу выложить класс один, правда его наверное прийдется подрехтовать.
 
Вот эта твоя проверка как раз и ручной обезьяний труд. ПО варианту выше пробегаешься по массиву и создаешь 1 запрос в БД с условиями типа WHERE `city`LIKE %что-то там% OR `age` LIKE %что-то там%. И вообще порекомендовал бы тебе поучить программирование и базы данных заодною
Ну я вообще то написал, что создается один запрос, в котором формируются условия. и в конечном итоге получается запрос того типа, что ты написал. Другим методом ты не решишь эту задачу... это единственный способ без формирования кучи запросов. А вот нагромождение кода еще какими-то ненужными чекбоксами и их обработка - вот ручной обезьяний труд...А программирование и базы данных я знаю, так как смог реализовать подобную задачу, не получив внятного ответа от других участников форума...
 
Ну я вообще то написал, что создается один запрос, в котором формируются условия. и в конечном итоге получается запрос того типа, что ты написал. Другим методом ты не решишь эту задачу... это единственный способ без формирования кучи запросов. А вот нагромождение кода еще какими-то ненужными чекбоксами и их обработка - вот ручной обезьяний труд...А программирование и базы данных я знаю, так как смог реализовать подобную задачу, не получив внятного ответа от других участников форума...

И каким же способом интересно? :thenks:
 
И каким же способом интересно?

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;

если поле "страна" не пустое добавляем проверку из переменной, иначе пропускаем, далее тоже самое делаем с нужными полями...
и формируем один запрос.... выбираем все из юзеров где истина и нужный нам набор вариантов...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху