[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод результатов при фильтровании чекбоксами
Sqaier
Здравствуйте. по-моему, моя проблема должна решаться довольно легко, но что-то найти информацию в интернете не могу.
Итак, есть таблица в базе данных.
Например, содержит поля: id, name, num1, num2, num3, num4, num5

1, шарик, 1,0,0,0,1
2, кубик, 1,1,1,1,1
3, пирамида, 0,0,0,1,1
В общем в numах -определяется есть ли какое-либо свойство у данного предмета (1 - есть, 0-нет).
Думаю, с этим понятно.

Далее создаю форму с 5 чекбоксами для каждого numа. Т. е. если галочку поставить - то будет передаваться значение 1. Если поставлено две галочки, то должны выбираться предметы которые в этих столбцах оба имеют значения '1'.

Если делаю такой запрос для обработчика:
SELECT * FROM таблица WHERE num1='$_POST[num1]' AND num2='$_POST[num2]' AND num3='$_POST[num3]' AND num4='$_POST[num4]' AND num5='$_POST[num5]

и например, выбираю в форме num2='1' и num4='1', то все остальные столбцы так как не поставлены галочки, не передают переменные и считается, что num1='0', num3='0',...
а нужно чтобы вытаскивало, где num2='1' и num4='1', а остальные ячейки - неважно будет ли там 1 или 0.Вывод результатов при фильтровании чекбоксами



Спустя 19 минут, 19 секунд (28.02.2010 - 16:41) Sqaier написал(а):
Конечно можно сделать чтобы шла проверка:
если только num1=1, то запрос только с ним
если только num2=1, то запрос только с ним
если num1=1 num3=1, то в запросе ...WHERE num1='$_POST[num1]' AND num3='$_POST[num3]'"
Но в данном случае нужно этих циклов if(){запрос} - 15 штук. а если этих свойств 10-15 штук, тогда вообще длинный код. Switch может немного помочь, но не сильно.

Вот если бы эти циклы if(){} в самом запросе можно было, т.е.

SELECT * FROM таблица WHERE if(num1='1'){num1='$_POST[num1]'}...

Спустя 1 час, 8 минут, 40 секунд (28.02.2010 - 17:50) Beowulf написал(а):
Попробуйте сгруппировать чекбоксы

<input type="checkbox" name="conditions" value="num1" />

А в коде прописать

$query = 'SELECT * FROM `table` WHERE 1 ';
if (!empty($_POST['conditions'])) {
foreach ($_POST['conditions'] as $item) {
$query .= ' AND `'.$item.'`=1';
}
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.