Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Составления запроса
Форумы портала PHP.SU » » Вопросы новичков » Составления запроса

Страниц (1): [1]
 

1. nik_grey - 11 Августа, 2014 - 12:18:42 - перейти к сообщению
День добрый.
На странице есть форма для поиска картриджей. Выбирается по дате, марке, статусу, типу.
Везде кроме даты можно выбирать конкретную величину либо выбрать 'Не важно'.
Поиск по БД осуществляю через
и
, но ведь в БД нет значения 'Не важно'. Поэтому если выбрать дату и не указать допустим марка 'Не важно', то нечего не найдет.
Подскажите, пожалуйста, как быть.
Заранее спасибо.
2. Мелкий - 11 Августа, 2014 - 12:47:41 - перейти к сообщению
То не писать это условие в запрос.
3. nik_grey - 11 Августа, 2014 - 13:50:23 - перейти к сообщению
Мелкий пишет:
То не писать это условие в запрос.

Если честно, то не понял суть предложения. Можно подробней?
4. Tyoma5891 - 11 Августа, 2014 - 13:56:19 - перейти к сообщению
nik_grey пишет:
Мелкий пишет:
То не писать это условие в запрос.

Если честно, то не понял суть предложения. Можно подробней?

Вы лучше поподробнее опишите что Вам нужно)
5. nik_grey - 11 Августа, 2014 - 14:23:46 - перейти к сообщению
Tyoma5891 пишет:
nik_grey пишет:
Мелкий пишет:
То не писать это условие в запрос.

Если честно, то не понял суть предложения. Можно подробней?

Вы лучше поподробнее опишите что Вам нужно)

Пользователь выбирает критерии поиска... Можно выбрать определенный вариант - допустим тип 'Новый' или статус 'Возврат', а можно указать 'Не важно'.
Как программно сделать, чтобы данные идущие из POST со значением 'Не важно' отсекались и происходила выборка по конкретно выбранным полям?
6. Мелкий - 11 Августа, 2014 - 14:36:01 - перейти к сообщению
nik_grey пишет:
Если честно, то не понял суть предложения.

Зачем в where ставить условие, если по нему не надо фильтровать?
7. nik_grey - 11 Августа, 2014 - 15:04:42 - перейти к сообщению
Мелкий пишет:
nik_grey пишет:
Если честно, то не понял суть предложения.

Зачем в where ставить условие, если по нему не надо фильтровать?

Не могу никак понять.. Вот как сделать поиск по тем полям которые приходят без значения 'не важно'?
Можно даже на псевдоязыке.. мне бы суть уловить..
8. Мелкий - 11 Августа, 2014 - 15:06:56 - перейти к сообщению
Если с формы пришло значение для фильтра - то только тогда добавляете в запрос соответствующее условие.
9. s3ga - 11 Августа, 2014 - 15:36:41 - перейти к сообщению
получается по дате выборка у вас идет всегда?.Может не правильно понимаю но может сделать что то вроде,
PHP:
скопировать код в буфер обмена
  1. $sql="SELECT * FROM table where date=$date";
  2. if (isset($_POST['cartridge']))  $sql.=" and cartridge=$_POST['cartridge']"; // проверяем выбран ли картридж
  3. if (isset($_POST['mark']))  $sql.=" and mark=$_POST['mark']";//проверяем выбрана ли марка

а вообще желательно на ваш код посмотреть для начала
10. nik_grey - 11 Августа, 2014 - 15:38:23 - перейти к сообщению
Мелкий пишет:
Если с формы пришло значение для фильтра - то только тогда добавляете в запрос соответствующее условие.

примерно так? -
PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT * FROM table WHERE data BETWEEN $_POST['start'] and $_POST['finish'] "; // дата по-любому выбирается, т.к. по-умолчанию стоит диапазон с первого по текущее число месяца
  3. if ($_POST['status'] != 'Не важно'){
  4.   $query .= "AND status = $_POST['status']"
  5. }
  6. if ($_POST['condition'] != 'Не важно'){
  7.   $query .= "AND condition = $_POST['condition']"
  8. }
  9.  

(Добавление)
s3ga пишет:
получается по дате выборка у вас идет всегда?.Может не правильно понимаю но может сделать что то вроде,
PHP:
скопировать код в буфер обмена
  1. $sql="SELECT * FROM table where date=$date";
  2. if (isset($_POST['cartridge']))  $sql.=" and cartridge=$_POST['cartridge']"; // проверяем выбран ли картридж
  3. if (isset($_POST['mark']))  $sql.=" and mark=$_POST['mark']";//проверяем выбрана ли марка

а вообще желательно на ваш код посмотреть для начала

пока писал свои наброски - Вы меня опередили)
(Добавление)
Все получилось.. Всем большое спасибо..

 

Powered by ExBB FM 1.0 RC1