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

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

Автор, сделай замену прошлого куска на этот:

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<={$end_cost}";
}
M
На сайте с 01.10.2014
Offline
61
#32
bupy7:
только не один cost нужно оборачивать. И что там class_id делает? Смысл в нем есть для запроса?)

Тьфу блин. Я запрос неправильно отправил. 🤪 хотя тогда б работал between

string(65) "SELECT * FROM cards WHERE class_id AND `cost` BETWEEN 3 AND 5 " с class_id все нормально выводится. навряд ли в нем дело может быть, так как я пробовал его менять на cost и ничего, тоже самое

---------- Добавлено 17.02.2015 в 21:58 ----------

bupy7:
Автор, сделай замену прошлого куска на этот:

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

Господи, Алилуя! Спасибо преогромное)

Лучшая вап клик пп для выкупа подписок (https://mcwap.ru/?r=1153)
bupy7
На сайте с 18.03.2014
Offline
30
#33
mortido:
Господи, Алилуя! Спасибо преогромное)

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

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

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

klassev
На сайте с 09.08.2007
Offline
135
#35
bupy7:
Автор, сделай замену прошлого куска на этот:

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

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

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

bupy7, мастер вы городить города ;)

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

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

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}";
}
klassev
На сайте с 09.08.2007
Offline
135
#37
mortido:
слушайте. код выводит при первом заполненном поле и пустом втором, но теперь что-то еще страннее стало) если два одинаковых значения, то выводит от наименьшего и дальше все что есть. вообщем при двух одинаковых значениях в полях не корректно результат выдает

ТС, как закончите заниматься садомазо, поставьте вместо первого вашего варианта этот:

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

}

ухожу фильму смотреть;)

bupy7
На сайте с 18.03.2014
Offline
30
#38
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

что не так?

M
На сайте с 01.10.2014
Offline
61
#39
bupy7:
ну. тогда так делай.

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

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

bupy7
На сайте с 18.03.2014
Offline
30
#40
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 хватило.

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