如何使用PHP生成表单的某些部分?PHP表单生成器
我想提出,允许用户通过月,日的下拉菜单输入日期 形式,和同比分别不键入菜单的每一个 选项,我将如何做自动所以用PHP?
例如,我将如何生成一月份1-21,2月份1-28这样的日子,等等,而无需使用纯HTML手动输入它们?
如何使用PHP生成表单的某些部分?PHP表单生成器
我想提出,允许用户通过月,日的下拉菜单输入日期 形式,和同比分别不键入菜单的每一个 选项,我将如何做自动所以用PHP?
例如,我将如何生成一月份1-21,2月份1-28这样的日子,等等,而无需使用纯HTML手动输入它们?
这里是我如何做到这一点在PHP
<select name="birthday_month" id="birthday_month">
<option value=""></option>
<? foreach(range(1,12) as $month): ?>
<option value="<?= $month ?>"><?= date('F', mktime(1,1,1,$month,1,2000)) ?></option>
<? endforeach; ?>
</select>
<select name="birthday_day" id="birthday_day">
<option value=""></option>
<? foreach(range(1,31) as $day): ?>
<option value="<?= $day ?>"><?= $day ?></option>
<? endforeach; ?>
</select>
<select name="birthday_year" id="birthday_year">
<option value=""></option>
<? foreach(range(date('Y'),1900) as $year): ?>
<option value="<?= $year ?>"><?= $year ?></option>
<? endforeach; ?>
</select>
一个简化版本,您可以创建函数输出他们,如果你打算使用他们很多。
编辑:我不花时间自动填充日子,因为日期应该仍然是服务器端检查。
我认为HTML5已经有了日期选择器组件,但使用它可能为时过早。
Galen正处于正确的轨道上,但是当您在浏览器中从一个月变为另一个月时,您将无法获得正确的日期设置(即:如果您没有得到正确的日期设置,您将最终得到2月31日回电给服务器)
Itay Moav的Javascript建议我相信是要走的路:使用javascript在浏览器端修改DOM。当用户选择二月,触发月份选择器的onChange事件时,将重写日期选择器,并根据年份(!)创建28-29天(012)拉开页面/脚本没有太多的困难(该网站的日文,,但源代码写得不好)。
即使使用javascript来自动填充当月的日子,您仍然必须检查服务器端的日期。我的方式只是简单得多。 – Galen 2009-06-15 04:38:30
两个答案:
1:查找JavaScript日历类。
2:在PHP:
$year = 2009; // February has different days in month - based on leap year
for ($month = 1; $month <= 12; $month++)
$lastDayOfMonth[$month] = date("j", strtotime("yesterday", strtotime($month+1."/1/$year")));
现在你有个数组(地图),按月指数,与设置为天的月份的数字值;
时间码基本上是这样说的:找到下个月的第一天 - 然后找到昨天(下个月的第一天前一天) - 然后返回一天。因此,该月的最后一天是该月的天数。
-CF
另外,如果你想显示的天中正在执行的脚本月份的数字,你可以这样做:
print date("t", mktime(0,0,0, date("n")));
这将输出无论是30,31,或28(如果是二月)
不是PHP,JS中有控制这样做的控件。我正在使用我自己写的一个...找到我,我们将看到我们能做些什么。 – 2009-06-15 03:58:41