За последние 24 часа нас посетили 202107 программистов и 2180 роботов. Сейчас ищут 1509 программистов ...

тип поля SET

Тема в разделе "PHP для новичков", создана пользователем serj011, 11 авг 2010.

  1. serj011

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

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Объясните как правильно сделать

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

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

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

    я читал что можно сделать с помощью типа поля SET, но до конца разобраться не могу.

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

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

    может кто знает как это правильно делать?
     
  2. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Сделать 3 параметр - both.
     
  3. serj011

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

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Elkaz, насколько я понял что нужно дописать 'boy',girl','both' - но результат тотже. заносится только одно значение, даже если выбраны два чейбокса
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    serj011
    блин... а если чуток подумать?
     
  5. serj011

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

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    igordata, неужели просто нельзя написать если знаешь... я с эти м типом поля вообще не сталкивался, и так уже голову себе сломал:)
     
  6. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    serj011
    <input name="lookfor[]" value="boy" type="checkbox" class="checkbox" />с парнем
    <input name="lookfor[]" value="girl" type="checkbox" class="checkbox" />с девушкой

    PHP:
    1.  
    2. <?php
    3. if (isset ($_POST['lookfor']) && count ($_POST['lookfor']) == 2){
    4.     $lookfor = 'both'; // чувак ищет обоих.
    5. }
    6. ?>
    7.  
     
  7. serj011

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

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Elkaz, извените уже конечно что туплю...

    я в обработчик добавил этот код, если выбраны оба чейбокса, работает, заносится 'both'. а по отдельности не работает... может что нужно еще дописать?
     
  8. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    serj011
    Ну само собой, я же дал не решение, а просто показал один из вариантов.
    Просто делаете так:
    PHP:
    1.  
    2. <?php
    3. if (...){
    4. ...
    5. } else {
    6.     $lookfor = isset ($_POST['lookfor'][0]) ? $_POST['lookfor'][0] : 'значение по умолчанию'; // girl или boy;
    7. }
    8.  
     
  9. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород

    Наверное так все таки, ведь если будет выбран один из вариантов, то isset($_POST['lookfor'][0])==true, а isset($_POST['lookfor'][0])==false
    HTML:
    1.  
    2. <input name="lookfor[boy]" value="boy" type="checkbox" class="checkbox" />с парнем
    3. <input name="lookfor[girl]" value="girl" type="checkbox" class="checkbox" />с девушкой
    4.  
     
  10. serj011

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

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Elkaz, спасибо получилось как то:) хотя в коде я толком не разобрался... вот код:

    if (isset ($_POST['lifepriority']) && count ($_POST['lifepriority']) == '2'){
    $lifepriority = '3'; }
    else {
    $lifepriority = isset ($_POST['lifepriority'][0]) ? $_POST['lifepriority'][0] : '1'; // girl или boy;
    }

    получаеться что если выбран парень заносится "1", если девушка "2", если оба "3"...

    я читал что значения в поле SET заносятся подругому!!!
    например если выбран и парень и девушка заносится не "3"а ('1','2')
    если таких чейбоксов 10 например как тогда делать???
     
  11. VItalijs

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

    С нами с:
    17 дек 2008
    Сообщения:
    244
    Симпатии:
    0
    Адрес:
    Рига, Латвия
    занесите просто все значения через запятую, никакие SET'ы не понадобятся, немного не ясно с выборкой будет, но придумать что-то можно, если конечно значений много. а еще можно как суммы это представлять, т.е. 1 = boys, 2 = girls, 4 = dogs, 7 = all, 5 = boys + dogs , 3 = boys + girls, 6 = girls + dogs. Тогда при выборке надо будет делать
    [sql]SELECT * FROM table WHERE field & $value = $value[/sql] что-то в этом роде