2013-02-04 33 views
0

基本上,我的表單會在提交時POST自己,但是我希望用戶的選擇值保留在任何錯誤輸出的情況下。一個Select元素的PHP數據保留 - 尋找一個優雅的解決方案

我知道如何做到這一點對於大多數表單元素,但是,當我使用select時,我很難過。

這是我目前的解決方案,我正在尋找更優雅的東西,有幫助嗎?

<select name="birthday_month" id="dob_month" label="Month" class="" > 
    <option value="-1">M</option> 
    <option value="1" <?php if(isset($_POST['birthday_month']) && 1 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Jan</option> 
    <option value="2" <?php if(isset($_POST['birthday_month']) && 2 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Feb</option> 
    <option value="3" <?php if(isset($_POST['birthday_month']) && 3 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Mar</option> 
    <option value="4" <?php if(isset($_POST['birthday_month']) && 4 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Apr</option> 
    <option value="5" <?php if(isset($_POST['birthday_month']) && 5 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>May</option> 
    <option value="6" <?php if(isset($_POST['birthday_month']) && 6 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Jun</option> 
    <option value="7" <?php if(isset($_POST['birthday_month']) && 7 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Jul</option> 
    <option value="8" <?php if(isset($_POST['birthday_month']) && 8 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Aug</option> 
    <option value="9" <?php if(isset($_POST['birthday_month']) && 9 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Sep</option> 
    <option value="10" <?php if(isset($_POST['birthday_month']) && 10 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Oct</option> 
    <option value="11" <?php if(isset($_POST['birthday_month']) && 11 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Nov</option> 
    <option value="12" <?php if(isset($_POST['birthday_month']) && 12 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Dec</option> 
     </select> 
+1

這看起來像一個類似的問題。 http://stackoverflow.com/questions/8560482/using-php-post-to-remember-a-option-in-a-select-box –

回答

2

使用循環創建<option> s。

for ($i=1;$i<=31;$i++) { 
    echo "<option value='$i'"; 
    if ($_POST['birthday_day'] == $i) { 
    echo " selected='selected'"; 
    } 
    echo ">$i</option>"; 
} 

for ($i=1;$i<=12;$i++) { 
    echo "<option value='$i'"; 
    if ($_POST['birthday_month'] == $i) { 
    echo " selected='selected'"; 
    } 
    echo ">".date("M",mktime(0, 0, 0, $i, 1))."</option>"; 
} 
+0

唉!謝謝你的回答,它解決了我的問題的一半。我編輯了我的問題,以更好地反映我的問題 - >我們如何處理與文本不同的價值? –

+1

@NimaAmin你可以使用PHP日期函數,因爲我更新了我的文章以反映。 – Lrdwhyt

+0

謝謝先生。優雅!我非常感謝幫助,爲我節省了一個小時+。乾杯。 –

相關問題