Здравствуйте. по-моему, моя проблема должна решаться довольно легко, но что-то найти информацию в интернете не могу. Итак, есть таблица в базе данных. Например, содержит поля: 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'. Если делаю такой запрос для обработчика: [sql]SELECT * FROM таблица WHERE num1='$_POST[num1]' AND num2='$_POST[num2]' AND num3='$_POST[num3]' AND num4='$_POST[num4]' AND num5='$_POST[num5][/sql] и например, выбираю в форме num2='1' и num4='1', то все остальные столбцы так как не поставлены галочки, не передают переменные и считается, что num1='0', num3='0',... а нужно чтобы вытаскивало, где num2='1' и num4='1', а остальные ячейки - неважно будет ли там 1 или 0. Конечно можно сделать чтобы шла проверка: если только num1=1, то запрос только с ним если только num2=1, то запрос только с ним если num1=1 num3=1, то в запросе ...WHERE num1='$_POST[num1]' AND num3='$_POST[num3]'" Но в данном случае нужно этих циклов if(){запрос} - 15 штук. а если этих свойств 10-15 штук, тогда вообще длинный код. Switch может немного помочь, но не сильно. Вот если бы эти циклы if(){} в самом запросе можно было, т.е. [sql] SELECT * FROM таблица WHERE if(num1='1'){num1='$_POST[num1]'}...[/sql]
в каждом поле 1 или 0 - т. е. есть ли данное свойство или нет. Или предлагаете создать одно поле со значениями через разделитель, например запятую. но по-моему от этого проще фильтры на чекбоксах не станут.
можно попробывать вытаскивать сначала все строки по очереди в цикле, проверять эначение нужных элементов. Попробую так - вроде по-размеру код небольшой, но по-моему тоже не самое легкое решение.
В одном поле можно хранить какое-либо целочисленное значение, которое всегда содержит определенный порядок байт. Значения получаем сдвигом байт из каждого числа поочередно. Такой способ ГОРАЗДО легче.