我正在构建我的新网站并且已经合并了一个选择菜单,因此用户可以对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';
}
答案 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}},并且您将为每个选项输出“已选择”。我想浏览器可以决定选择最后一个来处理它。