2011-11-24 74 views
0

我正在建立我的新網站,並納入了一個選擇菜單,所以用戶可以排序結果,顯示的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'; 
} 

回答

1

在HTML選定的屬性需要出現....

嘗試改變這一點:

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

TO:

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

我希望這有助於!

+0

感謝您的幫助,我嘗試了您的建議,但我選擇的每個選項都會繼續返回「免費」選項。 –

+0

@AlistairWise看看PaulPRO的答案,並嘗試將兩者結合起來。 – dSquared

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];如果有效,將被選中,並且您將爲每個選項輸出「選定」。我想瀏覽器可能會決定選擇最後一個來處理這個問題。

+0

輝煌的工作完美,非常感謝 –