2011-03-28 43 views
1

是否有一個類或php腳本會在下拉字段中回覆所有日期,月份和年份。我需要將它們用於出生日期字段。我google搜索,但沒有出現,我可以實施或從中學習。有任何想法嗎?謝謝如何在一個下拉菜單中獲得所有的日子,月份和年份?

+1

仍然不知道什麼ü需要做什麼?這是在客戶端還是服務器端? – Neal 2011-03-28 17:58:00

+0

我正在使用這個註冊表單。你知道你有你的出生日期字段。所以我希望能夠顯示所有的日子,幾個月,幾年到現場的當前日期。 – AAA 2011-03-28 17:59:21

+1

由於每月的天數不同,PHP並不是您的最佳選擇。當選擇「月份」時,您必須提交表格才能獲得正確的「日」計數。 – drudge 2011-03-28 18:10:49

回答

13

如果你真的只是想在PHP中完成的,這裏有一個簡單的開始:

<?php 
    // lowest year wanted 
    $cutoff = 1910; 

    // current year 
    $now = date('Y'); 

    // build years menu 
    echo '<select name="year">' . PHP_EOL; 
    for ($y=$now; $y>=$cutoff; $y--) { 
     echo ' <option value="' . $y . '">' . $y . '</option>' . PHP_EOL; 
    } 
    echo '</select>' . PHP_EOL; 

    // build months menu 
    echo '<select name="month">' . PHP_EOL; 
    for ($m=1; $m<=12; $m++) { 
     echo ' <option value="' . $m . '">' . date('M', mktime(0,0,0,$m)) . '</option>' . PHP_EOL; 
    } 
    echo '</select>' . PHP_EOL; 

    // build days menu 
    echo '<select name="day">' . PHP_EOL; 
    for ($d=1; $d<=31; $d++) { 
     echo ' <option value="' . $d . '">' . $d . '</option>' . PHP_EOL; 
    } 
    echo '</select>' . PHP_EOL; 
?> 

另一種方法,類似的輸出:
(年將是升序,而不是降序)

<?php 
    $build = array(
     array('year', '1910', date('Y'), 'Y'), 
     array('month', '1', '12', 'M'), 
     array('day', '1', '31', 'j') 
    ); 
    $doc = new DOMDocument(); 
    foreach ($build as $item) { 
     $menu = $doc->createElement('select'); 
     $menu->setAttribute('name', $item[0]); 
     for ($x=$item[1]; $x<=$item[2]; $x++) { 
      $b = $item[3]; 
      $opt = $doc->createElement('option'); 
      $opt->setAttribute('value', $x); 
      $opt->nodeValue = date($item[3], mktime(0,0,0,($b=='M'?$x:1),($b=='j'?$x:1),($b=='Y'?$x:1))); 
      $menu->appendChild($opt); 
     } 
     $doc->appendChild($menu); 
    } 
    echo $doc->saveHTML(); 
?> 
5

而不是用三個不同的<select>,這不是一個非常用戶友好的解決方案,爲什麼不使用一些基於Javascript的日曆小部件?


例如,我聽說過jQuery Datepicker好幾次 - 效果要好得多,你不覺得:

        http://extern.pascal-martin.fr/so/5463037.png

(這就是隻是我鏈接到的頁面上的演示的屏幕截圖;有幾個選項可以調整)

+0

是的,我發現這個雖然使用谷歌搜索,但我想要一個下降的東西。這是出生日期,所以想象一下,如果你是在1943年出生的,你將不得不繼續滾動回來... – AAA 2011-03-28 18:09:06

+1

我相信你只需要在文本字段中鍵入'1943',它就會調整到合適的年。 – drudge 2011-03-28 18:09:55

+0

@jnpcl它不..只是嘗試。謝謝 – AAA 2011-03-28 18:13:53

2

主題是舊的,但在添加

接受的答案會說

日期( 'M',mktime(0,0,0,$ M))

- >

日期( 'M',mktime(0,0, 0,$ m,1))

因爲在29日,30日和31日標籤將是錯誤的。 PHP將當天的默認值作爲默認值,並將返回錯過這一天的錯誤月份。 PHP會將其解釋爲月份+ 1天,並會顯示下個月

相關問題