2011-08-11 99 views
2

叫我約翰尼切入彎道,但我試圖寫一個簡單的循環來添加到一個SELECT,使人們能夠選擇自己的出生月份...for循環一年中每個月

我的繼承人代碼沒有工作:

  <p> 
      <label for="signup_birth_month">Birthday:</label> 
      <select name="signup_birth_month" id="signup_birth_month"> 
      <option value="">Select Month</option> 
      <?php 

      for ($i = 1; $i <= 12; $i++) 
      { 
       $month_name = date('F', mktime(0, 0, 0, $i, 1, 2011)); 
       echo '<option value="'.$month_name.'"'.$month_name.'></option>'; 
      } 

      ?> 
      </select> 
      </p>  

回答

9

您需要引述value鍵:

echo "<option value=\"" . $month_name . "\">" . $month_name . "</option>"; 

另外,我可能會更喜歡這樣的事:

$months = array("Jan", "Feb", "Mar", ..., "Dec"); 
foreach ($months as $month) { 
    echo "<option value=\"" . $month . "\">" . $month . "</option>"; 
} 

看起來奇怪的是,您會將所有不必要的電話撥打datemktime當你知道值應該是什麼。

這個數組版本具有相同的行數,並且它的意圖似乎更清晰(至少對我而言)。

+0

哇我所要做的就是修復回聲裏面的html。 – scarhand

1

您是否看不到月份名稱打印在選擇框中?

我想這應該做的伎倆:

echo "<option value=\"" . $month_name . "\">" . $month_name . "</option>"; 
+1

甲'的printf()'會看起來更好,即'的printf( '<選項值= 「%1 $ S」>%1 $ S', $ month_name);' – Phil

+0

@Phil不知道printf。謝謝你的提示! :) – Jeune

0

我認爲你應該修復HTML部分。

echo '<option value="'.$month_name.'">'.$month_name.'</option>'; 

不要忘記之前

date_default_timezone_set('Your/Timezone'); 

設置默認的時區要不然你會得到的日期()和mktime(一E_WARNING)(如果設置使用error_reporting(E_ALL))。 查看有效時區的http://www.php.net/manual/en/timezones.php

或者,您也可以使用類似

$i = 1; 
$month = strtotime('2011-01-01'); 
while($i <= 12) 
{ 
    $month_name = date('F', $month); 
    echo '<option value="'. $month_name. '">'.$month_name.'</option>'; 
    $month = strtotime('+1 month', $month); 
    $i++; 
} 

但for循環就好了。

3
for($iM =1;$iM<=12;$iM++){ 
echo date("M", strtotime("$iM/12/10"));} 
1

很簡單!

function getLocalMonthName($locale, $monthnum) 
{ 
    setlocale (LC_ALL, $locale.".UTF-8"); 
    return ucfirst(strftime('%B', mktime(0, 0, 0, $monthnum, 1))); 
} 

print getLocalMonthName("pt_BR", 1); // returns Janeiro 
0

非常簡單的解決方案:

print '<option value="" disabled selected>Select month</option>'; 
for ($i = 1; $i <= 12; $i ++) { 
    print '<option value="' . $i . '">' . date('F', strtotime("$i/12/10")) . '</option>'; 
}