2016-01-09 29 views
1

我正在使用此功能創建數月的下拉菜單。使用php函數爲月份創建一個下拉菜單。

function formMonth(){ 
    $month = strtotime(date('Y').'-'.date('m').'-'.date('j').' - 12 months'); 
    $end = strtotime(date('Y').'-'.date('m').'-'.date('j').' + 0 months'); 
    while($month < $end){ 
     $selected = (date('F', $month)==date('F'))? ' selected' :''; 
     echo '<option'.$selected.' value="'.date('F', $month).'">'.date('F', $month).'</option>'."\n"; 
     $month = strtotime("+1 month", $month); 
    } 
} 

我的問題是我需要使用1到12的數值作爲選項值。

此時它使用月份名稱作爲value這樣的選項。

<select size="1" name="month"> 
<option selected value="January">January</option> 
<option value="February">February</option> 
<option value="March">March</option> 
<option value="April">April</option> 
<option value="May">May</option> 
<option value="June">June</option> 
<option value="July">July</option> 
<option value="August">August</option> 
<option value="September">September</option> 
<option value="October">October</option> 
<option value="November">November</option> 
<option value="December">December</option> 
</select> 

有沒有人可以告訴我如何修改這個函數。 謝謝。

回答

2

如果你看一看爲date()的文檔,你會「格式」下看到,你可以使用n幾個月的數字表示,從1到12.(你也可以使用m作爲前導零(01-12))。

這意味着你基本上只需要改變

echo '<option'.$selected.' value="'.date('F', $month).'">'.date('F', $month).'</option>'."\n"; 

echo '<option'.$selected.' value="'.date('n', $month).'">'.date('F', $month).'</option>'."\n"; 

在當前的代碼,只要它,否則按預期工作(我所做的有替換date('F', $month)values-屬於date('n', $month)

0
<select size="1" name="month"> 
<option selected value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
<option value="4">4</option> 
<option value="5">5</option> 
<option value="6">6</option> 
<option value="7">7</option> 
<option value="8">8</option> 
<option value="9">9</option> 
<option value="10">10</option> 
<option value="11">11</option> 
<option value="12">12</option> 
</select> 

如果這就是你想要的。

享受!

+0

這不值得贊同。我認爲寫一個函數來返回靜態的東西像這樣相對較小是過度殺傷。只需對字符串進行硬編碼。它是最易讀和可管理的代碼。 – trincot

1

這裏是你的答案: -

<?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

1

試試這個:你的問題很好。

<?php 
function formMonth(){ 
    $month = strtotime(date('Y').'-'.date('m').'-'.date('j').' - 12 months'); 
    $end = strtotime(date('Y').'-'.date('m').'-'.date('j').' + 0 months'); 
    $val=1; 
    echo "<select>"; 
    while($month < $end){ 

     $selected = (date('F', $month)==date('F'))? ' selected' :''; 
     echo '<option'.$selected.' value='.$val.'>'.date('F', $month).'</option>'."\n"; 
     $month = strtotime("+1 month", $month); 
     $val++; 
    } 
    echo "</select>"; 
} 

formMonth(); 

?> 
2

試試下面的代碼:

<select name="month" size='1'> 
    <?php 
    for ($i = 0; $i < 12; $i++) { 
     $time = strtotime(sprintf('%d months', $i)); 
     $label = date('F', $time); 
     $value = date('n', $time); 
     echo "<option value='$value'>$label</option>"; 
    } 
    ?> 
</select>