мне нужно сделать поиск многофунк...
на подобии этого
Страна
Город
Улица
Дом
Цена ОТ и ДО
и т.д.
и чтоб когда выводит страну Россия допустим в городах были города России!
вот ссылка что то типа этого
Поиск
или
Другой на Расширенный поиск нажмите такое нужно!
и т.п.
как можно это осуществить или есть где нибудь такое?
С Уважением Gerg007!
Спустя 24 минуты, 42 секунды (6.09.2010 - 10:59) ApuktaChehov написал(а):
Ух ты, как официально.
А что тут сложного? Делаешь селекты, юзер выбирает что надо и отправляет на сервер. А на сервере делаешь запрос к БД "выбрать данные, где что-то(ровно, содержит, не содержит и т.д.)" то что выбрал юзер.
Вот так вот скромно
А что тут сложного? Делаешь селекты, юзер выбирает что надо и отправляет на сервер. А на сервере делаешь запрос к БД "выбрать данные, где что-то(ровно, содержит, не содержит и т.д.)" то что выбрал юзер.
Вот так вот скромно
Спустя 4 минуты, 43 секунды (6.09.2010 - 11:03) Gerg007 написал(а):
Цитата (ApuktaChehov @ 6.09.2010 - 07:59) |
Ух ты, как официально. А что тут сложного? Делаешь селекты, юзер выбирает что надо и отправляет на сервер. А на сервере делаешь запрос к БД "выбрать данные, где что-то(ровно, содержит, не содержит и т.д.)" то что выбрал юзер. Вот так вот скромно |
Да я это знаю! но может он некоторые пункты не заполнил допустим его не интерисует сколько комнат он должен всё искать или ОТ и ДО цены ОТ заполнил а До нет!! вы понли наверное!)
а если переменной не будет как он будет искть он ошибку выдасть!
если не трудно!
можете привести пример с запросом на сервер для такого типа поиска?!
Спустя 21 минута, 58 секунд (6.09.2010 - 11:25) ApuktaChehov написал(а):
Тогда тебе нужно динамически формировать запрос исходя из того, что выбрал юзер. Или же использовать в место = LIKE, но это медленнее.
Получиться что: SELECT * FROM table WHERE field1 LIKE 'что то' AND field2 LIKE 'что то' и т.д.
Если юзер поле не выбрал в можно использвать символ % - любой символ.
Это я так делал, но мне почему то кажется, что это косячный вариант
Думаю, что динамически формировать запрос придется.
Что типо:
И запрос можно так сделать.
И соответственно про безопасность тоже не забываем.
Получиться что: SELECT * FROM table WHERE field1 LIKE 'что то' AND field2 LIKE 'что то' и т.д.
Если юзер поле не выбрал в можно использвать символ % - любой символ.
Это я так делал, но мне почему то кажется, что это косячный вариант
Думаю, что динамически формировать запрос придется.
Что типо:
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 'что то' и т.д. Если юзер поле не выбрал в можно использвать символ % - любой символ. Это я так делал, но мне почему то кажется, что это косячный вариант Думаю, что динамически формировать запрос придется. Что типо:
И запрос можно так сделать. SELECT * FROM table WHERE $str; И соответственно про безопасность тоже не забываем. |
Спасибо! попробуем что получиться!
Спустя 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 'что то' и т.д. Если юзер поле не выбрал в можно использвать символ % - любой символ. Это я так делал, но мне почему то кажется, что это косячный вариант Думаю, что динамически формировать запрос придется. Что типо:
И запрос можно так сделать. 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?
как можно осуществить
ОТ и ДО
от 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 не обойтись?!
я сделал по этому принцыпу!
$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, то вам придется формировать сам запрос.
Т.е. если юзер укажет страну и город то запрос будет таким:
А если юзер не укажет город, то запрос должен быть таким:
По этому ваш вариант с постоянным AND не пройдет.
А для цифр сделайте значения по умолчанию, если не выбрал значит 0.
Если же вы не хотет использовать LIKE, то вам придется формировать сам запрос.
Т.е. если юзер укажет страну и город то запрос будет таким:
WHERE country = 'Russia' AND city = 'Moscow';
А если юзер не укажет город, то запрос должен быть таким:
WHERE country = 'Russia';
По этому ваш вариант с постоянным AND не пройдет.
А для цифр сделайте значения по умолчанию, если не выбрал значит 0.
Спустя 6 минут, 49 секунд (6.09.2010 - 16:38) Gerg007 написал(а):
0 пробывал не то получилось! наверное поднакучил я вам!
но можете пример привести?
с LIKE?
и если там только страна введина! и когда оба! пункта?! как должно выглядеть это?
но можете пример привести?
с LIKE?
и если там только страна введина! и когда оба! пункта?! как должно выглядеть это?
Спустя 54 секунды (6.09.2010 - 16:39) Gerg007 написал(а):
и с % напишите как там!
% - обозначает любой символ, но это работает только при LIKE.
% - обозначает любой символ, но это работает только при LIKE.
Спустя 24 минуты, 19 секунд (6.09.2010 - 17:03) ApuktaChehov написал(а):
Ох. Вы не понимаете логики.
Если юзер что то не указал, то и эти поля не должны фигурировать в запросе к БД. Не указал юзер город, значит не должно его быть в запросе. Но это несколько сложно. По тому я предложил вам вариант с LIKE.
Что бы вы не строили запрос из переменных.
Вот еще пример, потом я иду домой.
Есть форма: Хочу: пиццу, коллу, банан, шашлык, воды.
что бы искать по всем этим полям делаем запрос:
Все отлично работает, пока юзер указывает ВСЕ поля. А вы спрашиваете, как быть если юзер, что то не указала. В этом случае, нам придется удалить из запроса какую то строку. А это, учитывая ваши познания, будет сложно для вас.
По этому я предложил вам: работать с LIKE:
В этом случае вы сможете, не трогая запрос, в место не выбранных юзером значений вставить %. И тогда запрос будет совпадать во всех случаях. Что вам и надо.
А что у вас с цифрами не вышло не знаю, там все элементарно. Не указано - значит 0.
Если юзер что то не указал, то и эти поля не должны фигурировать в запросе к БД. Не указал юзер город, значит не должно его быть в запросе. Но это несколько сложно. По тому я предложил вам вариант с 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 'вода';
?
хочется уточнить насчёт LIKE!
SELECT * FROM table
значит если не указано что то тополучаеться запро такой?!
например шашлика нету
SELECT * FROM table
WHERE pizza LIKE 'пицца',
AND kolla LIKE 'колла',
AND banan LIKE 'банан',
AND shashlik LIKE '%',
AND voda LIKE 'вода';
?
_____________