Php 如何在下拉列表中获得所有天、月和年?
是否有一个类或php脚本将在所有日期、月份和年份的下拉字段中回显。我需要将它们用于出生日期字段。我在谷歌上搜索了一下,但没有找到我可以实现或学习的东西。有什么想法吗?谢谢与其使用三个不同的Php 如何在下拉列表中获得所有天、月和年?,php,calendar,Php,Calendar,是否有一个类或php脚本将在所有日期、月份和年份的下拉字段中回显。我需要将它们用于出生日期字段。我在谷歌上搜索了一下,但没有找到我可以实现或学习的东西。有什么想法吗?谢谢与其使用三个不同的,这不是一个非常用户友好的解决方案,为什么不使用一些基于Javascript的日历小部件呢 例如,我已经听过好几次了--效果要好得多,你不觉得: (来源:) (这只是我链接到的页面上演示的屏幕截图;有几个选项可以调整)与其使用三个不同的,这不是一个非常用户友好的解决方案,为什么不使用一些基于Javascri
,这不是一个非常用户友好的解决方案,为什么不使用一些基于Javascript的日历小部件呢
例如,我已经听过好几次了--效果要好得多,你不觉得:
(来源:)
(这只是我链接到的页面上演示的屏幕截图;有几个选项可以调整)与其使用三个不同的
,这不是一个非常用户友好的解决方案,为什么不使用一些基于Javascript的日历小部件呢
例如,我已经听过好几次了--效果要好得多,你不觉得:
(来源:)
(这只是我链接到的页面上演示的一个屏幕截图;有几个选项可以调整)如果您真的只想在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中完成,那么这里有一个简单的开始:
<?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;
?>
另一种方法,类似的输出:
(年份将按升序排列,而不是降序排列)
主题很旧,但会在接受的答案中添加 日期('M',mktime(0,0,0,$M)) --> 日期('M',mktime(0,0,0,$M,1))
因为在29日、30日和31日,标签会错。PHP将当前日期作为默认日期,并将返回错误的月份,其中缺少该日期。PHP将其解释为月份+1天,并将显示下一个月主题是旧的,但会在接受的答案中说要添加 日期('M',mktime(0,0,0,$M)) --> 日期('M',mktime(0,0,0,$M,1))
因为在29日、30日和31日,标签会错。PHP将当前日期作为默认日期,并将返回错误的月份,其中缺少该日期。PHP将其解释为月份+1天,并将显示下一个月我知道这是一个老问题,但这可能会有所帮助
var_dump(cal_info(CAL_GREGORIAN )['months']);
我知道这是一个老问题,但也许这会有所帮助
var_dump(cal_info(CAL_GREGORIAN )['months']);
仍然不确定需要做什么?这是在客户端还是服务器端?我用它作为注册表。你知道你有你的出生日期字段。因此,我希望能够在字段中显示到当前日期为止的所有天、月、年。PHP不是您的最佳选择,因为每个月的天数不同。您必须在选择
月
时提交表单,以获得正确的日
计数。好的,假设您允许120yo人注册,则下拉框中的行数为365*120=43800。完全疯了。最好将其拆分为单独的日/月/年字段,否则您将断开internet发送那么多
集。还有,别忘了leapyears,大约还有30个选项字段,总共44100个。@Marc B:我想你应该加的时候是在乘法。。)<代码>120+12+31。。我怀疑他会不会用:2011-03-28
,2011-03-27
,2011-03-26
等等来做一个单一的
,仍然不确定你需要做什么?这是在客户端还是服务器端?我用它作为注册表。你知道你有你的出生日期字段。因此,我希望能够在字段中显示到当前日期为止的所有天、月、年。PHP不是您的最佳选择,因为每个月的天数不同。您必须在选择月
时提交表单,以获得正确的日
计数。好的,假设您允许120yo人注册,则下拉框中的行数为365*120=43800。完全疯了。最好将其拆分为单独的日/月/年字段,否则您将断开internet发送那么多
集。还有,别忘了leapyears,大约还有30个选项字段,总共44100个。@Marc B:我想你应该加的时候是在乘法。。)<代码>120+12+31。。我怀疑他会不会用:2011-03-28
,2011-03-27
,2011-03-26
等等来制作一个,2011-03-26
等等。是的,我在谷歌搜索时发现了这一点,但我想要一个下拉列表。这是出生日期,所以想象一下,如果你出生在1943年,你必须不断地来回滚动……我相信你可以在文本字段中键入1943
,它会调整到适当的年份。@AAA:我相信如果你将altFormat
选项设置为YYYY-MM-DD
,然后你就可以开始输入年份,并让它自动调整。如果它可以重复使用的话,这将是一个更好的选择。是的,我在谷歌搜索时发现了这个问题,但我想要一个下拉列表。这是出生日期,所以想象一下,如果你出生在1943年,你必须不断地来回滚动……我相信你可以在文本字段中键入1943
,它会调整到适当的年份。@AAA:我相信如果你将altFormat
选项设置为YYYY-MM-DD
,然后你可以开始输入年份,并让它自动调整。如果它可以用于重复,这将是一个更好的选择。这个选项仍然有效,但对于插入mysql日期字段,你需要前导零。带:sprintf(“%02d”,$num);在FOR循环中,在回显$m和$d之前,这个循环仍然有效,但是对于insert-into-mysql-DATE字段,您需要前导的零。带:sprintf(“%02d”,$num);在响应$m和$d之前,在FOR循环中。