如何在一个下拉菜单中获得所有的日子,月份和年份?
问题描述:
是否有一个类或php脚本会在下拉字段中回复所有日期,月份和年份。我需要将它们用于出生日期字段。我google搜索,但没有出现,我可以实施或从中学习。有任何想法吗?谢谢如何在一个下拉菜单中获得所有的日子,月份和年份?
答
如果你真的只是想在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();
?>
答
而不是用三个不同的<select>
,这不是一个非常用户友好的解决方案,为什么不使用一些基于Javascript的日历小部件?
例如,我听说过jQuery Datepicker好几次 - 效果要好得多,你不觉得:
http://extern.pascal-martin.fr/so/5463037.png
(这就是只是我链接到的页面上的演示的屏幕截图;有几个选项可以调整)
答
主题是旧的,但在添加
接受的答案会说日期( 'M',mktime(0,0,0,$ M))
- >
日期( 'M',mktime(0,0, 0,$ m,1))
因为在29日,30日和31日标签将是错误的。 PHP将当天的默认值作为默认值,并将返回错过这一天的错误月份。 PHP会将其解释为月份+ 1天,并会显示下个月
答
我知道这是一个老问题,但也许这会有所帮助。
var_dump(cal_info(0)['months']);
仍然不知道什么ü需要做什么?这是在客户端还是服务器端? – Neal 2011-03-28 17:58:00
我正在使用这个注册表单。你知道你有你的出生日期字段。所以我希望能够显示所有的日子,几个月,几年到现场的当前日期。 – AAA 2011-03-28 17:59:21
由于每月的天数不同,PHP并不是您的最佳选择。当选择“月份”时,您必须提交表格才能获得正确的“日”计数。 – drudge 2011-03-28 18:10:49