PHPで日付を選択するフォームを作成したいのですが方法がよくわからないので教えてください


やりたいことは下記のように開始日と終了日を選択できるセレクトボックスを設置したいのですが

開始日:[2007]年 [10]月 [10]日 ~ 終了日:[2007]年 [12]月 [11]日

①このフォームを表示したときに開始日と終了日にはその日の日付をセットしたい

②開始日と終了日が指定され、POSTされたときに、両日付にPOSTされた日付をセットしたい
(選択された年月日の部分に"selected"を自動で入るようにしたい)

一番詳細な回答をいただけた方に300ポイント差し上げます
サンプルソースをいただけると助かります
よろしくお願いします

回答の条件
  • 1人2回まで
  • 登録:2007/05/24 13:53:44
  • 終了:2007/05/28 23:05:58

回答(3件)

id:Nigitama No.1

にぎたま回答回数311ベストアンサー獲得回数182007/05/24 14:15:20

ポイント27pt

これ、ビンゴじゃないですかね?

このページの一番上の回答者が書いているソースです。

http://www.phppro.jp/qa/465

id:tezcello No.2

tezcello回答回数460ベストアンサー獲得回数692007/05/24 16:49:39

ポイント300pt

(2) の方を盛込んだ形にしてみました。

if (isset($_POST['btn_Submit'])){
	$start['y'] = $_POST['sy'];
	$start['m'] = $_POST['sm'];
	$start['d'] = $_POST['sd'];
	$end['y'] = $_POST['ey'];
	$end['m'] = $_POST['em'];
	$end['d'] = $_POST['ed'];
}else{
	$start['y'] = date('Y');
	$start['m'] = date('n');
	$start['d'] = date('j');
	$end['y'] = $start['y'];
	$end['m'] = $start['m'];
	$end['d'] = $start['d'];
}


function set_opt($s, $e, $sel){
	$a = '';
	for ($i=$s; $i<=$e; $i++){
		if ($i == $sel) $b = ' selected'; else $b = '';
		$a .= "<option value=\"$i\"$b>$i</option>";

	}
	return $a;
}

$opt_sy = set_opt(2005, 2009, $start['y']);
$opt_sm = set_opt(1, 12, $start['m']);
$opt_sd = set_opt(1, 31, $start['d']);
$opt_ey = set_opt(2005, 2009, $end['y']);
$opt_em = set_opt(1, 12, $end['m']);
$opt_ed = set_opt(1, 31, $end['d']);

$html = <<<EOL
<html>
<head>
  <title>はてなテスト</title>
</head>
<body>
<form method="post">
開始日:<select name="sy">{$opt_sy}</select>年 <select name="sm">{$opt_sm}</select>月 <select name="sd">{$opt_sd}</select>日
 ~ 終了日:<select name="ey">{$opt_ey}</select>年 <select name="em">{$opt_em}</select>月 <select name="ed">{$opt_ed}</select>日
<p><input type="submit" name="btn_Submit" value="ボタン"></p>
</form>
</body>
</html>

EOL;

print $html;

不明点がありましたら、回答受付中でもコメントがつけられるように変更してくださいね。

回数制限を気にしないでお答えできますので。

id:jayz

ご回答ありがとうございます。

ばっちりです。またご指摘していただいたコメントについては知らなかったので助かりました

2007/05/28 23:04:38
id:jack_sonic No.3

じゃっくそにっく回答回数123ベストアンサー獲得回数252007/05/24 18:26:44

ポイント50pt

①、②の条件を満たす、

POST受け取り側スクリプト(本体)、及び

POST送信側のサンプルを含む

  • PHP稼動サンプルページ
  • サンプルソースコード(ファイルDL可)

を↓のページに書きました。

PHP/2つの日付を設定するフォーム(POST受付可) - ジャックズラボ jack's Lab

何か要望があればどうぞ。

私もコメントはつけられるようにしておいたほうがいいかと思います。

id:jayz

わざわざアップしていただいてありがとうございます。

2007/05/28 23:05:26
  • id:tezcello
    たくさんのポイントどうもです。
    たまたま似た様なスクリプトを書いたところだったので少々の変更でご期待に添えるものが出来るのではと書いてみました。
    冗長な部分がありますが分かり易さを優先しました。

    使用方法にもよりますが、post で送られて来た値を日付として正しいかの判断を入れておくとより実用的かも知れませんね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません