bupy7

bupy7
Рейтинг
30
Регистрация
18.03.2014
Должность
Web-developer

Я уже забыл все твои условия. Так?

$start_cost = $_GET['start_cost'] != '' ? $_GET['start_cost'] : null;

$end_cost = $_GET['end_cost'] != '' ? $_GET['end_cost'] : null;

if (!is_null($start_cost) && !is_null($end_cost)) {

$query_cost = " AND cost BETWEEN {$start_cost} AND {$end_cost}";

} elseif (!is_null($start_cost)) {

$query_cost = " AND cost>={$start_cost}";

}

Нет, подожди. Я так и не понял, а чем вариант klassev не катит? О_о

$start_cost = $_GET['start_cost'] ? (int)$_GET['start_cost'] : null;

$end_cost = $_GET['start_cost'] ? (int)$_GET['start_cost'] : null;

if (!is_null($start_cost) && !is_null($end_cost)) {

$query_cost = " AND cost BETWEEN {$start_cost} AND {$end_cost}";

} elseif ($start_cost) {

$query_cost = " AND cost>={$start_cost}";

}

mortido, чувак, давай ТЗ. Нет ТЗ - давай до свидания. :D Пиши всё и сразу, что тебе нужно? Я и klassev уже запутались.

mortido, тогда просто сделайте как предлагал klassev в последний раз.

klassev:
BETWEEN...у без разницы, в какую сторону меряете...

удивительно, видать у меня mysql особенный что ему не всё равно.

---------- Добавлено 17.02.2015 в 22:20 ----------

klassev, http://prntscr.com/66cl0b и http://prntscr.com/66clfo

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

тогда тупо вот так

$start_cost = (int)$_GET['start_cost'];

$end_cost = (int)$_GET['end_cost'];

if ($start_cost < $end_cost) {

$query_cost = " AND cost BETWEEN $start_cost AND $end_cost";

} else {

$query_cost = " AND cost BETWEEN $end_cost AND $start_cost";

}



---------- Добавлено 17.02.2015 в 22:14 ----------

klassev:
результат 3 и 4 одинаковые - выборка от 0 до 2

в одном случае больше или равно в другом меньше или равно. что не так?)

klassev:
if (isset($_GET['start_cost']) && isset($_GET['end_cost']))
{
$start_cost = (int)$_GET['start_cost'];
$end_cost = (int)$_GET['end_cost'];

$query_cost = " AND cost BETWEEN $start_cost AND $end_cost";
}

я согласен с этим куском кода. кто спорит, но я выше написал вам суть вопроса автора. так бы и between хватило.

klassev:
первый if = третьему if

тут BETWEEN вообще не сработает

учитывая последние изменения

$start_cost=1; 

$end_cost=1;
// результат 2 if

$start_cost=1;
$end_cost=2;
// результат 1 if

$start_cost=2;
$end_cost=0;
// результат 3 if

$start_cost=0;
$end_cost=2;
// результат 4 if

что не так?

ну. тогда так делай.

if ($start_cost && $end_cost && $start_cost < $end_cost) {

$query_cost = " AND cost BETWEEN {$start_cost} AND {$end_cost}";
} elseif ($start_cost && $end_cost && $start_cost == $end_cost) {
$query_cost = " AND cost={$start_cost}";
} elseif ($start_cost > $end_cost) {
$query_cost = " AND cost>={$start_cost}";
} elseif ($start_cost < $end_cost) {
$query_cost = " AND cost<={$end_cost}";
}
mortido:
Господи, Алилуя! Спасибо преогромное)

да пожалуйста. обращайся. =)

Всего: 55