просто выводит то, что я ввел в первое поле. то есть ввел 2 и второе поле оставил пустым или даже заполнил, все равно выводит только то, что стоит 2 ---------- Добавлено 17.02.2015 в 22:59 ----------
он не катил тем, что работал только если заполнены оба поля или последнее, а если оба поля оставались пустым, то это засчитывалось как найти в диапазоне от 0 до 0
вообщем. вот как на этом сайте фильтр: http://ru.hearthhead.com/cards . там есть поле: Цена. и мне нужно, чтобы у меня результат также выводился и если в поле ничего нет, то просто выводится все, что есть в таблице. больше ничего не могу сказать)
да я пробовал, но в нем самая первая проблема, где при заполненном первом поле и пустом втором результатов нету
мне уже неловко вас доставать) просто последнее осталось: я ввел в start_cost 10, а в end_cost число, которое меньше 10 и результат выводится как-будто я ввел от 0 до 10, то есть если я ввожу в end_cost значение меньше, чем в start_cost, то результата быть не должно, так как последнее значение не может быть меньше начального. как то так
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, просто выводит все данные. а так все работает
слушайте. код выводит при первом заполненном поле и пустом втором, но теперь что-то еще страннее стало) если два одинаковых значения, то выводит от наименьшего и дальше все что есть. вообщем при двух одинаковых значениях в полях не корректно результат выдает
string(65) "SELECT * FROM cards WHERE class_id AND `cost` BETWEEN 3 AND 5 " с class_id все нормально выводится. навряд ли в нем дело может быть, так как я пробовал его менять на cost и ничего, тоже самое---------- Добавлено 17.02.2015 в 21:58 ----------
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("SELECT * FROM cards WHERE class_id $query_cost $query_class $query_quality $query_nabor");die();
string(52) "SELECT * FROM cards WHERE class_id AND `cost`=>3 "
когда заполняю только первое поле и когда заполняю одинаковыми значениями два поля: bool(false)
но данные почему-то не выводит. и кстати, если в оба поля ввести одинаковые значение, то также ничего не выводит. странно