- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
$start_cost = (int)$_GET["start_cost"];
$end_cost = (int)$_GET["end_cost"];
if (!empty($start_cost) OR !empty($end_cost))
{
$query_cost = " AND cost BETWEEN $start_cost AND $end_cost";
}
при нулевых значениях выполняться не будет...поэтому и нет сортировки
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";
}
при нулевых значениях выполняться должно
...и не нужно ничего городить
ЗЫ
для empty() ноль пустое значение
http://php.net/manual/ru/function.empty.php
$start_cost = (int)$_GET["start_cost"];
$end_cost = (int)$_GET["end_cost"];
if (!empty($start_cost) OR !empty($end_cost))
{
$query_cost = " AND cost BETWEEN $start_cost AND $end_cost";
}
при нулевых значениях выполняться не будет...поэтому и нет сортировки
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";
}
при нулевых значениях выполняться должно
...и не нужно ничего городить
Полезность вашего кода стремится к 0. Можно вообще тогда isset убрать раз там (int). Потом, автору не просто выбор между нужен. И, не сортировка, а фильтрация.
---------- Добавлено 17.02.2015 в 21:22 ----------
для empty() ноль пустое значение
http://php.net/manual/ru/function.empty.php
всё верно. никто и не отрицает.
когда заполняю только первое поле и когда заполняю одинаковыми значениями два поля: bool(false)
Полезность вашего кода стремится к 0. Можно вообще тогда isset убрать раз там (int). Потом, автору не просто выбор между нужен. И, не сортировка, а фильтрация.
---------- Добавлено 17.02.2015 в 21:22 ----------
всё верно. никто и не отрицает.
ему нужно вытащить в диапазоне - значит нужны старт и енд значения, их наличие мы проверяем иссетом - так?
значит isset - нужен, чтобы не вываливалась ошибка при отсутствии значений....
если заданы оба значения int переводит их из строки в цифру и подставляем...что не так?
в каком месте стремится к 0? ;)
mortido, Надо значения и имена полей в одинарные кавычки обрамлять, а таблиц в грависы.
---------- Добавлено 17.02.2015 в 21:37 ----------
ему нужно вытащить в диапазоне - значит нужны старт и енд значения, их наличие мы проверяем иссетом - так?
isset в этом случае всегда даст true, а нам не просто диапазон нужен. =)
если заданы оба значения int переводит их из строки в цифру и подставляем...что не так?
всё верно
---------- Добавлено 17.02.2015 в 21:39 ----------
mortido, покажи еще после mysql_query что будет
mortido, Надо значения и имена полей в одинарные кавычки обрамлять, а таблиц в грависы.
---------- Добавлено 17.02.2015 в 21:37 ----------
isset в этом случае всегда даст true, а нам не просто диапазон нужен. =)
всё верно
как он вам даст true , в случае , если гетом не передается на пример start_cost ???
как он вам даст true , в случае , если гетом не передается на пример start_cost ???
у автора в форму оба значения попадают. Если одно из не попадёт, то это уже не between запрос, а больше или меньше. Но, т.к. у ТС всё же оба они попадают - выкручиваемся как можем :D
Чего срёмся-то?) Давайте жить дружно. (с)
mortido, покажи еще после mysql_query что будет
string(52) "SELECT * FROM cards WHERE class_id AND `cost`=>3 "
string(52) "SELECT * FROM cards WHERE class_id AND `cost`=>3 "
только не один cost нужно оборачивать. И что там class_id делает? Смысл в нем есть для запроса?)
Тьфу блин. Я запрос неправильно отправил. 🤪 хотя тогда б работал between
Та бросьте...кто среться... ;) помогаем же разобраться....
Попробую еще раз.
Изначально его условие (которое с нулями) не выполнялось т.к. значения проверялись при помощи empty а т.к. для empty 0 пустое значение, то запрос с BETWEEN не добавлялся.... с пятёркой же все работало...значит дело только к нулях
если быть на 100% уверенным, что оба значение передаются гетом? то конечно можно не пользоваться isset ом ... это так... для подстраховки. ну тогда достаточно просто int и в запрос.