2012-05-11 158 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'],這是在選擇框次數中僅顯示當前選項的主要原因。

我希望這會對你有所幫助 謝謝。