选择菜单不显示正确的选项

选择菜单不显示正确的选项

问题描述:

我正在建立我的新网站,并纳入了一个选择菜单,所以用户可以排序结果,显示的PHP,它运作良好,但无论何时页面第一次显示默认选项是总是代码中的最后一个,所以对于下面的代码,显示的选项是'Free'选项,它应该是'None'选项。如果我去选择名称选项,同样使用上面的示例,结果将正确显示,但现在在框中的选项仍然是免费选项,无论如何,我可以将其更改为正在使用的选项。选择菜单不显示正确的选项

对不起,如果这有点混乱,因为我有两个类似的问题,我需要排序。

这里是HTML + PHP代码。

<form method="get" style="display: inline;" name='orderby_form'> 
    <input type=hidden name='param1' value="<?php print $param1; ?>"> 
    <input type=hidden name='param2' value="<?php print $param2; ?>"> 
    <select name=orderby onChange="orderby_form.submit();"> 
    <option value='name' <?php print $selected[$orderby]; ?>>Name</option> 
    <option value='difficulty' <?php print $selected[$orderby]; ?>>Difficulty</option> 
    <option value='payout' <?php print $selected[$orderby]; ?>>Payout</option> 
    <option value='newest' <?php print $selected[$orderby]; ?>>Newest</option> 
    <option value='free' <?php print $selected[$orderby]; ?>>Free</option> 
    <option> None</option> 
    </select> 
</form> 

这里是PHP代码:

$selected = array(); 

$orderby = $_GET[orderby]; 
if(!$orderby) { $orderby = 'name'; } 

if($orderby == 'name') 
{ 
    $orderby_query = "ORDER BY name"; 
} 
else if($orderby == 'difficulty') 
{ 
    $orderby_query = "ORDER BY difficulty_rating ASC"; 
} 
else if($orderby == 'payout') 
{ 
    $orderby_query = "ORDER BY penny_value DESC"; 
} 
else if($orderby == 'newest') 
{ 
    $orderby_query = "ORDER BY date_added DESC"; 
} 
else if($orderby == 'free') 
{ 
    $orderby_query = "AND free='1'"; 
} 
else { unset($orderby); } 

// If $orderby was valid set the selected sort option for the form. 

if($orderby) 
{ 
    $selected[$orderby] = 'selected'; 
} 

在HTML选定的属性需要出现....

尝试改变这一点:

if($orderby){ 
    $selected[$orderby] = 'selected'; 
} 

TO:

if($orderby){ 
    $selected[$orderby] = 'selected="selected"'; 
} 

我希望这有助于!

+0

感谢您的帮助,我尝试了您的建议,但我选择的每个选项都会继续返回“免费”选项。 –

+0

@AlistairWise看看PaulPRO的答案,并尝试将两者结合起来。 – dSquared

变化:

<option value='name' <?php print $selected[$orderby]; ?>>Name</option> 
<option value='difficulty' <?php print $selected[$orderby]; ?>>Difficulty</option> 
<option value='payout' <?php print $selected[$orderby]; ?>>Payout</option> 
<option value='newest' <?php print $selected[$orderby]; ?>>Newest</option> 
<option value='free' <?php print $selected[$orderby]; ?>>Free</option> 

要:

<option value='name' <?php print $selected['name']; ?>>Name</option> 
<option value='difficulty' <?php print $selected['difficulty']; ?>>Difficulty</option> 
<option value='payout' <?php print $selected['payout']; ?>>Payout</option> 
<option value='newest' <?php print $selected['newest']; ?>>Newest</option> 
<option value='free' <?php print $selected['free']; ?>>Free</option> 

目前您使用的是相同的值 '选择' 为每个选项。 $selected[$orderby];如果有效,将被选中,并且您将为每个选项输出“选定”。我想浏览器可能会决定选择最后一个来处理这个问题。

+0

辉煌的工作完美,非常感谢 –