Автор, сделай замену прошлого куска на этот:
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}"; }
только не один cost нужно оборачивать. И что там class_id делает? Смысл в нем есть для запроса?)
Тьфу блин. Я запрос неправильно отправил. 🤪 хотя тогда б работал between
у автора в форму оба значения попадают. Если одно из не попадёт, то это уже не between запрос, а больше или меньше. Но, т.к. у ТС всё же оба они попадают - выкручиваемся как можем :D
Чего срёмся-то?) Давайте жить дружно. (с)
mortido, Надо значения и имена полей в одинарные кавычки обрамлять, а таблиц в грависы. ---------- Добавлено 17.02.2015 в 21:37 ----------
isset в этом случае всегда даст true, а нам не просто диапазон нужен. =)
всё верно ---------- Добавлено 17.02.2015 в 21:39 ---------- mortido, покажи еще после mysql_query что будет
var_dump("SELECT * FROM cards WHERE class_id $query_cost $query_class $query_quality $query_nabor");die();
Полезность вашего кода стремится к 0. Можно вообще тогда isset убрать раз там (int). Потом, автору не просто выбор между нужен. И, не сортировка, а фильтрация.---------- Добавлено 17.02.2015 в 21:22 ----------
всё верно. никто и не отрицает.
после
вставь
var_dump($result);die();
и покаж.
ну вот. что не так тогда?) в первом варианте выбор цены, которая больше или равна 3, во-втором выбор цены, которая больше или равна 0.---------- Добавлено 17.02.2015 в 21:07 ----------
Что isset всегда true будет давать.
кстати да 🤪 я чот (int) проигнорил.
После
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}";
}
вставьте
var_dump($start_cost, $end_cost, $query_cost);die();
и вывод сюда.
klassev, вы тему читаете? =)---------- Добавлено 17.02.2015 в 20:50 ----------
да быть этого не может. у вас тогда должен был добавиться в запрос это AND cost=>{$start_cost}
А вы файл весь не можете прикрепить где этот поиск? Может где переопределяется?
$start_cost = (int)$_GET['start_cost'];
$end_cost = (int)$_GET['end_cost'];