1

私は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>

今、問題は非常に奇妙です。今日の月 (日、または年) の後に月 (日、または年) を送信すると、関数は正しく機能します。しかし、現在の日付の前の月 (日、または年) を選択すると、ページを送信した後、選択オプションに現在の月 (日、または年) が表示されます。

4

1 に答える 1

0

引数のリストを変更し、2 番目のif条件を にしelse ifます。2 番目の条件の意味は、月がまだ送信されていない場合にのみ、現在の月を選択する必要があるということです。

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>';
}
于 2013-07-25T03:09:54.633 に答える