2009-06-15 208 views
1

如何使用PHP生成表單的某些部分?PHP表單生成器

我想提出,允許用戶通過月,日的下拉菜單輸入日期 形式,和同比分別不鍵入菜單的每一個 選項,我將如何做自動所以用PHP?

例如,我將如何生成一月份1-21,2月份1-28這樣的日子,等等,而無需使用純HTML手動輸入它們?

+0

不是PHP,JS中有控制這樣做的控件。我正在使用我自己寫的一個...找到我,我們將看到我們能做些什麼。 – 2009-06-15 03:58:41

回答

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> 

一個簡化版本,您可以創建函數輸出他們,如果你打算使用他們很多。

編輯:我不花時間自動填充日子,因爲日期應該仍然是服務器端檢查。

0

我認爲HTML5已經有了日期選擇器組件,但使用它可能爲時過早。

Galen正處於正確的軌道上,但是當您在瀏覽器中從一個月變爲另一個月時,您將無法獲得正確的日期設置(即:如果您沒有得到正確的日期設置,您將最終得到2月31日回電給服務器)

Itay Moav的Javascript建議我相信是要走的路:使用javascript在瀏覽器端修改DOM。當用戶選擇二月,觸發月份選擇器的onChange事件時,將重寫日期選擇器,並根據年份(!)創建28-29天(012)拉開頁面/腳本沒有太多的困難(該網站的日文,,但源代碼寫得不好)。

+0

即使使用javascript來自動填充當月的日子,您仍然必須檢查服務器端的日期。我的方式只是簡單得多。 – Galen 2009-06-15 04:38:30

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

0

另外,如果你想顯示的天中正在執行的腳本月份的數字,你可以這樣做:

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

這將輸出無論是30,31,或28(如果是二月)