Такой вопрос: предположим форма может имет 10-20-30 чекбоксов и все эти чекбоксы относятся к одной теме, например "бытовая техника" + тема может содержать поля типа input и radiobox, как бы вы хранили значения этих чекбоксов в таблицах? Я рассматриваю два варианта: 1-й) вся тема это одна строка, а каждый чекбокс имеет свой столбец с флагом 0 или 1, плюс в этой же таблице хранятся даные остальных полей |tema| box1 | box2 | box3 |.... | 12 | 0 | 1 | 1 | .... 2-й) каждый чекбокс получает свой номер(имя) и заноситься в базу данных как отдельная строка, т.е. если строка с таким то номером(именем) выбрана, значит чекбокс включён. Чекбосы хранятся в отдельной таблице. | tema | flag | | 12 | box1 | | 12 | box9 | | 12 | box23 |
А посчитать? Каждый чекбокс имеет свою "стоимость", которая расчитывается по формуле, как написал Сергей, где n это порядковый номер чекбокса. Представь что у тебя 10 чекбоксов.. Первый чекбокс будет иметь свою стоимость 2^1, второй будет иметь стоимость 2^2, третий будет стоить 2^3, и так далее... Теперь складываешь стоимости ВЫДЕЛЕННЫХ чекбоксов и получишь число, которое и будет обозначать какие чекбоксы включены, а какие выключены.. ))))
при сохранении в базу хорошо получается а вот обратно как раставить чекбоксы из таблицы для редактирования , этож какая должна быть логика? я например сейчас так делаю: if ($partner == 1) { echo '<input type="checkbox" name="partner" value="1" checked>текст<br>'; } else { echo '<input type="checkbox" name="partner" value="1">текст<br>'; } ------------------- небольшие расчеты: номер чекбокса = его стоимость 1 = 1 2 = 2 3 = 8 4 = 16 5 = 32 6 = 64 7 = 128 Отмечены чекбоксы = общая сумма 5 = 32 2,7 = 130 1,4,6 = 81 как понять что 130 это 2 и 7 чекбокс? если явно не прописать в if
PHP: <?php $checkboxes = 130; $b = decbin($checkboxes); $flags = str_split($b); print_r($flags); ?> Код (Text): Array ( [0] => 1 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 1 [7] => 0 )