За последние 24 часа нас посетил 22871 программист и 1719 роботов. Сейчас ищет 1481 программист ...

Как вы храните чекбоксы в таблицах?

Тема в разделе "PHP и базы данных", создана пользователем pioner7, 5 июн 2008.

  1. pioner7

    pioner7 Активный пользователь

    С нами с:
    28 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Такой вопрос: предположим форма может имет 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 |
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Код (Text):
    1. 2^n + 2^(n+1) + ... + 2^(n+m)
     
  3. pioner7

    pioner7 Активный пользователь

    С нами с:
    28 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    а пояснить?
     
  4. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    А посчитать? :)
    Каждый чекбокс имеет свою "стоимость", которая расчитывается по формуле, как написал Сергей, где n это порядковый номер чекбокса.
    Представь что у тебя 10 чекбоксов.. Первый чекбокс будет иметь свою стоимость 2^1, второй будет иметь стоимость 2^2, третий будет стоить 2^3, и так далее...
    Теперь складываешь стоимости ВЫДЕЛЕННЫХ чекбоксов и получишь число, которое и будет обозначать какие чекбоксы включены, а какие выключены.. ))))
     
  5. pioner7

    pioner7 Активный пользователь

    С нами с:
    28 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    при сохранении в базу хорошо получается :)
    а вот обратно как раставить чекбоксы из таблицы для редактирования , этож какая должна быть логика?
    я например сейчас так делаю:
    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
     
  6. Anonymous

    Anonymous Guest

    PHP:
    1. <?php
    2. $checkboxes = 130;
    3. $b = decbin($checkboxes);
    4. $flags = str_split($b);
    5. print_r($flags);
    6. ?>
    Код (Text):
    1. Array ( [0] => 1 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 1 [7] => 0 )
     
  7. pioner7

    pioner7 Активный пользователь

    С нами с:
    28 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Аааагромное спасибо.