фильтр выборки по цене

bupy7
На сайте с 18.03.2014
Offline
30
#51

Нет, подожди. Я так и не понял, а чем вариант 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}";

}

M
На сайте с 01.10.2014
Offline
61
#52
bupy7:
Нет, подожди. Я так и не понял, а чем вариант 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}";
} else {
$query_cost = ' AND cost>=' . (int)$start_cost;
}

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

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

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

он не катил тем, что работал только если заполнены оба поля или последнее, а если оба поля оставались пустым, то это засчитывалось как найти в диапазоне от 0 до 0

Лучшая вап клик пп для выкупа подписок (https://mcwap.ru/?r=1153)
bupy7
На сайте с 18.03.2014
Offline
30
#53

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

$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}";

}

M
На сайте с 01.10.2014
Offline
61
#54
bupy7:
$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>={$start_cost}";
}

ну это самый близкий вариант. здесь: http://ru.hearthhead.com/cards . если ввести от 0 до 0, то он выведет эти данные, а этот код просто выводит все. если я ввел от 10 до 5, то он ничего не выводит, что мне и нужно, но если ввожу от 10 до 0, то ноль просто игнорируется и выводится все от 10

bupy7
На сайте с 18.03.2014
Offline
30
#55

mortido, поправь код. Я изменил пока ты проверял.

---------- Добавлено 17.02.2015 в 23:11 ----------

$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) && $start_cost <= $end_cost) {

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

} elseif (!is_null($start_cost)) {

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

}

M
На сайте с 01.10.2014
Offline
61
#56
bupy7:
mortido, поправь код. Я изменил пока ты проверял.

одно осталось: при от 0 до 0 ничего не выводит, только это исправить нужно

я про этот кусок кода:

$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}";

}

bupy7
На сайте с 18.03.2014
Offline
30
#57

if ($_GET['start_cost'] == '' && $_GET['end_cost'] == '') {

$start_cost = $end_cost = 0;

} else {

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

$end_cost = $_GET['end_cost'] != '' ? (int)$_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}";

}

M
На сайте с 01.10.2014
Offline
61
#58
bupy7:
if ($_GET['start_cost'] == '' && $_GET['end_cost'] == '') {
$start_cost = $end_cost = 0;
} else {
$start_cost = $_GET['start_cost'] != '' ? (int)$_GET['start_cost'] : null;
$end_cost = $_GET['end_cost'] != '' ? (int)$_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}";
}

также( если ничего не вводить и применить фильтр, то просто ничего не выводится

bupy7
На сайте с 18.03.2014
Offline
30
#59
mortido:
также( если ничего не вводить и применить фильтр, то просто ничего не выводится

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

Покажи что приходит в GET когда:

1) ничего не вводишь

2) вводишь 0 и 0

3) вводишь 0 и 3

4) вводишь 3 и 0

5) вводишь 1 и 3

6) вводишь 3 и 1

7) вводишь 3 и 3

8) первое пустое, второе 0

9) первое пустое, второе 3

10) первое 0, второе пустое

11) первое 3, второе пустое

добавив в начало var_dump($_GET['start_cost'], $_GET['end_cost']);die();

M
На сайте с 01.10.2014
Offline
61
#60

ну в этом варианте все в порядке:

$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}";

}

проблема только, если ввести в оба поля 0, то тогда ничего не выводится

---------- Добавлено 17.02.2015 в 23:33 ----------

1) ничего не вводишь - string(0) "" string(0) ""

2) вводишь 0 и 0 - string(1) "0" string(1) "0"

3) вводишь 0 и 3 - string(1) "0" string(1) "3"

4) вводишь 3 и 0 - string(1) "3" string(1) "0"

5) вводишь 1 и 3 - string(1) "1" string(1) "3"

6) вводишь 3 и 1 - string(1) "3" string(1) "1"

7) вводишь 3 и 3 - string(1) "3" string(1) "3"

8) первое пустое, второе 0 - string(0) "" string(1) "0"

9) первое пустое, второе 3 - string(0) "" string(1) "3"

10) первое 0, второе пустое - string(1) "0" string(0) ""

11) первое 3, второе пустое - string(1) "3" string(0) ""

это при коде:

$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}";

}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий