2013-08-01 4 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

где вы устанавливаете значение за месяц? – 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.