2013-07-25 36 views
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> 

現在的問題是很奇怪的,如果我提交後的一個月(天,或一年)今天的月份(日期或年份),我的功能正常工作。但如果我選擇當前日期之前的月份(日期或年份),在我提交頁面後,選擇選項將顯示當前月份(日期或年份)。

回答

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>'; 
} 
+0

非常感謝!它完美地工作。我不知道這裏可以使用@empty函數。我試圖添加if($ i == date(「m」)&& $ i!= $ this-> form ['months'])),但仍然無法工作。感謝您的回答! – Hongxuan

相關問題