【问题标题】:Problem With PHP/HTML Dropdown Box Code (selected value)PHP/HTML 下拉框代码问题(选定值)
【发布时间】:2009-07-30 14:00:02
【问题描述】:

我编写了一些 PHP 代码,可以让我创建一个 html 下拉框,然后选择应该选择的值。代码是:

 $role_drop = "<select name='role'>";

 $role_drop .= "\r\n<option value='Resident Assistant'>Resident Assistant</option>";

 $role_drop .= "\r\n<option value='Community Assistant'>Community Assistant</option>";

 $role_drop .= "\r\n<option value='Head RA'>Head RA</option>";

 $role_drop .= "\r\n</select>"; 

 $result = mysql_query("SELECT role FROM users");

 if (@mysql_num_rows($result)) {

      while ($r=@mysql_fetch_assoc($result)) {  

           $role = $r["role"];
           $role_drop = str_replace(">$role</option>", "selected=\"\" >$role</option>",$role_drop);
           echo $role_drop;
      }
 }

实际上,这段代码混合了一堆 HTML,但这里是所有的 PHP。当我运行它时,它似乎工作。但是,假设查询返回了 4 个带有角色的下拉框(来自 4 个用户),我要编辑或选择返回的第二个下拉框的新角色(带有 UPDATE 查询),然后当页面刷新时,所有包括和之后我更新的下拉框的角色将显示他们选择的值作为我在第二个下拉框中选择的新值。

这并不是实际数据库中的值是错误的,它们只是显示了错误的选择值。这是我为第二个下拉框选择新值后的第三个下拉框的源代码:

 <select name="role">
      <option selected="" value="Resident Assistant">Resident Assistant</option>
      <option value="Community Assistant">Community Assistant</option>
      <option selected="" value="Head RA">Head RA</option>
 </select> 

因此,它似乎选择了正确的值(驻地助理),但它也选择了“Head RA”,这就是我将之前的下拉框更改为的值。

这很奇怪,我不知道为什么会这样。有什么想法吗?

谢谢!

【问题讨论】:

    标签: php html drop-down-menu


    【解决方案1】:

    这是因为您每次都在更新$role_drop,所以之前的所有更改都会显示在随后的下拉列表中。我会将循环更改为这样的:

    if (@mysql_num_rows($result)) {
         while ($r=@mysql_fetch_assoc($result)) {  
               $role = $r["role"];
               $temp_role_drop = str_replace(">$role</option>", "selected=\"\">$role</option>", $role_drop);
               echo $temp_role_drop;
         }
    }
    

    这样您就不会覆盖原来的下拉标记。

    【讨论】:

      【解决方案2】:

      坚果 - 忘记转义我的代码。我的意思是,“只是&lt;OPTION VALUE="foo" SELECTED&gt;”。

      【讨论】:

      • 您可以使用上一个答案下的“编辑”链接来修复那个问题,然后删除这个新答案。
      • @SOF 感谢您对 SELECTED 语法的提醒。
      【解决方案3】:

      不知道这是否有帮助,但根据 HTML 规范,您不应该将值与每个 OPTION 的 SELECTED 属性一起传递。只是。

      【讨论】:

      • @SOF “这只是。” - 只是经期?抱歉,我不确定你的意思。我应该说
      猜你喜欢
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 2012-08-15
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多