选择选项:第一次显示当前日期,显示将来的最后选择日期

时间:2013-07-25 03:00:11

标签: php html select

我是一个IT新手,我真的很困惑这个愚蠢的(看起来像?)问题.. 我想要一个选择列表,它默认显示为当前日期。但在我提交页面(表单)并返回错误后,选择列表将显示上次提交的日期。

这是我的月份选项的PHP代码:

function MonthOptions()
{
    $months = array( "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" );
    for($i=1; $i<=12;$i++)
    {


        if($i==date("m"))
            print '<option value="'.$i.'" selected>'.$months[$i-1].'</option>';
        if($i==$this->form['months'])
            print '<option value="'.$i.'" selected>'.$months[$i-1].'</option>';
        else
            print '<option value="'.$i.'" >'.$months[$i-1].'</option>';

    }
}

和我的HTML:

<select name="months" class="date_option">
            <?php $this->MonthOptions() ?>
</select>

现在问题非常奇怪,如果我在今天的月(日或年)之后提交月(日或年),我的功能正常。但如果我选择当前日期之前的月份(日或年),在我提交页面后,选择选项会显示当前月份(日期或年份)..

1 个答案:

答案 0 :(得分:0)

更改参数列表,并将第二个if条件设为else if。第二个条件的含义是,只有在月份尚未提交的情况下才应选择当前月份。

if($i==$this->form['months']) {
     print '<option value="'.$i.'" selected>'.$months[$i-1].'</option>';
} else if ($i==date("m")  && @empty($this->form['months'])) {
     print '<option value="'.$i.'" selected>'.$months[$i-1].'</option>';
} else {
     print '<option value="'.$i.'" >'.$months[$i-1].'</option>';
}