поиск по нескольким полям

Lusis

Guest
поиск по нескольким полям

Ребятки без вашего совета ну совсем ни как :)

Возникла задача поиска по таблице со следующими условиями:
есть форма в которой пять (может быть и больше) полей. Соответственно и критерий поиска зависит от того в какие поля введено искомое слово. Т.е если введены все пять значений то понятно через if ( value1 and value2 and ....) и делаеться запрос со всеми значениями

where value1 = '$value1'

and value2 = '$value2

and value3 = '$value3

....................................
Но как мне быть если пользователь ввел данные не во все поля.
Если перебирать все возможные варианты через if() то получиться 25 вариантов. Может есть какой нибудь другой способ, может что то типа этого

where value1 = '$value1'

if ($value2) {and value2 = '$value2 }

and value3 = '$value3

.....................................

Очень надеюсь на то что сможете мне помочь.
 

tony2001

TeaM PHPClub
сделать все поля частью массива и [m]foreach[/m] сформировать запрос.
 

neko

tеam neko
если я правильно понял вопрос

перебираешь как-угодно введенные значения и конкатенацией добавляешь условия для WHERE
 

Lusis

Guest
Ой ребятки, как я понимаю есть возможность так сделать, только я как раз и не знаю как именно сформировать запрос,
Я думала что можно через $HTTP_POST_VARS перебрать. но вот как именно запрос написать не могу додуматься, пожалуйста поподробней, я не профи я только начинаю учиться, и то что для вас просто для меня еще очень сложно :(

И пожалуйста напишите как это "конкатенацией добавляешь" я именно это го то и не знаю и в этом то и вопрос который я не могу решить.

PS Отдельное спасибо модератору, за то что исправил название топика, с лирического на практическое :)
 

neko

tеam neko
Lusis

конактенация это просто соединение строк типа:
$foo = $bar . $baz;

читаем про строки в мане

смотришь какие переменные установлены
isset( ... ) и соответственно формируешь запрос

несколько полезных ссылок для начинающих есть тут:
http://phpfaq.ru/newbie
 

Lusis

Guest
Что такое "конактенация" я понимаю, я так файлы создаю с нужным расширением $feil.html но я ни как не пойму как именно сделать "формируешь запрос"

пожалуйста напишите как это должно выглядеть на примере с
value1, value2 and value3

where value1 = '$value1'

and value2 = '$value2

and value3 = '$value3

просто сам запрос а я там попробую разобраться, я надеюсь для вас это не будет сложно.
 

neko

tеam neko
Originally posted by Lusis
пожалуйста напишите как это должно выглядеть на примере с
value1, value2 and value3

where value1 = '$value1'

and value2 = '$value2

and value3 = '$value3
[/B]
просто например:

PHP:
$where = '';
if ( isset( $value1) )
{
    $where .= "value1 = $value1"
}

...

$result = mysql_query( 'select * from table_name ' . $where );
это при условии что у тебя mysql
AND между условиями для where расставь самостоятельно в зависимости от того какие параметры и как ты их обрабатываешь.

-~{}~ 18.06.04 13:42:

для примера
сделать это можно вот так:

PHP:
if ( $where != '' ) $where .= ' AND ';
 

Lusis

Guest
Спасибо, именно это я и просила, сейчас буду пробовать это все делать, как что получиться или не получиться :( сразу напишу. Большое вам спасибо еще раз.
 

Fiva

Держу ZMH
Автор оригинала: neko
просто например:

PHP:
$where = '';
if ( isset( $value1) )
{
    $where .= "value1 = $value1"
}

...

$result = mysql_query( 'select * from table_name ' . $where );
это при условии что у тебя mysql
AND между условиями для where расставь самостоятельно в зависимости от того какие параметры и как ты их обрабатываешь.

-~{}~ 18.06.04 13:42:

для примера
сделать это можно вот так:

PHP:
if ( $where != '' ) $where .= ' AND ';
А ты ничего не забыл? Ну например WHERE добавить в условия?
To Lusis: После формирования where проверяй не пустое ли оно и если не пустое - добавляй вперед WHERE
 

neko

tеam neko
да, забыл
это приблизительный пример в стиле "в этом направлении"

-~{}~ 18.06.04 13:55:

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

Lusis

Guest
К сожалению с наскока не получилось, у меня MySQl, и делаю я так

$where = '';

if ( isset( $value1 ) ) { $where .= "AND value1 = $value1" ; }
if ( isset( $value2) ) { $where .= "AND value2 = $value2" ;}

$result =mysql(DBName,"select * from rubrik " where . $where );

ну и там дальше идет обработка, так вот браузер пишет ошибку в строке $result =mysql( ... , хотя в редакторе при проверке на синтаксис все нормально,
 

alpine

Новичок
PHP:
$result =mysql(DBName,"select * from rubrik " where . $where ); // это что-то новенькое ?
 

neko

tеam neko
Lusis

функции mysql() вообще не существует.
сделай сначала просто select запрос.
потом добавь where
потом добавляй свои параметры
не надо пихать все сразу, когда ты плохо понимаешь что пишешь

читать тут:
http://ru.php.net/ru/mysql
 

Fiva

Держу ZMH
Автор оригинала: alpine
PHP:
$result =mysql(DBName,"select * from rubrik " where . $where ); // это что-то новенькое ?
Если месье извращенец, то может так будет более понятно?
$result =mysql(DBName,"select * from rubrik "." where" . $where );
 

Lusis

Guest
Так и я про тоже, значит нужно делать через

$result = mysql_query( 'select * from table_name ' . $where );

и тогда будет все работать, дело втом что я сразу так сделала, и написала по тому как боюсь что вы мне потом не ответите, а через эту функцию я еще не работала, пойду читать про нее. Пожалуйста не бросайте меня, я еще напишу :)
 

neko

tеam neko
alpine & Fiva

давайте вы своими дуратскими замечаениями не будете человек с толку сбивать окочательно
 

Lusis

Guest
Я не извращенка, я просто в этом деле слабо разбираюсь, и прошу помощи у вас. В надежде ее найти.
 

Lusis

Guest
Я уже совсем запуталась, так этот запрос работать не будет?

$result =mysql(DBName,"select * from rubrik "." where" . $where );

или будет.
 

StUV

Rotaredom
Lusis
не надо гадать
надо попробовать
если не работает и пишет ошибку - ты кроме вопроса почему пишешь ошибку и несколько (существенных) строк кода, ее вызывающих (как правило 4-5 строк до/после вызвавшей ошибку строки)
------------
зы: и прочти наконец правила форума и http://faq.phpclub.ru
 
Сверху