...
. "\n AND ( space >= '$minvalue_space' ) AND ( space <= '$maxvalue_space' )";
а так нет:
$min_space = " AND ( space >= '$minvalue_space' )";
$max_space = " AND ( space <= '$maxvalue_space' )";
...
. "\n AND access<=$gid AND published='1'"
. "\n" . $min_space . $max_space ;
Голова идет кругом уже. Где ошибка?
Спустя 6 минут, 17 секунд (24.06.2012 - 21:48) Игорь_Vasinsky написал(а):
Покажи что за ... прячется и ошибку запроса.
Спустя 12 минут, 46 секунд (24.06.2012 - 22:01) Lutsk написал(а):
Ладно, хотел бумагу сэкономить. Запрос (Joomla):
Ошибки не выдает. Просто все записи выводит.
// В эти переменные из формы прилетают 2 значения:
$minvalue_space= $database->getEscaped(JArrayHelper::getValue($_REQUEST,'minvalue_space',null));
$maxvalue_space= $database->getEscaped(JArrayHelper::getValue($_REQUEST,'maxvalue_space',null));
// если они прилетели, подставляю в запрос:
$min_space ='';
$max_space ='';
if($minvalue_space !="" && $minvalue_space !=null){ $min_space = " AND ( space >= '$minvalue_space' )"; }
if($maxvalue_space !="" && $maxvalue_price !=null){ $max_space = " AND ( space <= '$maxvalue_space' )"; }
$query = "SELECT id FROM #__estateagent WHERE " . $where . " ("
. "\n ((publish_up >= '0000-00-00' AND publish_up <= '$today') AND publish_down >= '$today')"
. "\n OR ((publish_up >= '0000-00-00' AND publish_up <= '$today' ) AND (publish_down = '0000-00-00' OR publish_down >= '$today'))"
. "\n OR (publish_up = '0000-00-00' AND publish_down = '0000-00-00')"
. "\n )"
. "\n AND access<=$gid AND published='1'"
//. "\n AND ( space >= '$minvalue_space' ) AND ( space <= '$maxvalue_space' )" - так фильтрует
. "\n" . $min_space . $max_space ; // а так - нет
Ошибки не выдает. Просто все записи выводит.
Спустя 7 минут, 55 секунд (24.06.2012 - 22:09) Игорь_Vasinsky написал(а):
а так
$min_space = "( space >= '$minvalue_space' )";
$max_space = "( space <= '$maxvalue_space' )";
$query = "SELECT id FROM #__estateagent WHERE " . $where . " ("
. "\n ((publish_up >= '0000-00-00' AND publish_up <= '$today') AND publish_down >= '$today')"
. "\n OR ((publish_up >= '0000-00-00' AND publish_up <= '$today' ) AND (publish_down = '0000-00-00' OR publish_down >= '$today'))"
. "\n OR (publish_up = '0000-00-00' AND publish_down = '0000-00-00')"
. "\n )"
. "\n AND access<=$gid AND published='1' "
. "\n AND " . $min_space . " AND " . $max_space ;
Спустя 13 минут, 7 секунд (24.06.2012 - 22:22) Lutsk написал(а):
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7
так ошибку выдал. И что тут с кавычками не так
?
так ошибку выдал. И что тут с кавычками не так

Спустя 4 минуты, 7 секунд (24.06.2012 - 22:26) Игорь_Vasinsky написал(а):
$query = "SELECT id FROM #__estateagent WHERE " . $where . " ("
. "\n ((publish_up >= '0000-00-00' AND publish_up <= '$today') AND publish_down >= '$today')"
. "\n OR ((publish_up >= '0000-00-00' AND publish_up <= '$today' ) AND (publish_down = '0000-00-00' OR publish_down >= '$today'))"
. "\n OR (publish_up = '0000-00-00' AND publish_down = '0000-00-00')"
. "\n )"
. "\n AND access<=$gid AND published='1' "
. "\n AND {$min_space} AND {$max_space}";
а так?
Спустя 8 минут, 12 секунд (24.06.2012 - 22:35) Lutsk написал(а):
та же ошибка... А может это быть связано с типом данных? В базе это числовое значение (decimal).
Спустя 6 минут, 18 секунд (24.06.2012 - 22:41) Игорь_Vasinsky написал(а):
покажи echo вот этого
$query = "SELECT id FROM #__estateagent WHERE " . $where . " ("
. "\n ((publish_up >= '0000-00-00' AND publish_up <= '$today') AND publish_down >= '$today')"
. "\n OR ((publish_up >= '0000-00-00' AND publish_up <= '$today' ) AND (publish_down = '0000-00-00' OR publish_down >= '$today'))"
. "\n OR (publish_up = '0000-00-00' AND publish_down = '0000-00-00')"
. "\n )"
. "\n AND access<=$gid AND published='1' "
. "\n AND {$min_space} AND {$max_space}";
Спустя 7 минут, 52 секунды (24.06.2012 - 22:49) Placido написал(а):
Это точно MySQL, а не MSSQL? Тогда к чему здесь #?
Я к тому, что все, что справа от # и до конца строки, MySQL воспринимает как комментарий.
#__estateagent
Я к тому, что все, что справа от # и до конца строки, MySQL воспринимает как комментарий.
Спустя 4 минуты, 54 секунды (24.06.2012 - 22:54) Lutsk написал(а):
SELECT id FROM #__estateagent WHERE id IN (1,3,2,4,5,6,7,8,9,10,11,12) AND (
((publish_up >= '0000-00-00' AND publish_up <= '2012-06-24') AND publish_down >= '2012-06-24')
OR ((publish_up >= '0000-00-00' AND publish_up <= '2012-06-24' ) AND (publish_down = '0000-00-00' OR publish_down >= '2012-06-24'))
OR (publish_up = '0000-00-00' AND publish_down = '0000-00-00')
)
AND access<=0 AND published='1'
AND ( space >= '0' ) AND
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7 SQL=SELECT id FROM jos_estateagent WHERE id IN (1,3,2,4,5,6,7,8,9,10,11,12) AND ( ((publish_up >= '0000-00-00' AND publish_up <= '2012-06-24') AND publish_down >= '2012-06-24') OR ((publish_up >= '0000-00-00' AND publish_up <= '2012-06-24' ) AND (publish_down = '0000-00-00' OR publish_down >= '2012-06-24')) OR (publish_up = '0000-00-00' AND publish_down = '0000-00-00') ) AND access<=0 AND published='1' AND ( space >= '0' ) AND
Спустя 3 минуты, 42 секунды (24.06.2012 - 22:57) Placido написал(а):
Серый цвет, начиная с #, на мысли не наводит? # нужно убрать - это признак начала комментария в MySQL.
Спустя 8 минут, 59 секунд (24.06.2012 - 23:06) Игорь_Vasinsky написал(а):
Цитата |
Имя может начинаться с любого допустимого символа, в частности, с цифры (в этом состоит отличие от правил, принятых во многих других базах данных). Однако имя не может состоять только из цифр. Не допускается использование в именах символа `.', так как он применяется для расширения формата имени |
ТС - у тя в $max_space -- чё нить формируется? чёт не видно в запросе.
это
$min_space ='';
$max_space ='';
if($minvalue_space !="" && $minvalue_space !=null){ $min_space = " AND ( space >= '$minvalue_space' )"; }
if($maxvalue_space !="" && $maxvalue_price !=null){ $max_space = " AND ( space <= '$maxvalue_space' )"; }
замени на
$min_space = !empty($minvalue_space) && $minvalue_space != null ? " AND ( space >= '$minvalue_space' )" : '';
$max_space = !empty($maxvalue_space ) && $maxvalue_price != null ? " AND ( space <= '$maxvalue_space' )" : '';
и запрос формируй так
$query = "SELECT id FROM #__estateagent WHERE " . $where . " ("
. "\n ((publish_up >= '0000-00-00' AND publish_up <= '$today') AND publish_down >= '$today')"
. "\n OR ((publish_up >= '0000-00-00' AND publish_up <= '$today' ) AND (publish_down = '0000-00-00' OR publish_down >= '$today'))"
. "\n OR (publish_up = '0000-00-00' AND publish_down = '0000-00-00')"
. "\n )"
. "\n AND access<=$gid AND published='1' "
. "\n{$min_space.$max_space}";
что выводит $query и есть ли ошибка?
Спустя 1 минута, 20 секунд (24.06.2012 - 23:08) Lutsk написал(а):
Placido, врядли. Корректно начал работать код такого вида:
Но почему так - для меня загадка.
if($minvalue_space !="" && $minvalue_space !=null){ $min_space = " AND ( space >= '$minvalue_space' )"; } //тут !empty не срабатывает
if(!empty($maxvalue_space)){ $max_space = " AND ( space <= '$maxvalue_space' )"; }// а тут наоборот
$query = "SELECT id FROM #__estateagent WHERE " . $where . " ("
. "\n ((publish_up >= '0000-00-00' AND publish_up <= '$today') AND publish_down >= '$today')"
. "\n OR ((publish_up >= '0000-00-00' AND publish_up <= '$today' ) AND (publish_down = '0000-00-00' OR publish_down >= '$today'))"
. "\n OR (publish_up = '0000-00-00' AND publish_down = '0000-00-00')"
. "\n )"
. "\n AND access<=$gid AND published='1'"
. "\n" . $min_space . $max_space ;
Но почему так - для меня загадка.
Спустя 36 секунд (24.06.2012 - 23:08) Игорь_Vasinsky написал(а):
Placido
это форум подсветил же.
это форум подсветил же.
Спустя 2 минуты, 5 секунд (24.06.2012 - 23:10) Игорь_Vasinsky написал(а):
я подкорректировал
Спустя 15 минут, 46 секунд (24.06.2012 - 23:26) Lutsk написал(а):
Игорь_Vasinsky, строка
Parse error: syntax error, unexpected '.', expecting '}'.
Не катит.
. "\n{$min_space.$max_space}";в запросе выдает ошибку:
Parse error: syntax error, unexpected '.', expecting '}'.
Не катит.
Спустя 2 минуты, 56 секунд (24.06.2012 - 23:29) Игорь_Vasinsky написал(а):
и без {} ???
Спустя 4 минуты, 9 секунд (24.06.2012 - 23:33) Lutsk написал(а):
а без - не фильтрует. Только если в условиях нижнее значение без !empty, а верхнее - с ним. Завтра на свежую голову буду думать...