Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Выборка из БД
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Выборка из БД

Страниц (1): [1]
 

1. kalumb - 20 Октября, 2012 - 13:51:59 - перейти к сообщению
Здравствуйте!
У меня не получается сделать запрос в БД. Уже перечитал много мануалов, но так и не сделал.
Вот код:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query("SELECT text,date,id,tip,title FROM data WHERE tip='$tip' AND cat='$cat' AND raen='$raen' AND kom='$kom' AND level='$level'",$db);
  3. $myrow = mysql_fetch_array($result);
  4.  

Вот в чём проблема:
Это у меня сортировка объявлений. Человек указывает в выдающимся списке Тип, Категорию, Район, Комнаты, Этаж. Все переменные летят постом в обработчик.
То есть если человек указал 1-у комнату и 5-ый этаж, то должны вывестись все объявления в который 1 комната И первый этаж.
А проблема в том, что если человек не указал например район, то выборка вся обнуляется.
Вот я и не знаю как сделать так, чтобы пустые значения в запросе пропускались. Огорчение
2. Alho - 20 Октября, 2012 - 13:56:38 - перейти к сообщению
Как правило запрос формируется по частям. Т.е. сначала проверяем, пришел ли tip? Пришел, добавляем "tip='$tip'". Потом проверяем пришел ли cat, и т.д.
3. kalumb - 20 Октября, 2012 - 20:47:59 - перейти к сообщению
Alho
То есть получится несколько запросов на выборку?
4. dubasua - 20 Октября, 2012 - 21:30:56 - перейти к сообщению
А что там все в VARCHAR?
(Добавление)
И не нужно несколькими запросами, можно сделать примерно вот так
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $where = "tip = '$tip'";
  3. $column = "tip";
  4. if($cat){
  5.      $where .= " && cat = '$cat'";
  6.      $column .= ",cat";
  7. }
  8. if($raen){
  9.      $where .= " && raen = '$raen'";
  10.      $column .= ",raen";
  11.  
  12. }
  13. //и так со всеми полями
  14.  
  15. $query = "SELECT $column FROM data WHERE $where";
  16.  
  17. $result = mysql_query($query);
  18.  
  19.  
  20.  
  21.  
5. kalumb - 21 Октября, 2012 - 07:43:42 - перейти к сообщению
dubasua
Нет, поля в int.
Спасибо, твой вариант работает!
Только я его изменил:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. $where = "tip = '$tip'";
  3. IF($cat){
  4.      $where .= " && cat = '$cat'";
  5. }
  6. IF($raen){
  7.      $where .= " && raen = '$raen'";
  8. }
  9. IF($kom){
  10.      $where .= " && kom = '$kom'";
  11. }
  12. IF($level){
  13.      $where .= " && level = '$level'";
  14. }
  15. $query = "SELECT text,date,id,tip,title FROM data WHERE $where";
  16. $result = mysql_query($query);
  17.  

Я тоже пробовал с переменными, я просто не знал как дописывать значения переменной.
Только вот что в твоём варианте не работает:
Если пользователь не укажет tip, то всё обнуляется.

 

Powered by ExBB FM 1.0 RC1