2014-08-27 37 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; ?>