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

+0

rtfm。 [this](http://www.tizag.com/htmlT/htmlselect.php)例如 – k102

+0

嗨,你已经使用'$ row ['requestdbtype']'作为选择框值,因此它显示所有选项的当前值。使用'$ type'来代替'$ row ['requestdbtype']''。并将'if条件检查$ value等于$ row ['requestdbtype']并为该选项放置'selected'='selected'。谢谢 –

回答

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> 
0

尝试:

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

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

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

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

我假设你正在尝试做的是,使用该数组中的所有内容,但将当前选中的行设置为等于$ row ['requestdbtype']。这是一样简单:

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

刚抬起头时,($等等== $ blah2)? “some blah”:“other blah”被称为三元运算符。它的作用是检查($等等== $ blah2),看它是否是真还是假,如果属实,将返回“一些嗒嗒”,否则返回“其他嗒嗒”

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

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

我希望这会对你有所帮助 谢谢。