Select where

streloc

Новичок
Select where

ЕСТЬ ВОТ ТАКОЙ ЗАПРОС
$query = "select* from pokkomn where ".$searchtype." like'%".$search."%'";,
он работает НАДО добавить ещё одну переменную, она может быть а может и не быть.

Вопрос как ещё добать переменную, всё в одной таблице:
$query = "select* from pokkomn where ".$searchtype." like'%".$search."%'" and ($kat_doma); не работает

$query = "select* from pokkomn where ".$searchtype." like'%".$search."%'".$kat_doma; тоже не работает
 

Demiurg

Guest
query = "select* from pokkomn where ".$searchtype." like'%".$search."%' and ".$kat_doma." like '%".$search."%' "; так ?

ps "не работает" - это очень хорошее объяснение проблемы, все сразу объясняет
 

streloc

Новичок
Не работает.
У меня есть select=searchtype и поле=search -это всё работает.
Но вот добавляю кнопку radio=kat_doma и теперь поиск вообще не работает. Хотя переменная kat_doma передаётся на страницу.
 

Demiurg

Guest
дубль два:
"не работает" - это очень хорошее объяснение проблемы, все сразу объясняет
 

streloc

Новичок
$query = "select* from pokkomn where ".$searchtype." like'%".$search."%'";, При таком запросе у меня происходит поиск и выводятся всё из базы в соответствии с $searchtype мне надо добавить ещё, один вариант поиска
 

Demiurg

Guest
что ты подразумеваешь под "вариантом поиска" ?
 

streloc

Новичок
ВОТ КОД
<select name="searchtype">
<option>&nbsp;&nbsp;&#226;&#251;&#225;&#238;&#240; &#234;&#224;&#242;&#229;&#227;&#238;&#240;&#232;&#232;&nbsp;&nbsp;&nbsp;
<option value="metro">metro
<option value="city">city
<option value="kat_doma">kat_doma
</select>
ВОТ ЗАПРОС
$query = "select* from pokkomn where ".$searchtype." like'%".$search."%'";
КАК СДЕЛАТЬ ЧТОБЫ ПОИСК ЁЩЁ ШЁЛ И ПО ИМЕНИ И ПО ВРЕМЕНИ итд.
 

streloc

Новичок
ВОТ КОД
$NAME=IGOR;

<select name="searchtype">
<option> &#226;&#251;&#225;&#238;&#240; &#234;&#224;&#242;&#229;&#227;&#238;&#240;&#232;&#232;
<option value="metro">metro
<option value="city">city
<option value="kat_doma">kat_doma
</select>
ВОТ ЗАПРОС
$query = "select* from pokkomn where ".$searchtype." like'%".$search."%'";
КАК СДЕЛАТЬ ЧТОБЫ ПОИСК ЁЩЁ ШЁЛ И ПО ИМЕНИ И ПО ВРЕМЕНИ итд.

ПО ИМЕНИ
NAME
 

AlexVN

Новичок
Надо SQL учить.
За WHERE строитися логическое выражение, похожее на условие в if.
(UserID = 1 or UserName like '%vasya%') and hasAccount=1

Наиболее часто используемым способом является составление where по пришедшим параматрам. Например:
$where = array();
if (array_key_exists('param1', $_GET) && $_GET['param1'] != '')
$where[] = 'field1 = ' . toSQL($_GET['param1'] )
if (array_key_exists('param2', $_GET) && $_GET['param2'] != '')
$where[] = 'field1 like \'%' . toSQL($_GET['param2']) . '%\''

$query = 'select field1, field2 from table1' . (count($where) ? ' where '. implode(' or ', $where) : '');

Примечания: toSQL должна экранировать кавычки и другие спецсимволы, которые не должны попасть в SQL, порядка параметров implode не помню. Может надо поменять местами.
 

streloc

Новичок
Ну что никто не может мне помочь Как сделать поиск по многим полям таблицы. Может пример кто кинет или ещё как нибудь(ссылочку). Очень надо.
Может я сложно объясняюсь но вопрос то лёгкий.
С одной страницы на другую передаю переменные. Их надо вставить после where и потом по этому условию должны выводится данные
 

AlexVN

Новичок
Уф...

$var1 = 'огурцы';
$var2 = 'зеленые';

$query = 'select * from продукты where продукт="'. $var1 '" and цвет="' . $var2 '"';
print $query;

Получишь в результате:
select * from продукты where продукт="огурцы" and цвет="зеленые"

Пойду, пообедаю, пожалуй... А то что-то мысли о еде :)
 

Dallas

Guest
Алекс, стрелок говорит, что второе условие может быть, а может и не быть... тогда надо делать проверку на то, есть ли второе услови, и в зависимости от результата выполнять один запрос из двух:

если есть второе условие
select * from продукты where продукт="огурцы" and цвет="зеленые"

если условие однно
select * from продукты where продукт="огурцы"
 

Dallas

Guest
Кстати, стрелок, есть хорошая дока по оператору select => http://sql.ipps.ru/... там найдешь снизу ссылку на справку.
 

AlexVN

Новичок
Даллас, посмотри мой пост от 20.01.04:
$where = array();
if (array_key_exists('param1', $_GET) && $_GET['param1'] != '')
...
$query = 'select field1, field2 from table1' . (count($where) ? ' where '. implode(' or ', $where) : '');
 

streloc

Новичок
Я вот делаю так

if (!$cenamin && !$cenamax)
$query = 'select* from pokkomn where '.$searchtype.' like"%'.$search.'%"';

else if ($cenamin==$cenamin || $cenamax==$cenamax||$kat_doma==$kat_doma)
$query = 'select* from pokkomn where '.$searchtype.' like"%'.$search.'%" and cena>="'.$cenamin.'" and cena<="'.$cenamax.'" and kat_doma="'.$kat_doma.'"';

а вот как к ЭТОМУ прикрутить ещё парочку зачений НЕ ЗНАЮ.
ПОМОГИТЕ ЛЮДИ ДОБРЫЕ.
 

streloc

Новичок
AlexVN и всем.
Покажите на примере как сделать запрос, пять переменных, они могут быть все или не все, только некоторые
$a $b $c $d $e

Как написать к ним SELECT?????
Ну очень нужно..........
P.S. Уже три дня бьюсь и ни чего.
 

гоша

Guest
$УСЛОВИЯ=array();

if(isset($_GET['a'])) $УСЛОВИЯ[]="a='{$_GET['a']}' ";
if(isset($_GET['b'])) $УСЛОВИЯ[]="b='{$_GET['b']}' ";

и так до посинения

$ЗАПРОС="select * from ... where ".implode(" AND ",$УСЛОВИЯ)

по типу того
 
Сверху