2011-11-01 92 views
0

如何在提交循環時保留表單值?如何在提交<select>循環時保留表格值?

我有這樣的事情:

<?php 
    printf ("<optgroup label=\"CATEGORIES\">"); 

    foreach ($category as $key => $val) { 
    printf ("<option value=\"$key\">$val</option>"); 
    } 
    printf ("</optgroup>"); 
?> 

當點擊提交我的表單的另一部分,它重置在選擇的值到頂部之一。我希望它保持相同的價值。怎麼樣?對於像輸入框我有這樣的作品:

<option value="5" name="results" <?php if($_GET["results"] == '5'){ ?> selected="selected" <?php } ?> >5</option> 

這工作,因爲我沒有動態填充從數據庫下拉,所以我並不需要通過值的循環來和填充的選擇。

回答

1
printf ("<optgroup label=\"CATEGORIES\">"); 

foreach ($category as $key => $val) { 
    $option = '<option value="' . $key . '"'; 
    if ($_GET['select_name'] == $key) { 
    $option .= ' selected="selected"'; 
    } 
    $option .= ">$val</option>"; 

    print $option; 
} 
printf ("</optgroup>"); 
+0

這非常奏效,謝謝! – eveo

0

它的種類取決於您的提交按鈕的動作發送給您的位置。 您將需要獲取值,最有可能形成$ _POST並將其恢復到您的表單中。 否則,您可以使用AJAX提交表單,而不必擔心被清除。

0
foreach ($category as $key => $val) { 
    $sel = ($key == $_GET['results']) ? ' selected="selected"' : ''; 
    printf ("<option value=\"$key\"$sel>$val</option>"); 
} 

基本上,當/如果您達到提交的$ key值時,動態插入選定的屬性。

+0

這是正確的,但迄今爲止最優雅的解決方案不會忘記說明當未設置$ _GET ['results']'時的情況,當前代碼只會在回發。 –

+0

啊,我得到你所做的。它雖然不起作用。選擇名稱是「書」,所以我把「書」放在你把「結果」放在哪裏,它不起作用。它保留了3個隨機選項的值。 – eveo