在表单提交后将值保留在下拉列表中

时间:2016-01-13 16:24:49

标签: php

我正在尝试保留在我的下拉列表中选择的值,我目前正在使用:

<?php if ($_POST['day']==1) {echo "selected='selected'"; } ?>

要实现这一点,我只是想知道是否有更有效的方法这样做,因为在我的日下拉列表中我有32个值,包括默认值,第13个月包括默认值,第51年包括默认值。任何建议,将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用for loop

例如,使用31天的月份:

for($i=1; $i<32; $i++){
    echo "<option value='$i'".($i==$_POST["day"] ? " selected" : null).">$i</option>";
}

如果$_POST["day"]==1,则会输出:

<option value='1' selected>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
<option value='13'>13</option>
<option value='14'>14</option>
<option value='15'>15</option>
<option value='16'>16</option>
<option value='17'>17</option>
<option value='18'>18</option>
<option value='19'>19</option>
<option value='20'>20</option>
<option value='21'>21</option>
<option value='22'>22</option>
<option value='23'>23</option>
<option value='24'>24</option>
<option value='25'>25</option>
<option value='26'>26</option>
<option value='27'>27</option>
<option value='28'>28</option>
<option value='29'>29</option>
<option value='30'>30</option>
<option value='31'>31</option>

完成:

//Days
echo "<select name='day'><option value='default' disabled>Select a day</option>";
for($i=1; $i<32; $i++){
    echo "<option value='$i'".($i==$_POST["day"] ? " selected" : null).">$i</option>";
}
echo "</select>";

//Months
echo "<select name='month'><option value='default' disabled>Select a month</option>";
for($i=0; $i<30; $i++){
    echo "<option value='$i'".($i==$_POST["month"] ? " selected" : null).">$i</option>";
}
echo "</select>";

//Years
echo "<select name='year'><option value='default' disabled>Select a year</option>";
for($i=2016; $i<2056; $i++){
    echo "<option value='$i'".($i==$_POST["year"] ? " selected" : null).">$i</option>";
}
echo "</select>";