Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用数据库中的值填充单选按钮_Php_Mysql_Button_Radio - Fatal编程技术网

Php 用数据库中的值填充单选按钮

Php 用数据库中的值填充单选按钮,php,mysql,button,radio,Php,Mysql,Button,Radio,一天两个Q 当我从mysql数据库中提取数据以编辑形式显示时,我试图选中正确的单选按钮。尝试了各种代码,但每次都得到相同的结果:最后一个值始终是选中的值。迷惑了 我的代码有点复杂,因为它位于一个很长的html字符串中,因此需要构造用于读取php变量的结构。我在页面顶部有以下代码: $row = mysql_fetch_assoc($result, MYSQL_ASSOC); if ($row) { print("<p>$se_id is in the database. You

一天两个Q

当我从mysql数据库中提取数据以编辑形式显示时,我试图选中正确的单选按钮。尝试了各种代码,但每次都得到相同的结果:最后一个值始终是选中的值。迷惑了

我的代码有点复杂,因为它位于一个很长的html字符串中,因此需要构造用于读取php变量的结构。我在页面顶部有以下代码:

$row = mysql_fetch_assoc($result, MYSQL_ASSOC);
 if ($row)
 {
 print("<p>$se_id is in the database. You can edit this record.</p>");

 //get variables to set radio buttons in $form
 $type = $row['se_source'];
$checked[$type] = "checked";
$row=mysql\u fetch\u assoc($result,mysql\u assoc);
如果($行)
{
打印(“$se\u id在数据库中。您可以编辑此记录。

”; //获取变量以设置$form中的单选按钮 $type=$row['se_source']; $checked[$type]=“checked”;
等等…以及html字符串中的以下代码:

<li>
    <label for="se_source">Contributed by:</label>
          echo ' . $type . '
    <input id="se_source" type="radio" id = "radio" name="se_source"  value="CNFP" checked = ' . $checked["CNFP"] . '>CNFP</input>
    <input id="se_source" type="radio" id = "radio" name="se_source" value="User" checked = ' . $checked["User"] . '>User</input>
  • 贡献者: 回显“$type” CNFP 使用者

  • echo语句是为了我自己的理智——我知道它在这里不是真正的echo。但即使它说“echo CNFP”,也始终是“User”按钮被选中。因此我知道它得到了该变量的正确值,但出于某种原因,它默认为列表中的最后一个值。我用“=”尝试过它同样。没有乐趣。感谢您的启发。非常感谢您的关注。

    您只需要在所选单选按钮上设置“checked”属性。因此,您需要修改php代码,以正确的格式回显。

    您需要设置“checked”属性仅在所选单选按钮上。因此,您需要修改php代码,以正确的格式进行回显。

    AFAIK,checked属性的值并不重要,只有它的存在才足以将复选框标记为选中。 (证实这一点)

    试着这样做:

     <input id="se_source" type="radio" id = "radio" name="se_source"  value="CNFP"'.(($checked["CNFP"]) ? 'checked="checked"': '').'>CNFP</input>
    
    CNFP
    
    好的,checked属性的值并不重要,只有它的存在才足以将复选框标记为选中。 (证实这一点)

    试着这样做:

     <input id="se_source" type="radio" id = "radio" name="se_source"  value="CNFP"'.(($checked["CNFP"]) ? 'checked="checked"': '').'>CNFP</input>
    
    CNFP
    
    我认为下面的代码可以正常工作。您必须添加一个字段来检查它是否被选中

    while($result = mysql_fetch_array($queryRes)){
    if(chack the radio button chacked field){
       echo "<input type="radio" checked="checked" value="value" name="same" />";
    }
    echo "<input type="radio" value="value" name="same" />";
    
    while($result=mysql\u fetch\u数组($queryRes)){
    如果(查克单选按钮查克字段){
    回声“;
    }
    回声“;
    

    }

    我认为下面的代码可以正常工作。您必须添加一个字段来检查它是否被选中

    while($result = mysql_fetch_array($queryRes)){
    if(chack the radio button chacked field){
       echo "<input type="radio" checked="checked" value="value" name="same" />";
    }
    echo "<input type="radio" value="value" name="same" />";
    
    while($result=mysql\u fetch\u数组($queryRes)){
    如果(查克单选按钮查克字段){
    回声“;
    }
    回声“;
    

    }

    您总是在最后一个按钮上进行检查的原因是您将每个单选按钮设置为连续检查

    当您将一组同名单选按钮传递给浏览器时,默认行为是最后一个设置为选中的按钮将显示为选中的按钮。因此,如果您传递五个单选按钮,并且它们都设置为选中,则该单选按钮不能有多个选中选项

    当浏览器遇到第二个也标记为“已选中”的无线电机选项时,它只是从第一个选项中删除“已选中”

    您的php代码在这一行中实现了这一点:

    $checked[$type] = "checked";
    
    问题是您正在创建一个数组,该数组将显示以下内容:

    se_源=>已检查

    也就是说,checked是数组中每个成员的行值

    我认为您应该重新考虑您的表结构和流程

    基本上,您的问题是您需要:

  • 数据库中要匹配的值

  • 单选按钮本身的值

  • 这将允许您:

    将数据库值(DBV)与单选按钮值(RBV)进行比较,如果比较结果为真,则将其设置为选中

    以下变量为:

    $ar_rvbs=要循环并对照存储的DBV检查的无线电集值数组(通常为字符串或布尔值)

    $value=无线电集值数组中每个项目的值

    $attrval=单选按钮的存储值。它不一定要在数据库中。您可以使用post方法将它从一个页面传递到下一个页面

    $checked=如果循环通过时DBV与RBV匹配,则将设置为字符串“checked”,否则它只是一个空字符串

    function makeRadioSet($ar_rvbs,$attrval=[DBV] /*A*/
      {
    
      foreach ($ar_rvbs as $value)
         {
          $checked = '';                          /*B*/
          if ($attrval==$value)                   /*C*/
          $checked = "checked";                   /*D*/
          echo '<input type="radio" name = "fieldname" value = "'.$value.'" '.$checked.'>';
         }
      }
    
    函数makeRadioSet($ar_rvbs,$attrval=[DBV]/*A*/
    {
    foreach($ar_rvbs作为$value)
    {
    $checked='';/*B*/
    如果($attrval==$value)/*C*/
    $checked=“checked”/*D*/
    回声';
    }
    }
    
    /A/将RBV列表作为数组传递,将DBV作为变量传递

    /B/设置选中为空字符串,因为这将是集合中除与DBV匹配的单选按钮外的所有单选按钮的默认值

    /C/将DBV与来自RBV阵列的循环正在处理的当前RBV进行比较

    /D/如果步骤C中的比较返回true,则将选中的字符串插入到输入元素中


    echo负责生成每个无线电机选项,并确保与DBV匹配的选项已在输入元素标记中“选中”

    您总是在最后一个选项上选中的原因是您将每个单选按钮设置为连续选中

    当您将一组同名单选按钮传递给浏览器时,默认行为是最后一个设置为选中的按钮将显示为选中的按钮。因此,如果您传递五个单选按钮,并且它们都设置为选中,则该单选按钮不能有多个选中选项

    当浏览器遇到第二个也标记为“已选中”的无线电机选项时,它只是从第一个选项中删除“已选中”

    您的php代码在这一行中实现了这一点:

    $checked[$type] = "checked";
    
    问题是您正在创建一个数组,该数组将显示以下内容:

    se_source=>