Выбор записей из таблицы.

bav

Новичок
Выбор записей из таблицы.

$r=mysql_query("select name,descr,type,visit,place from catalog where type=' ".$theme_sort." ' and place='". $place_sort ."' ORDER BY ". $name_sort ." ". $type_sort ."");

вот есть такой код, он выбирает из таблицы строки в зависимости от значения переменных.

А вот скажем если одна из переменных будет пуста, то я хочу, что бы при выборе строк, в таком случае, отбор по пустой переменной не велся. Проще говоря, что бы она не влияла на отбор. Пробовал присваивать (скажем $theme_sort будет пустой) присваивать ей значение * т.е. получалось так ...where type='*'.... но выходит ошибка.....Подскажите пожалуйста, как бы это хорошо сделать?
 

_RVK_

Новичок
bav
Очень просто. Конструируй запрос а потом выполняй.
 

_RVK_

Новичок
PHP:
$sql = 'SELECT * FROM tbl WHERE 1=1 ';
$sql .= !empty($var) ? ' AND varfield = '.$var : '';
$sql .= !empty($var1) ? ' AND varfield1 = '.$var1 : '';
....
 

bav

Новичок
спасибо....буду пробывать

-~{}~ 08.12.05 19:45:

ЧТо-то я видимо не так делаю....вообщем отталкиваясь от кода
<font color=green>$r=mysql_query("select * from mytable where type=' ".$theme_sort." ' and place=' ". $place_sort ." ' ORDER BY pole1 asc);</font>
ТАк вот переменных $theme_sort и $place_sort может быть, может не быть, может одна из них быть.... я понял что писать надо так
<font color=green>
$r =mysql_query("SELECT * from mytable ORDER BY pole1 asc WHERE 1=1");
$r.=!empty($theme_sort) ? " AND type='$theme_sort : '"
$r.=!empty($place_sort) ? " AND place='.$place_sort : '"</font>

-~{}~ 08.12.05 19:47:

<font color=green> хотел текст покрасивее сделать, так что на это забейте! =)))

-~{}~ 08.12.05 20:28:

тно так не работает! КТо скажет где ошибка?

-~{}~ 08.12.05 23:29:

Я понял, что мы снача генерируем сам код запроса, и ставим его в mysql_querry($sql), но вот когда пустые переменные $theme_sort и $place_sort, но когда они имеют значения, не работает....вот если мне попробывать напрямую значение поставить, это будет так: $sql .= !empty($var1) ? ' AND varfield1 =value1':; - так, двоеточие вообще то стоит?
 

_RVK_

Новичок
bav

"не работает" это не описание проблеммы. Тот код что ты привел вообще работать не должен.

PHP FAQ: Ничего не работает! Что делать???

Теперь я дал тебе всю необходимую информацию. Дальше проблеммы могут быть только в кривизне твоих рук.

-~{}~ 09.12.05 00:14:

Да, еще забыл. Синтаксис $var = (...) ?... :... ; Это тот же if. Если условие итина то выполняется то что после вопроса ина че после двоеточия. Результат присваивается переменной. Подробнее от тринарном операторе можешь почитать в мане.
 

bav

Новичок
Огромное, нет, просто огроменное спасибо RVK, Все оказалось очень просто! Я запутался с ? и : ну и с кавычками тоже..=)))))))) Теперь все работает!
 

Фанат

oncle terrible
Команда форума
вот блин и я о том же.
строчку сэкономили, а по читабельности как танком проехали.
написать нормальным английским языком
if (!empty($_GET['rooms'])) $w[]="rooms='".adds($_GET['rooms'])."'";
им девичья честь не позволяет - видите ли, по правилам надо с кучерявыми скобочками и на новой строке.
а тернарное уродство зато - законное.
 
Сверху