1

标记,

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

4

6 回答 6

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) ?"some blah" : "other blah"被称为三元运算符。它所做的是检查($blah == $blah2)以查看它是真还是假,如果为真,则返回"some blah",否则返回"other blah"

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

于 2012-05-11T05:45:16.633 回答
0

尝试:

foreach( $options as $value => $type ) {
   echo "<option value='" . $value . "'>" . $type . "</option>";
}
于 2012-05-11T05:44:06.010 回答
0
foreach($options as $value => $type){
    echo "<option value='".$value."'>".$type."</option>";
}
于 2012-05-11T05:44:27.113 回答
0

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

foreach($options as $value => $type)
 {
  $select="";
  if($value==$row["requestdbtype"])
    $select="selected='selected'";
  echo "<option  $select value='$value'>$row[requestdbtype]</option>";
  }
于 2012-05-11T05:45:00.077 回答
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>
于 2012-05-11T05:50:21.913 回答
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'],这是在选择框中仅显示当前选项次数的主要原因。

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

于 2012-05-11T05:54:01.340 回答