- ベストアンサー
PHPでMySQLを利用した予約カレンダーの作成方法
- 初心者でもわかりやすいPHPとMySQLを利用した予約カレンダーの作成方法について解説します。
- カレンダー表示にはうるう年計算や祝日情報を含め、データベースに予定が入っている場合は×印を表示し予約ができないようにします。
- チェックアウト日選択や人数入力テキストフィールド、宿泊プランの選択プルダウンなど、予約画面の実装方法も紹介します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ざっくり書くとこんな感じでカレンダーを表示する <form> <p> <select name="ym"> <option value="201301">2013年 1月</option> <option value="201302">2013年 2月</option> <option value="201303">2013年 3月</option> <option value="201304">2013年 4月</option> <option value="201305">2013年 5月</option> <option value="201306">2013年 6月</option> </select> <input type="submit" value="go"> </p> </form> <?PHP $ym=isset($_REQUEST["ym"])?$_REQUEST["ym"]:false; $pattern="/^([0-9]{4})([0-9]{2})$/"; if(preg_match($pattern,$ym,$matches)){ $y=(int) $matches[1]; $m=(int) $matches[2]; $d=mktime(0,0,0,$m,1,$y); $w=date("w",$d); $d -=$w*86400; $table="<table border>\n"; $table.="<caption>{$y}年{$m}月</caption>\n"; $table.="<tr><th>日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th>土</th></tr>\n"; while(mktime(0,0,0,$m+1,1,$y) >=$d){ $table.="<tr>"; for($i=0;$i<7;$i++){ $table.="<td>"; if($m != (int) date("m",$d)) $table.=" "; else $table.=date("j",$d); $d+=86400; $table.="</td>\n"; } $table.="</tr>\n"; } print $table; } ?> あとは$yと$mをもとに、データベースからひと月分予定を抜いてきて、表示を調整する。 たとえば、こんな感じ・・・ $sql="SELECT 日付,予定 FROM 予定表 WHERE 日付 BETWEEN @d:='{$y}-{$m}-1' AND @d + interval 1 month - interval 1 day";
その他の回答 (1)
- Taiyonoshizuku
- ベストアンサー率37% (183/489)
課題なのにサンプルコード提示したらそのまま使っちゃうだろ。 ここまで詳細な仕様が決まっているならサンプルは無いよ。 まずはどこがわからないの? サンプル出す出さないにしたって漠然としすぎ。 仮にサンプル出すにしてもここで回答しきれる内容じゃないよ。 ・表示の仕方がわからない ・カレンダーの作り方がわからない ・登録の仕方がわからない ・そもそもmySQLとの接続が出来ない ・そもそも課題の意味がわからない ひとつひとつクリアするしかないぜ? >初心者同然の知識ではなかなか難しく だから課題を出すんだよ。学校とかの勉強なんだろ?
補足
ご回答ありがとうございます。 分からないのは、 ・表示の仕方がわからない ・カレンダーの作り方がわからない です。 カレンダーのサンプルならば見つけたのですが、そこにMySQLのデータを組み合わせ方が全く分からず、全然捗っていないのです…。 一応希望としては http://showcase.souppot.jp/top.php このような形のカレンダーが理想です…。 なので、結果としてはカレンダー表示にデータベースの予定を反映したいけれど、どんなコーディングをすればいいのかさっぱりわからない、といった具合です。 分かり辛く、お手数をおかけしましてすみませんでsた