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

时间:2011-11-24 22:06:06

标签: php javascript jquery html

我正在构建我的新网站并且已经合并了一个选择菜单,因此用户可以对PHP显示的结果进行排序,它运行良好,但无论何时首次显示页面,默认选项始终是最后一个代码,因此对于下面的代码,显示的选项是' Free'选项应该是'无'选项。如果我选择名称选项,结果也会正确显示,也可以使用与上面相同的示例,但是现在框中的选项仍然是免费选项,无论如何我可以将其更改为正在使用的选项。

很抱歉,如果这有点令人困惑,因为我有两个类似的问题需要排序。

这是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';
}

2 个答案:

答案 0 :(得分:1)

HTML中的所选属性需要显示为....

尝试更改此内容:

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

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

我希望这有帮助!

答案 1 :(得分:1)

变化:

<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];有效,则会选择{{1}},并且您将为每个选项输出“已选择”。我想浏览器可以决定选择最后一个来处理它。