2013-08-01 41 views
0

我在本月的最後一天持續出現問題,除此之外,此代碼可以正常顯示從當前月份開始的所有12個月。在本月的最後一天,我得到了幾個月的重複,其他人根本沒有出現。任何幫助,將不勝感激。謝謝。PHP下拉選擇功能動態創建月份

<select id="month" name="month"> 


<?php 

//lists months 

    for ($i = 0; $i <= 11; ++$i) 
     { 
      $time = strtotime(sprintf('+%d months', $i)); 
      $value = date('m', $time); 
      $label = date('F', $time); 

//if month is set stay on that month 

      if($month==$value) 
       { printf('<option value="%s" selected="selected">%s</option>' , $value, $label); 
       } 
      else 
       {printf('<option value="%s">%s</option>', $value, $label);} 
     } 

?> 

//first month shows instead of blank 

    $("#target option:first") 

</select> 
+0

你在哪裏設置$ month的值? – Maximus2012

+0

另外,您是否可以檢查您是否在不同情況下爲$ time獲得正確的值? – Maximus2012

回答

1

您可能運行到一個問題,即從目前的日X個月後,每月跳過。 而不是

strtotime(sprintf('+%d months', $i)); 

嘗試使用

strtotime(sprintf('first day of +%d month', $i)); 
0
<?php 

    function months($selctedMonth='january'){ 

     $months='<select name="month" size="1">'; 
     for ($i = 12; $i > 0; $i--) { 
      $time = strtotime(sprintf('-%d months', $i)); 
      $label = date('F', $time); 
      $selctedM = strtolower($selctedMonth) == strtolower($label) ? 'selected' : ''; 
      $months.="<option value='$label' $selctedM >$label</option>"; 
     } 
     $months.="</select>"; 
     return $months; 
    } 

    echo months(); 


?> 

默認情況下,作爲選擇的月份將被顯示。

如果你寫<?php echo months('march'); ?>則默認選擇march