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
в одном случае больше или равно в другом меньше или равно. что не так?)
Я уже забыл все твои условия. Так?
$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 в последний раз.
BETWEEN...у без разницы, в какую сторону меряете...
удивительно, видать у меня mysql особенный что ему не всё равно.
---------- Добавлено 17.02.2015 в 22:20 ----------
klassev, http://prntscr.com/66cl0b и http://prntscr.com/66clfo
все работает. только как сделать, чтобы ноль тоже принимался как значение, а то если я ввожу от 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 ----------
результат 3 и 4 одинаковые - выборка от 0 до 2
в одном случае больше или равно в другом меньше или равно. что не так?)
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 хватило.
первый if = третьему if
тут BETWEEN вообще не сработает
учитывая последние изменения
что не так?
ну. тогда так делай.
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}";
}
Господи, Алилуя! Спасибо преогромное)
да пожалуйста. обращайся. =)