2014-08-27 77 views
0

在我的一個頁面上,我有一個動態的下拉菜單。我已經能夠連接到我的數據庫,但我遇到了一個問題:當我在列表中選擇一個值時,它默認回到Pick emission如何編程下拉菜單以保留最後一個選擇?php下拉菜單不會保持選擇值

我想我缺少明顯的東西 - 這裏是我運行的代碼:

<p><form id="form1" name="form1" method="post" action="<?php echo $PHP_SELF;?>"> 
My Mission Today is: 
<select Emission Name='NEW'> 
<option value="">---Select emission ---</option> 
<option class="option" value="Patience">Patience</option> 
<option class="option" value="Hope">Hope</option> 
<option class="option" value="Strength">Strength</option> 
<option class="option" value="Boundaries">Boundaries</option> 
</select> 

<?php 
    mysql_connect ("localhost","user_name","Password"); 
    mysql_select_db ("my_database"); 
    $select="emission"; 
    if (isset ($select)&&$select!=""){ 
    $select=$_POST ['NEW']; 
}?> 


    <?php 
     $list=mysql_query("SELECT *FROM`emission`ORDERBY`emission`.`emission_id`ASC  LIMIT 0 , 30"); 
     while($row=mysql_fetch_assoc($list)){ 
    ?> 

     <option value="<? echo $row['emission_id']; ?>" 
      <? if($row['emission_id']==$select){ echo "selected"; } ?>> 
      <?echo $row['emission_name'];?> 
     </option> 


     <input type="submit" name="Submit" value="Select" /> 
</form></p> 
+0

什麼是你想要做的正是,已在菜單保留選定的價值?你可以編輯你的文章到問題的形式。謝謝 – JustinJDavies 2014-08-27 14:01:04

+0

請不要再使用'mysql_ *'函數,因爲它們已被棄用,並很快被刪除。請使用'mysqli'或'PDO'來代替您的腳本。 – TiMESPLiNTER 2014-08-27 14:04:43

+1

你的while循環沒有關閉。 – 2014-08-27 14:04:56

回答

0

你需要重新思考你的代碼。

$select="emission"; 
if (isset ($select)&&$select!="" 

這是一個毫無意義的if語句,因爲$select設置上一行。然後,您重新設置$select下一行...

$select=$_POST ['NEW']; 

還有一個錯誤一堆其他的東西,就像你<option>標籤有Emission,而不是使用的空間在隨機的地方,如ORDER BY,但我贏了」除此之外,請嘗試使代碼更具可讀性。儘管如此,它歸結爲非常簡單。在你while循環,插入此:

$selected = $_POST['NEW'] == $row['emission_id'] ? 'selected' : ''; 

然後把這個$selected變量您的選項裏面,像這樣:

<option <?php echo $selected; ?>