下拉框的PHP设定值选择(PHP set selected value of dropdown bo

2019-09-21 00:33发布

我有与PHP构建一个下拉框。 下面是代码:

 $region_result = mysql_query("SELECT * FROM region ORDER BY region");    

 $dropdown = "<select name='region'>";
while($row = mysql_fetch_assoc($region_result)) {
    $rid = $row["id"];
    $region = $row["region"];

    $dropdown .= "\r\n<option value='{$row['rid']}'>{$region}</option>";
}
 $dropdown .= "\r\n</select>";

我需要经过上面代码被处理,以设定的下拉框的选择的值。 有没有简单的方法来做到这一点?

有没有人有什么建议? 谢谢!

编辑:

谢谢大家的答案。 让我来解释我在做什么。 我设置了一个“编辑用户”页面,在这里您可以搜索多个标准的用户,然后将结果显示在一个“编辑模式”中列出的 - 那就是 - 在文本框和下拉框。 所以,你可以再编辑和更新用户。 对于两个用户领域,我需要列出在下拉框(以确保数据的完整性和约束)的数据。 所以,我想说明那些下拉框与所有你可以改变,但我想下拉的选择的值是当前与用户相关联的一个可能的值。

所以,我是能够得到与deceze的建议这方面的工作 - 在我的while循环,它具有与该数据库结果设置我的PHP的价值观,我已经插入一个嵌套while循环,这将构建$下拉菜单,然后内,嵌套的if -环。 我不是疯了所有这些嵌套的循环。 下面是该代码段:

 if (@mysql_num_rows($result)) {
        while ($r=@mysql_fetch_assoc($result)) {    
            $fname = $r["fname"];
            $lname = $r["lname"];
            $region = $r["region"];
            $role = $r["role"];
            $extension = $r["extension"];
            $username = $r["username"];
            $building = $r["building"];
            $room = $r["room"];?>

            <?php
            $dropdown = "<select name='region'>";
            while($row = mysql_fetch_assoc($region_result)) {
                $rid = $row["id"];
                $region2 = $row["region"];

                if($region == $region2){
                    $dropdown .= "\r\n<option selected='selected' value='{$row['rid']}'>{$region}</option>";
                }else{
                    $dropdown .= "\r\n<option value='{$row['rid']}'>{$region2}</option>";
                }
            }
            $dropdown .= "\r\n</select>";
            ?>

但是,我正在考虑这个不断变化的文本替换(由soulscratch和zombat建议),因为我认为那将是更好的性能。

...这似乎并不时超过一个结果集符合搜索条件,但(作为下拉框的第二和第三等的结果是空的)工作。

你们有什么感想?

Answer 1:

有了您的字符串的构建方式,这是一个相当简单的str_replace()函数 ,这是很好的,因为它可以节省需要正则表达式的麻烦:

$dropdown = str_replace("value='".$rid."'","value='".$rid."' selected=\"selected\"",$dropdown);


Answer 2:

如果你想在事后更改组合的HTML,你需要使用复杂的字符串替换的方法,或Javascript,这两者都不是一个不错的选择。

你拥有的最好的办法是调整你的程序,所以你可以设置selected通过循环周围发生的第一次,当属性。



Answer 3:

你将能够找到它在$ _REQUEST [“区域”]



Answer 4:

我敢打赌,你会再次遇到这个问题,这意味着它会是值得拿出一个更灵活的解决方案。 下面是实现这一目的的想法:

首先,用一个数组来保存你的下拉列表中选择。 如果您需要使用相同的选项多选元素,你会得到重新使用数组免费:

$options = array ();
while ($row = mysql_fetch_assoc($region_result)) {
  $options[$row['id']] = $row['region'];
}

然后,你可以喂到产生一个选择控制功能如下:

function getSelect ($name, $options, $current)
{
  $markup = '<select name="' . htmlspecialchars($name) . '">';
  foreach ($options as $value => $label)
  {
    $selected = ($value == $current) ? ' selected="selected"' : '';
    $markup .= sprintf(
      "<option value=\"%s\"%s>%s</option>\r\n",
      htmlspecialchars($value), 
      $selected, 
      htmlspecialchars($label)
    );
  }
  $markup .= '</select>';
  return $markup;
}

(您也可以添加一个或多个可选参数设置idclass等)

另外,你提到你正在考虑,因为速度的切换方法,但它不太可能,这是时间和地点担心性能。 着眼于维护的代码现在,这成为必要的性能调整以后会更容易,更有效。



文章来源: PHP set selected value of dropdown box