Задавайте вопросы, мы ответим
Вы не зашли.
Объясните как правильно сделать
есть такой кусочек формы
<input name="lookfor" value="1" type="checkbox" class="checkbox" />с парнем
<input name="lookfor" value="2" type="checkbox" class="checkbox" />с девушкой
при регистрации можно выбрать каждый checkbox по отдельности или вместе...
как правильно занести эти значения в базу в одну ячейку если выбраны два checkbox?
и как правильно потом делать допустим выборку или удаление?
модераторы!!! я не туда влез. мне нужно в раздел для "маленьких" (начинающих) если что,перекиньте...
Отредактированно serj011 (02.08.2010 20:54:14)
Неактивен
Если вариантов всего 2, то проще, наверное, сделать две ячейки.
Неактивен
возможно и проще... но во-первых, у меня проверка при регистрации требует от checkbox что бы name имели одинаковое имя, а во-вторых, все же есть наверное пути соеденить checkbox в одну ячейку, я помню что это как то делаетья через запятую....?
подскажите кто знает, пожауйста...
Отредактированно serj011 (03.08.2010 01:09:14)
Неактивен
Осталось непонятным почему нельзя использовать две ячейки (например два 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
Неактивен
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"; может как то не так, но работает
проблемма только в том что мне для проверки на 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)
Неактивен
Используйте тип поля 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
Либо так, либо отдельные поля
Неактивен
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"
Неактивен
Мне казалось, что на одной странице может быть не больше одного элемента
с одним именем, а у Вас их два.
Неактивен
paulus написал:
Мне казалось, что на одной странице может быть не больше одного элемента
с одним именем, а у Вас их два.
paulus, честно говоря я не понял смысла того что вы написали... или вы имеете ввиду что нельзя написать оба checkbox с одинаковым именем???
в том то и дело. есть два checkbox с одинаковым name и значений может быть три варианта, как писал Neval. а как правильно зделать по предложенному варианту до конца не пойму...
Неактивен
Назовите их wantBoy и wantGirl и объедините в коде?
Неактивен
paulus, я конечно понимаю что вы знаете но не могл бы вы подробнее написать на примере как сделать!? что вы подразумеваете под "объедините в коде?"?
вот мои чейбоксы
<input type="checkbox" name="fam" value="girl" class="checkbox" />девочка
<input type="checkbox" name="fam" value="guy" class="checkbox" />мальчик
Неактивен
Я не знаю PHP, правда Объединить в коде — что-то такого типа
if ($_GET['wantBoy'] && $_GET['wantGirl']) $a = 'boy,girl'; elseif ($_GET['wantBoy']) $a = 'boy'; elseif ($_GET['wantGirl]) $a = 'girl';
Давайте Вы зададите вопрос по PHP на webew.ru?
Неактивен
нел'зя одно имя дават' разным элементам в одной форме (исключение - 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)
Неактивен
vaspet, вы написали мне ответ на мой вопрос... я догадывался что нужно name написать так (fam[]) , только как до ума довести не пойму. я вас прошу напишите подробнее... я уже голову сломал с этой проблеммой. никто по сути ответить не может.
как именно в пхп написать этот массив?
Неактивен
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;
чего-то такого
Неактивен