Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > sql запрос сравнение со значением в базе


Автор: supervladislav 26.9.2008, 14:34
у меня есть вот таких два  запроса)) выбора по цене от и до ,дело в том ,что когда вводишь цену несуществующую в базе тоесть меньше самого минимального  значения ,по идее выводиться ничего недолжнобыть ,а выводится , могли бы вы подсказать как с этим  бороться? 
Код

// цена от
if ($cena>0) { $t_cena.="AND cena >= $cena";} 

// цена до
if ($cena1>0) { $t_cena .=" AND cena <= $cena1";}

Автор: skyboy 26.9.2008, 15:14
где результирующий запрос?

Автор: supervladislav 26.9.2008, 15:33
весь запрос чтоли 

Автор: Sunvas 26.9.2008, 16:42
Да.

Автор: Diabolus 27.9.2008, 02:15
А цена меньше минимального значения хоть превышает 0? Если нет, то там и не добавляется условие ("if ($cena>0)").
И запрос, получаемый в результате, тоже не помешает, да.

Автор: supervladislav 29.9.2008, 14:27
зы а есть ли функция которая выводит код sql запроса  напровляемого в mysql_query

Автор: bars80080 29.9.2008, 17:28
хорошая привычка собирать запрос до того как его засунуть в функцию:

Код

if ($cena>0) { $t_cena.="AND cena >= $cena";} 

// цена до
if ($cena1>0) { $t_cena .=" AND cena <= $cena1";}
$sql .= $t_cena;

$r = mysq_query($sql);

var_dump($sql); var_dump($r);
// вот и проверили

Автор: supervladislav 30.9.2008, 12:29
вот такой код 

Код

// цена от
if ($cena>0) { $t_cena.="AND cena >= $cena";} 

// цена до
if ($cena1>0) { $t_cena .=" AND cena <= $cena1";}

// общая площадь от
if ($obs_s>0) { $t_obs_s.="AND obs_s >= $obs_s";} 

// общая площадь до
if ($obs_s1>0) { $t_obs_s .=" AND obs_s <= $obs_s1";}

// площадь от
if ($obs_s2>0) { $t_kuchna.="AND kuchna >= $obs_s2";} 

// общая площадь кухни до
if ($obs_s3>0) { $t_kuchna .=" AND kuchna <= $obs_s3";}

//Площадь дома от
if(($obs_s2>0 and $ttype2=="Дом с земельным участком") or ($obs_s2>0 and $ttype2=="Здание с земельным участком")){$sdoma.="AND obs_s2 >= $obs_s2";}

//Площадь дома  до
if(($obs_s1>0 and $ttype2=="Дом с земельным участком") or ($obs_s1>0 and $ttype2=="Здание с земельным участком")){$sdoma.="AND obs_s2 <= $obs_s1";}

Автор: skyboy 30.9.2008, 13:13
supervladislav, это и есть результирующий sql-запрос? немудрено, что вываливается ошибка.

Автор: supervladislav 30.9.2008, 13:18
не далеко не весь ,а в чём ошибка

Автор: skyboy 30.9.2008, 13:29
ошибка в том, что в SQL-запросе не может быть 
Цитата(supervladislav @  30.9.2008,  11:29 Найти цитируемый пост)
if ($obs_s1>0) { $t_obs_s .=

в РНР-коде - может, а в SQL-запросе не может. ты отличаешь РНР-код от SQL-запроса?

Автор: supervladislav 30.9.2008, 13:40
ты имешь ввиду нельзя делать вот так 
Код

{ $t_obs_s .=

Автор: bars80080 30.9.2008, 14:37
да, что-то я тоже skyboy тя не понял


supervladislav, нас вообще интересует полный запрос, уже без пхп-переменных. т.е. весь собранный:

var_dump($sql);  

где $sql - все эти твои $t_cena, $t_obs_s, $t_kuchna, $obs_s2 и т.п. собранные в едино перед зафигачиванием их в mysql_query

там же сразу ошибка будет видна

Автор: skyboy 30.9.2008, 14:56
Цитата(bars80080 @  30.9.2008,  13:37 Найти цитируемый пост)
да, что-то я тоже skyboy тя не понял

а чего тут понимать? просили SQL-запрос. то, что дал supervladislav - либо не запрос вовсе, а РНР-код, либо некорректный SQL-запрос. 

Автор: supervladislav 30.9.2008, 18:36
Код

AND ttype2='Жилая недвижимость'AND ( ttype3='1 комнатная квартира' OR ttype3='2 комнатная квартира' OR ttype3='3 комнатная квартира' OR ttype3='4-х и более комнатная квартира' ) AND gorod='Москва'AND cena >= '100'AND obs_s >= '10'gorod_stASC

код вот так поменял поиск по площади кухни почему-то неработает 

Код

// площадь от
if (!empty($skuhot)) { $kuh.="AND kuchna >= '$skuhot'";} 



Код

// цена от
if (!empty($cena)) { $t_cena.="AND cena >= '$cena'";} 

// цена до
if (!empty($cena1)) { $t_cena.="AND cena <= '$cena1'";}

// общая площадь от
if (!empty($sobot)) { $t_obs_s.="AND obs_s >= '$sobot'" ;} 

// общая площадь до
if (!empty($sobdo)) { $t_obs_s.="AND obs_s <= '$sobdo'";}

// площадь от
if (!empty($skuhot)) { $kuh.="AND kuchna >= '$skuhot'";} 

// общая площадь кухни до
if (!empty($skuhdo)) { $kuh.="AND kuchna <= '$skuhdo'";}

//Площадь дома от
if((!empty($sdomot) and $ttype2=="Дом с земельным участком") or (!empty($sdomot) and $ttype2=="Здание с земельным участком")){$sdoma.="AND obs_s2 >= '$sdomot'";}

//Площадь дома  до
if((!empty($sdomdo) and $ttype2=="Дом с земельным участком") or (!empty($sdomdo) and $ttype2=="Здание с земельным участком")){$sdoma.="AND obs_s2 <= '$sdomdo'";}


Автор: bars80080 30.9.2008, 20:03
Цитата

obs_s >= '10'gorod_stASC


- это опечатка?

Автор: supervladislav 30.9.2008, 20:24
переменная gorod_st не используется

Автор: bars80080 30.9.2008, 20:31
Цитата(supervladislav @  30.9.2008,  20:24 Найти цитируемый пост)
переменная gorod_st не используется 

слушай, можно подробнее объяснять? 
если она не используется, то что она там делает? если опечатка, то почему ты так и не приводишь реального запроса?


слушай, ты тему начал 26-го числа, уже 30-ое наисходе, если бы привёл всё что от тебя просят сразу, то разобрались бы буквально за несколько часов. охота тебе волыну устраивать?

Автор: supervladislav 30.9.2008, 20:46
а вот это чем не sql запрос
Код

SELECT * FROM $T_SPISOK WHERE ttype='Продаю' AND ttype2='Жилая недвижимость'AND ( ttype3='1 комнатная квартира' OR ttype3='2 комнатная квартира' OR ttype3='3 комнатная квартира' OR ttype3='4-х и более комнатная квартира' ) AND gorod='Москва' AND cena >= '100' AND obs_s >= '10'

вот так 

Автор: teroni 30.9.2008, 21:17
Тем, что начала нету...
Код

SELECT * FROM `table` WHERE ....

Автор: bars80080 30.9.2008, 21:19
а тем что он не полный и если его вставить в строку mysql он стопудово не выполнится

по факту, мы не знаем где ты пишешь свои придумки для нас, а где постишь реальные проблемы

нормальное построение вопроса включает в себя: озвучивание проблемы; код, который был именно во время появления проблемы (не исправленный, не упрощённый, а именно тот самый); и запрос, который не написал для нас, а был именно тогда. не до, не после, а именно во время появления проблемы. и целиком

по специфике - обязательно наличие ошибок, либо упоминания того, что они не появляются. (конечно, нужно написать стоит ли у тебя error_reporting(E_ALL) и echo mysql_error(); после запроса)

вот тогда, это будет настоящее обсуждение, что у тебя не так. хотя я уверен, что выполнив все эти процедуры, ты и сам найдёшь, что и где у тебя не страстается.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)