下拉列表选项

时间:2012-05-11 05:40:52

标签: php drop-down-menu

标记,

<span style="padding-left: 76px">
 <span style="padding-left:5px">
  <select id="select1" name="requestdbtype" value="<?php echo $type ?>">
   <?php
    $options = array('DB2' => 'DB2',
            'MySQL' => 'MySQL',
            'Oracle' => 'Oracle',
            'PostgreSQL' => 'PostgreSQL',
            'SQLite' => 'SQLite',
            'SQL Server' => 'SQL Server',
            'Sybase' => 'Sybase');
            foreach($options as $value => $type){
                          echo "<option value='$value'>".$row['requestdbtype']."</option>";
            }
      ?>
  </select>
 </span>
</span>

我在显示选项时遇到问题。显示的当前选项应为$row['requestdbtype']的值。但是我的显示器只显示当前值作为所有选项,请帮助。

6 个答案:

答案 0 :(得分:2)

显而易见的答案当然,所有下拉选项都会显示相同的内容。如果你注意,$ row ['requestdbtype']每次都是一样的。

我假设你要做的是,使用该数组中的所有内容,但设置一个等于$ row ['requestdbtype']的那个当前被选中。这很容易为:

foreach($options as $value => $type){
    $selected = ($type == $row['requestdbtype']) ? "selected='selected'" : "";
    echo "<option value='$value' $selected>$type</option>";
}

只是抬头, ($ blah == $ blah2)? “有些啰嗦”:“其他等等” 被称为三元运营商。它的作用是检查 ($ blah == $ blah2) 以查看它是真还是假,如果是,则返回 “某些等等“ ,否则会返回 ”其他等等“

三元运算符对于紧凑代码非常有用。

答案 1 :(得分:0)

尝试:

foreach( $options as $value => $type ) {
   echo "<option value='" . $value . "'>" . $type . "</option>";
}

答案 2 :(得分:0)

foreach($options as $value => $type){
    echo "<option value='".$value."'>".$type."</option>";
}

答案 3 :(得分:0)

您必须使用selected='selected'属性。

foreach($options as $value => $type)
 {
  $select="";
  if($value==$row["requestdbtype"])
    $select="selected='selected'";
  echo "<option  $select value='$value'>$row[requestdbtype]</option>";
  }

答案 4 :(得分:0)

您需要使用$row['requestdbtype']进行比较,而不是使用HTML。另请注意select标记的语法:

<select id="select1" name="requestdbtype">
<?php
$options = array('DB2' => 'DB2',
    'MySQL' => 'MySQL',
    'Oracle' => 'Oracle',
    'PostgreSQL' => 'PostgreSQL',
    'SQLite' => 'SQLite',
    'SQL Server' => 'SQL Server',
    'Sybase' => 'Sybase');
foreach ( $options as $value => $type ) : ?>
  <option value="<?php echo $value; ?>"<?php if ( $value == $row['requestdbtype'] ) echo ' selected="selected"'; ?>><?php echo $type; ?></option>
<?php endforeach; ?>
</select>

答案 5 :(得分:0)

我认为你的代码必须是

 foreach($options as $value => $type){
      if($value == $row['requestdbtype']) 
          echo "<option value='$value'  selected = 'selected' >".$type."</option>";
      else
          echo "<option value='$value' >".$type."</option>";
  }

我不知道你的$row['requestdbtype']价值是多少,但请检查这是$type然后如果条件将$type代替$value以显示当前选项显示已选中。在您的代码中,您放置了$row['requestdbtype'],这是在selectbox中仅显示当前选项的主要原因。

我希望它对你有所帮助 感谢。