Php 发送单选按钮';将s值设置为DB处的不同字段

Php 发送单选按钮';将s值设置为DB处的不同字段,php,database,radio-button,field,form-submit,Php,Database,Radio Button,Field,Form Submit,我有一个提交表单,由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"

我有一个提交表单,由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>

我如何做到这一点呢?因为我从未尝试过这一点。

通过查看表定义中
缺陷
的可能值

defect VARCHAR(1)
更改为
defect VARCHAR(1)默认值“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(); 
}


s
A.
B
C
这将为您提供$_POST['defect']['s'],&tc。因此,您将知道采取哪种更新路径。有关此语法的详细信息,请参阅

  • 你只需要做一个字段
  • 如果需要数字来表示这些字母,请创建一个数组 像这样

    $defects_arr = array(0,"S","A","B","C");
    
    此阵列可用于许多任务:

    • 用数字来表示这些字母
    • 验证用户输入的步骤
    • 动态地构建这个输入
    因此,在收到POST数据后,只需将其与此数组进行比较:

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

    在$key变量中有一个数字。此号码应存储在数据库中。

    您如何处理服务器端功能?PHP、Python、C#?行是否已经存在?您在哪里将行插入表中?为什么不只有一个可能值为S、A、B、C的字段?@Col.shrapanel:如果您只创建了一个字段,但我很难在另一个表中显示此数据字段。我必须转换数据,正如你在“”看到的那样,你会犯一个可怕的错误。特别是因为解决方案非常简单,反馈为什么是-1?对于给定的问题,这应该是一个完全可以接受的解决方案?它根本不是一个解决方案。首先,这不是一个单选按钮字段,而是4个。当投票被否决时,留下评论会帮助我纠正自己。太多了,无法纠正。更不用说,这段代码是对编程艺术的一种冒犯——它只需修改一个字母就可以重复大量代码!还有SQL注入。不,因为您只更新一个字段。假设A=1,现在单选按钮S被选中。在执行代码后,S和A都将是1,而不仅仅是A。这样做是否可以回答我关于该链接的初始问题?嗯,有趣的解决方案,但我认为这不是他想要的。他想要1或0,而不是0、1、2、3或4。@klox这不是链接上的问题,只是一个小问题。存根。但数组解决方案仍然允许将字母转换为数字。@captain他想要,但这不是他真正想要的need@Col.:我可以用这个来回答我的链接吗?
    $defects_arr = array(0,"S","A","B","C");
    
    $defect = '0';
    if(!empty($_POST['defect'])) {
      $key = array_search($_POST['defect'],$defect_arr));
    }