[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Многофункциональный Поиск
Gerg007
Здравствуйте уважаемые мне нужна помощь в следующем!
мне нужно сделать поиск многофунк...
на подобии этого

Страна
Город
Улица
Дом
Цена ОТ и ДО
и т.д.
и чтоб когда выводит страну Россия допустим в городах были города России!

вот ссылка что то типа этого

Поиск
или
Другой на Расширенный поиск нажмите такое нужно!
и т.п.
как можно это осуществить или есть где нибудь такое?
С Уважением Gerg007!



Спустя 24 минуты, 42 секунды (6.09.2010 - 10:59) ApuktaChehov написал(а):
Ух ты, как официально.

А что тут сложного? Делаешь селекты, юзер выбирает что надо и отправляет на сервер. А на сервере делаешь запрос к БД "выбрать данные, где что-то(ровно, содержит, не содержит и т.д.)" то что выбрал юзер.

Вот так вот скромно smile.gif

Спустя 4 минуты, 43 секунды (6.09.2010 - 11:03) Gerg007 написал(а):
Цитата (ApuktaChehov @ 6.09.2010 - 07:59)
Ух ты, как официально.

А что тут сложного? Делаешь селекты, юзер выбирает что надо и отправляет на сервер. А на сервере делаешь запрос к БД "выбрать данные, где что-то(ровно, содержит, не содержит и т.д.)" то что выбрал юзер.

Вот так вот скромно smile.gif

Да я это знаю! но может он некоторые пункты не заполнил допустим его не интерисует сколько комнат он должен всё искать или ОТ и ДО цены ОТ заполнил а До нет!! вы понли наверное!)
а если переменной не будет как он будет искть он ошибку выдасть!
если не трудно!
можете привести пример с запросом на сервер для такого типа поиска?!

Спустя 21 минута, 58 секунд (6.09.2010 - 11:25) ApuktaChehov написал(а):
Тогда тебе нужно динамически формировать запрос исходя из того, что выбрал юзер. Или же использовать в место = LIKE, но это медленнее.

Получиться что: SELECT * FROM table WHERE field1 LIKE 'что то' AND field2 LIKE 'что то' и т.д.

Если юзер поле не выбрал в можно использвать символ % - любой символ.
Это я так делал, но мне почему то кажется, что это косячный вариант huh.gif

Думаю, что динамически формировать запрос придется.
Что типо:

if($komnat)
$str = "komnat =" . $komnat;

И запрос можно так сделать.
SELECT * FROM table WHERE $str;


И соответственно про безопасность тоже не забываем.

Спустя 2 часа, 47 минут, 29 секунд (6.09.2010 - 14:13) Gerg007 написал(а):
Цитата (ApuktaChehov @ 6.09.2010 - 08:25)
Тогда тебе нужно динамически формировать запрос исходя из того, что выбрал юзер. Или же использовать в место = LIKE, но это медленнее.

Получиться что: SELECT * FROM table WHERE field1 LIKE 'что то' AND field2 LIKE 'что то' и т.д.

Если юзер поле не выбрал в можно использвать символ % - любой символ.
Это я так делал, но мне почему то кажется, что это косячный вариант huh.gif

Думаю, что динамически формировать запрос придется.
Что типо:

if($komnat)
$str = "komnat =" . $komnat;

И запрос можно так сделать.
SELECT * FROM table WHERE $str;


И соответственно про безопасность тоже не забываем.

Спасибо! попробуем что получиться! smile.gif

Спустя 1 час, 49 минут, 15 секунд (6.09.2010 - 16:02) Gerg007 написал(а):
Цитата (ApuktaChehov @ 6.09.2010 - 08:25)
Тогда тебе нужно динамически формировать запрос исходя из того, что выбрал юзер. Или же использовать в место = LIKE, но это медленнее.

Получиться что: SELECT * FROM table WHERE field1 LIKE 'что то' AND field2 LIKE 'что то' и т.д.

Если юзер поле не выбрал в можно использвать символ % - любой символ.
Это я так делал, но мне почему то кажется, что это косячный вариант huh.gif

Думаю, что динамически формировать запрос придется.
Что типо:

if($komnat)
$str = "komnat =" . $komnat;

И запрос можно так сделать.
SELECT * FROM table WHERE $str;


И соответственно про безопасность тоже не забываем.

Я сделал ! но проблемма!!!
когда я ничего не выбираю и как вы сказали в value="%" отправил этот символ но выдаёт мне ошибку! в чём дело как можно пл другому?!

Спустя 39 секунд (6.09.2010 - 16:03) ApuktaChehov написал(а):
Стоп. % работает не при value =, а при value LIKE.

Спустя 9 минут, 8 секунд (6.09.2010 - 16:12) Gerg007 написал(а):
да ещё
как можно осуществить
ОТ и ДО
от 10 до 15
и когад только
от 10 искала от 10
или до 15 искало до 15?

Спустя 2 минуты, 48 секунд (6.09.2010 - 16:15) ApuktaChehov написал(а):
WHERE field >= 10 AND field <= 15

Спустя 1 минута, 37 секунд (6.09.2010 - 16:16) Gerg007 написал(а):
SELECT * FROM table WHERE $str;

я сделал по этому принцыпу!

$res = mysql_query("SELECT * FROM flats WHERE $str AND $str2");
$mys2 = mysql_fetch_array($res);

мм. а никак ари таком раскладе как я сделал нельзя вместо % чтонибудь?

выбрал пустую клиент и что потом можно сделать? при = а не при LIKE или без LIKE не обойтись?!

Спустя 2 минуты, 19 секунд (6.09.2010 - 16:19) Gerg007 написал(а):
Цитата (ApuktaChehov @ 6.09.2010 - 13:15)
WHERE field >= 10 AND field <= 15

WHERE field >= 10 AND field <= 15

А вдруг! field >= 10 - есть а вот он не заполнил field <= 15 ?? и этого нету! что тогда подставиться? может клиент заполнил только ОТ или только ДО?!

Спустя 12 минут, 45 секунд (6.09.2010 - 16:31) ApuktaChehov написал(а):
% - обозначает любой символ, но это работает только при LIKE.
Если же вы не хотет использовать LIKE, то вам придется формировать сам запрос.

Т.е. если юзер укажет страну и город то запрос будет таким:
WHERE country = 'Russia' AND city = 'Moscow';

А если юзер не укажет город, то запрос должен быть таким:
WHERE country = 'Russia';


По этому ваш вариант с постоянным AND не пройдет.

А для цифр сделайте значения по умолчанию, если не выбрал значит 0.

Спустя 6 минут, 49 секунд (6.09.2010 - 16:38) Gerg007 написал(а):
0 пробывал не то получилось! наверное поднакучил я вам!
но можете пример привести?
с LIKE?
и если там только страна введина! и когда оба! пункта?! как должно выглядеть это?

Спустя 54 секунды (6.09.2010 - 16:39) Gerg007 написал(а):
и с % напишите как там!
% - обозначает любой символ, но это работает только при LIKE.

Спустя 24 минуты, 19 секунд (6.09.2010 - 17:03) ApuktaChehov написал(а):
Ох. Вы не понимаете логики.
Если юзер что то не указал, то и эти поля не должны фигурировать в запросе к БД. Не указал юзер город, значит не должно его быть в запросе. Но это несколько сложно. По тому я предложил вам вариант с LIKE.
Что бы вы не строили запрос из переменных.

Вот еще пример, потом я иду домой.
Есть форма: Хочу: пиццу, коллу, банан, шашлык, воды.

что бы искать по всем этим полям делаем запрос:
SELECT * FROM table 
WHERE
pizza = 'пицца',
AND kolla = 'колла',
AND banan = 'банан',
AND shashlik = 'шашлык',
AND voda = 'вода';


Все отлично работает, пока юзер указывает ВСЕ поля. А вы спрашиваете, как быть если юзер, что то не указала. В этом случае, нам придется удалить из запроса какую то строку. А это, учитывая ваши познания, будет сложно для вас.

По этому я предложил вам: работать с LIKE:
SELECT * FROM table 
WHERE
pizza LIKE 'пицца',
AND kolla LIKE 'колла',
AND banan LIKE 'банан',
AND shashlik LIKE 'шашлык',
AND voda LIKE 'вода';


В этом случае вы сможете, не трогая запрос, в место не выбранных юзером значений вставить %. И тогда запрос будет совпадать во всех случаях. Что вам и надо.

А что у вас с цифрами не вышло не знаю, там все элементарно. Не указано - значит 0.

Спустя 3 минуты, 56 секунд (6.09.2010 - 17:07) Gerg007 написал(а):
я уже сам сдела с =, но!
хочется уточнить насчёт LIKE!
SELECT * FROM table


значит если не указано что то тополучаеться запро такой?!
например шашлика нету

SELECT * FROM table
WHERE pizza LIKE 'пицца',
AND kolla LIKE 'колла',
AND banan LIKE 'банан',
AND shashlik LIKE '%',
AND voda LIKE 'вода';
?


_____________
Быстрый ответ:

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