SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.08.2010 20:48:01

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

checkbox с несколькими значениями

Объясните как правильно сделать

есть такой кусочек формы
<input name="lookfor" value="1" type="checkbox" class="checkbox"  />с парнем
<input name="lookfor" value="2" type="checkbox" class="checkbox" />с девушкой

при регистрации можно выбрать каждый checkbox по отдельности или вместе...

как правильно занести эти значения в базу в одну ячейку если выбраны два checkbox?

и как правильно потом делать допустим выборку или удаление?

модераторы!!! я не туда влез. мне нужно в раздел для "маленьких"smile (начинающих) если что,перекиньте...smile

Отредактированно serj011 (02.08.2010 20:54:14)

Неактивен

 

#2 02.08.2010 23:44:24

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5831

Re: checkbox с несколькими значениями

Если вариантов всего 2, то проще, наверное, сделать две ячейки.

Неактивен

 

#3 03.08.2010 01:08:31

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: checkbox с несколькими значениями

возможно и проще... но во-первых, у меня проверка при регистрации требует от checkbox что бы name имели одинаковое имя, а во-вторых, все же есть наверное пути соеденить checkbox в одну ячейку, я помню что это как то делаетья через запятую....?

подскажите кто знает, пожауйста...

Отредактированно serj011 (03.08.2010 01:09:14)

Неактивен

 

#4 03.08.2010 10:52:57

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: checkbox с несколькими значениями

Осталось непонятным почему нельзя использовать две ячейки (например два enum-а 0/1 lookfor_girl,lookfor_guy), зачем себе создавать потенциальные проблемы? Но если очень хочется так и пишите в одну ячейку через запятую (0,0 1,0 0,1). Или составьте себе таблицу состояний
1,0 - 1
0,1 - 2
1,1 - 3

и сохраняйте в базе код состояния. Кто идет и с парнем и с девушкой? SELECT * FROM tbl WHERE lookfor = 3

Неактивен

 

#5 03.08.2010 13:12:02

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: checkbox с несколькими значениями

Shopen, теоритическия я понимаю что так можно... но может кто нибудь дать практический пример как это сделать.
например таблицу состояний - это мне кажеться был бы хороший вариант... я вот сделал

if ($lookfor_m == "1" and $lookfor_w == "1") $lookfor_temt = "3"; else if ($lookfor_m == "1") $lookfor_temt = "1"; else if ($lookfor_w == "1") $lookfor_temt = "2"; может как то не так, но работаетsmile

проблемма только в том что мне для проверки на jquery-validate нужно что бы оба checkbox имели одинаковое имя

<input name="lookfor" value="1" type="checkbox" class="checkbox" validate="required:true, minlength:1" />с парнем
<input name="lookfor" value="1" type="checkbox" class="checkbox" />с девушкой

иначе проверка не работает, она проверяет стоит хотя бы одна галочка из двух...

или с один именем на 2 checkbox невозможно это сделать, подскажите кто знает

Отредактированно serj011 (03.08.2010 14:08:25)

Неактивен

 

#6 05.08.2010 10:28:35

Neval
Гуру
Откуда: Киев
Зарегистрирован: 11.03.2008
Сообщений: 449

Re: checkbox с несколькими значениями

Используйте тип поля SET('girl',guy'), тогда поле сможет содержать 3 варианта значений:
1. girl
2. guy
3. girl,guy

Эти значения и будут возвращаться при выборке, которые при необходимости можно распарсить или сравнить.

Но при поиске можно указать битовую маску для нужного значения.

Таким образом:
WHERE field & 1 вернёт записи с field = girl
WHERE field & 2 вернёт записи с field = guy
WHERE field & 3 вернёт записи с field = girl,guy

Либо так, либо отдельные поля smile


Человек без чувства юмора - не серьёзный человек wink

Неактивен

 

#7 11.08.2010 12:18:11

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: checkbox с несколькими значениями

Neval или кто нибудь, подскажите что я не так делаю?

я создал поля с типом SET в TYPE занес 'girl',guy'

вот кусочек формы
<input type="checkbox" name="fam" value="girl" class="checkbox"  />девочка
<input type="checkbox" name="fam" value="guy" class="checkbox"  />мальчик

если выбираешь или тот checkbox или тот в отдельности втавляется правильное значение, а если оба сразу, то только одно "guy"

Неактивен

 

#8 11.08.2010 12:37:14

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: checkbox с несколькими значениями

Мне казалось, что на одной странице может быть не больше одного элемента
с одним именем, а у Вас их два.

Неактивен

 

#9 11.08.2010 14:48:34

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: checkbox с несколькими значениями

paulus написал:

Мне казалось, что на одной странице может быть не больше одного элемента
с одним именем, а у Вас их два.

paulus, честно говоря я не понял смысла того что вы написали... или вы имеете ввиду что нельзя написать оба checkbox с одинаковым именем???

в том то и дело. есть два checkbox с одинаковым name и значений может быть три варианта, как писал Neval. а как правильно зделать по предложенному варианту до конца не пойму...

Неактивен

 

#10 11.08.2010 16:08:12

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: checkbox с несколькими значениями

Назовите их wantBoy и wantGirl и объедините в коде? smile

Неактивен

 

#11 11.08.2010 16:13:44

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: checkbox с несколькими значениями

paulus, я конечно понимаю что вы знаетеsmile но не могл бы вы подробнее написать на примере как сделать!? что вы подразумеваете под "объедините в коде?"?

вот мои чейбоксы
<input type="checkbox" name="fam" value="girl" class="checkbox"  />девочка
<input type="checkbox" name="fam" value="guy" class="checkbox"  />мальчик

Неактивен

 

#12 11.08.2010 16:24:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: checkbox с несколькими значениями

Я не знаю PHP, правда smile Объединить в коде — что-то такого типа

Код:

if ($_GET['wantBoy'] && $_GET['wantGirl']) 
  $a = 'boy,girl';
elseif ($_GET['wantBoy'])
  $a = 'boy';
elseif ($_GET['wantGirl])
  $a = 'girl';

Давайте Вы зададите вопрос по PHP на webew.ru? smile

Неактивен

 

#13 11.08.2010 17:55:34

vaspet
Завсегдатай
Зарегистрирован: 11.03.2009
Сообщений: 83

Re: checkbox с несколькими значениями

нел'зя одно имя дават' разным элементам в одной форме (исключение - INPUT[type=radio])
НО!
Можно обозначит' их массивом:
<input type="checkbox" name="fam[]" value="girl" class="checkbox"  />девочка
<input type="checkbox" name="fam[]" value="guy" class="checkbox"  />мальчик

и в ПХП имеете массив
    [fam] => Array
        (
            [0] => girl
            [1] => guy
        )
если оба зазначены

P.S: Значение через запятую - зло (imho)

Отредактированно vaspet (11.08.2010 17:57:08)

Неактивен

 

#14 11.08.2010 19:00:39

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: checkbox с несколькими значениями

vaspet, вы написали мне ответ на мой вопрос...  я догадывался что нужно name написать так (fam[]) , только как до ума довести не пойму. я вас прошу напишите подробнее... я уже голову сломал с этой проблеммой. никто по сути ответить не может.

как именно в пхп написать этот массив?

Неактивен

 

#15 11.08.2010 19:27:40

vaspet
Завсегдатай
Зарегистрирован: 11.03.2009
Сообщений: 83

Re: checkbox с несколькими значениями

Ok
имеем

HTML:
<input type="checkbox" name="fam[]" value="girl" class="checkbox"  />девочка
<input type="checkbox" name="fam[]" value="guy" class="checkbox"  />мальчик

MySQL:
поле fam = SET ('girl',guy')
по-умолчанию NULL

PHP:
$fam_add = '';
if(isset($_POST['fam']))
     $fam_add = ' fam = "' . implode(",", $_POST['fam']) . '"';

$query = "INSERT INTO ... " . $fam_add;

чего-то такого

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson