1

如何使用 PHP 生成表单的一部分?

我想制作一个表单,允许用户分别通过月、日和年的下拉菜单输入日期,而无需键入菜单的每个选项,我将如何使用 PHP 自动执行此操作?

例如,如何在不使用纯 HTML 手动输入的情况下生成 1 月的 1-31 天、2 月的 1-28 天等等?

4

4 回答 4

2

这是我在 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>

如果您要经常使用它们,您可以创建输出它们的函数。

编辑:我不花时间自动填充日期,因为日期仍应在服务器端检查。

于 2009-06-15T04:08:44.833 回答
0

我认为HTML5有一个日期选择器组件,但使用它可能还为时过早。

Galen 是在正确的轨道上,但是当您在浏览器中从一个月更改为另一个月时,您将无法获得正确的日期设置(即:如果您不回电,您最终会得到 2 月 31 日服务器)

Itay Moav 的 Javascript 建议我相信是要走的路:使用 javascript 在浏览器端修改 DOM。当用户选择二月时,触发月份选择器的 onChange 事件,您将重写日期选择器,并根据年份创建 28-29 天(!)

我曾经做过一次这样的事情,你应该能够毫不费力地拆开页面/脚本(该网站是日文的,源代码写得不好)。

于 2009-06-15T04:24:39.740 回答
0

两个答案:

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

于 2009-06-15T04:31:17.570 回答
0

此外,如果您想显示脚本正在执行的月份中的天数,您可以执行以下操作:

print date("t", mktime(0,0,0, date("n") ));  

这将输出 30、31 或 28(如果是 2 月)

于 2009-06-15T04:33:36.130 回答