[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Хранение много checkboxов
web-monster
Вообщем такой вопрос, если есть около 70 чекбоксов, как правильно их хранить в базе и как потом проверять если в базе отмечен определённый чекбокс то на странице галка отмечена была.

Я не думаю что для каждого отдельное поле создавать надо, ведь так?



Спустя 28 минут, 57 секунд (4.08.2010 - 00:38) umnik90 написал(а):
web-monster

Таблица Chekbox, 2 поля.

id select
1 0
2 1
3 0
4 1
5 0
. .
. .
. .
70 1

где id - номер чекбокса, если они у вас по номерам, тогда тип int; либо имя, если они у вас по именам, тогда тип символьный. select - состояние выбора, 0 - не выбран, 1 - выбран. Можно int, а можно логическое (true, felse)

На странице


$sql = "SELECT * FROM `Chekbox` WHERE `id` =";
$sql .= "1"; // тут можно подставлять id или имя текущего чекбокса
$result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);
$row = mysql_fetch_assoc($result)

<
input name="checkbox" type="checkbox" id="checkbox" <?php if ($row['select'] != 0) {echo "checked=\"checked\""; } ?> />


Если чекбоксы относятся к уже существующей таблице - можно создать поле select в ней, а идентификатор брать какой-то существующий.

Спустя 6 минут, 51 секунда (4.08.2010 - 00:45) web-monster написал(а):
Хмм.. Для одного пользователя понятно, а если много пользователей и каждый(в анкете) выбирает свои галки(там стиль музыки(10 вариантов),черты характера(20 вариантов) и.т.д ).. Вот собственно как их хранить то?

Спустя 15 минут, 40 секунд (4.08.2010 - 01:01) umnik90 написал(а):
web-monster
вам нужна связь с пользователем.

таблица музыка:

...........................................................................................................................................
id_пользователя | вариант 1 | вариант 2 | вариант 3 | вариант 4 | вариант 5 | вариант 6 ....
23457 0 1 0 0 1 0
............................................................................................................................................
67831 1 1 0 1 0 0
...........................................................................................................................................
.

для остальных такие же таблицы, собственно проще не станет, но при выводе будет нечто:



$sql = "SELECT * FROM `Chekbox_Musec` WHERE `id_пользователя` =";
$sql .= 1; // тут id пользователя
$result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);
$row = mysql_fetch_assoc($result)

<
input name="checkbox" type="checkbox" id="checkbox" <?php if ($row['вариант1'] != 0) {echo "checked=\"checked\""; } ?> />
<
input name="checkbox" type="checkbox" id="checkbox" <?php if ($row['вариант2'] != 0) {echo "checked=\"checked\""; } ?> />
<
input name="checkbox" type="checkbox" id="checkbox" <?php if ($row['вариант3'] != 0) {echo "checked=\"checked\""; } ?> />
...

Спустя 10 минут, 58 секунд (4.08.2010 - 01:12) web-monster написал(а):
А в одно поле массивом или ещё как нибудь можно сделать? Просто если есть (Спортивные увлечения) и только в них 60 вариантов ! 60 полей делать? неее.. Это глупо помойму

Спустя 6 часов, 31 минута, 39 секунд (4.08.2010 - 07:43) linker написал(а):
Таблица CheckboxTypes
Id | TypeName
------------------
1 | Музыка
2 | Спорт

Таблица Checkboxes
Id | TypeId | Name
------------------
1 | 1 | Хардрок
2 | 2 | Футбол

Таблица Users
Id | Name
-------------
1 | Вася Пупкин

Таблица UserCheckboxes
UserId | CheckBoxId | Selected
-------------------------------------
1 | 1 | 0
1 | 2 | 1

Спустя 3 часа, 37 минут, 4 секунды (4.08.2010 - 11:21) web-monster написал(а):
Ok спасибо, по сути можно записывать только отмеченные. Вот ещё вопрос, как лучше их обновлять, сейчас я собираю массив и jsonом отправляю их получается в итоге Id отмеченых (1,4,7,11 и.т.д).

Теперь нужно узнать какой из них отмечен а какой нет, как вариант можно сделать Delete где пользователь такой-то и тип такой-то и заново insert in() сделать, или можно поумнее сделать?

Спустя 2 часа, 56 минут (4.08.2010 - 14:17) web-monster написал(а):
Усё разобрался) Работает:)

Сделал сначала удаление всего типа галок где определённый пользователь, а потом вставляю уже)
Быстрый ответ:

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