下拉列表选项


drop down list option

Markup,

<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'] 的值。但是我的显示器仅显示当前值作为所有选项,请帮助。

显而易见的

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

我假设您要做的是,使用该数组中的所有内容,但将等于$row['requestdbtype']的数组设置为当前选择的数组。这就像:

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

只是抬头,($blah == $blah 2) ?"Some Blah":"Other Blah"称为三元运算符。它所做的是检查($blah == $blah 2)以查看它是真的还是假的,如果为真,则返回"一些等等",否则返回"其他等等"

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

您需要

使用$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>

尝试:

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

我认为你的代码一定是

 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,然后在 if 条件下$type代替显示当前选项显示选中的$value。在您的代码中,您已经输入了$row['requestdbtype']这是在选择框中仅显示当前选项次数的主要原因。

希望对您有所帮助谢谢。

你必须

使用selected='selected'属性。

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