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 を変更することです。ユーザーが 2 月を選択して月セレクターの onChange イベントをトリガーすると、日付セレクターを書き換えて、年に応じて 28 ~ 29 日を作成します (!)

私は一度これらの行に沿って何かをしました.ページ/スクリプトをそれほど難しくなく引き離すことができるはずです.

于 2009-06-15T04:24:39.740 に答える
0

2 つの答え:

1: JavaScript Calendar クラスを見つけます。

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 に答える