отправить значение радиокнопки в разные поля в БД - PullRequest
0 голосов
/ 27 августа 2010

у меня есть форма отправки, состоящая из 1 кнопки-переключателя группы.

<div id="defectclass">
        <input id="def1" type="radio" class="defect" name="defect" value="1"/>S
        <input id="def2" type="radio" class="defect" name="defect" value="1" />A
        <input id="def3" type="radio" class="defect" name="defect" value="1" />B
        <input id="def4" type="radio" class="defect" name="defect" value="1" />C
</div>

, кроме того, у меня есть 4 поля в таблице БД, то есть:

  1. S
  2. A
  3. B
  4. C

я хочу после отправки:

    - if def1 are checked send value to field "S"
     - if def2 are checked send value to field "A"
     - if def3 are checked send value to field "B"
     - if def4 are checked send value to field "C"
     - if all not checked or null send to all fields value="0"

как мне это сделать, потому что я 'никогда не пробовал это?

Ответы [ 3 ]

0 голосов
/ 27 августа 2010
<div id="defectclass">
        <input id="def1" type="radio" class="defect" name="defect['s']" value="1"/>S
        <input id="def2" type="radio" class="defect" name="defect['a']" value="1" />A
        <input id="def3" type="radio" class="defect" name="defect['b']" value="1" />B
        <input id="def4" type="radio" class="defect" name="defect['c']" value="1" />C
</div>

Это даст вам $ _POST ['дефект'] ['s'] и т. Д. так что вы будете знать, какой путь обновления выбрать. См. http://php.net/faq.html для получения дополнительной информации об этом синтаксисе.

0 голосов
/ 27 августа 2010
  1. Вы должны сделать только 1 поле.
  2. Если вам нужны цифры для представления этих букв, создайте массив .

как это

$defects_arr = array(0,"S","A","B","C");

этот массив можно использовать во многих задачах:

  • для обозначения этих букв цифрами
  • для проверки пользователя rinput
  • для динамического создания этого ввода

Итак, после получения данных POST просто сравните их с этим массивом:

$defect = '0';
if(!empty($_POST['defect'])) {
  $key = array_search($_POST['defect'],$defect_arr));
}

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

0 голосов
/ 27 августа 2010

Рассматривая возможные значения defect , в определении вашей таблицы,

изменить defect VARCHAR(1) на defect VARCHAR(1) DEFAULT "0"

Это упрощает ваш код для вставки столбцов строки / обновления

в вашем php-скрипте, после анализа формы, добавьте оператор switch, чтобы решить, какой столбец обновлять.



// I assumed the row already exists

mysql_connect (localhost, $username, $password);
@mysql_select_db ($database) or die("Error");

$defect = mysql_real_escape_string($_POST["defect"]); //parse the defect field
$id = mysql_real_escape_string$_POST["id"]); //primary key of the table
$flag = True;

if(!empty($_POST['defect']))
{

   switch($defect)
   {
       case "S" : $var = "S";
                  break;
       case "A" : $var = "A";
                  break;
       case "B" : $var = "B";
                  break;
       case "C" : $var = "C";
                  break;
       default : $flag = False;
   }

   if($flag)
   {
      $query = "UPDATE TABLE_NAME SET" + $var + " = '1' WHERE Id = '$id'";
      mysql_query($query);
   }

   mysql_close(); 
}


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...