プロが教える店舗&オフィスのセキュリティ対策術

PHPでMySQLを利用した予約カレンダーを作成しなければならない課題なのですが、初心者同然の知識ではなかなか難しく、また、思うようなサンプルも見つからず、困っています…。

希望としては、カレンダー表示(うるう年計算や祝日情報を含む)で、データベースに予定が入っていなければ日付にリンク付けをし、枠内に○印を記載、そりてリンクからは予約項目入力ページに移動させるようにしたいと思っています。また、データベースに予定が入っていれば日付のリンク付けはなしで枠内に×印を表示して予約が出来ないようにしたいと考えています。

下記が予約状況を入れたMySQLテーブルです。
mysql> desc reserve;
+--------------+-----------+----+---+-----------------+---------------------------+
|Field |Type |Null|Key|Default |Extra |
+--------------+-----------+----+---+-----------------+---------------------------+
|会員ID |varchar(10)|NO |MUL|NULL | |
|部屋NO |int(3) |NO |MUL|NULL | |
|人数:大人 |int(3) |NO | |NULL | |
|人数:子ども |int(3) |NO | |NULL | |
|チェックイン |date |NO | |NULL | |
|チェックアウト|date |NO | |NULL | |
|宿泊プランNO |int(10) |NO |MUL|NULL | |
|予約登録日 |timestamp |NO | |CURRENT_TIMESTAMP|on update CURRENT_TIMESTAMP|
+--------------+-----------+----+---+-----------------+---------------------------+

出来ればサンプルコード、もしくは希望のサンプルが乗ったURLなどをお教え頂きたく思います。

また、予約画面ではチェックアウト日選択(チェックイン日から1週間以内)や、人数を入力していただくテキストフィールドと宿泊プランの選択プルダウンをつけるつもりでいます。

すみませんがどなたかこの初心者に救いのお手をお貸しくださいませ。
よろしくお願いいたします。

A 回答 (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";
    • good
    • 0

課題なのにサンプルコード提示したらそのまま使っちゃうだろ。


ここまで詳細な仕様が決まっているならサンプルは無いよ。

まずはどこがわからないの?
サンプル出す出さないにしたって漠然としすぎ。
仮にサンプル出すにしてもここで回答しきれる内容じゃないよ。

・表示の仕方がわからない
・カレンダーの作り方がわからない
・登録の仕方がわからない
・そもそもmySQLとの接続が出来ない
・そもそも課題の意味がわからない

ひとつひとつクリアするしかないぜ?

>初心者同然の知識ではなかなか難しく
だから課題を出すんだよ。学校とかの勉強なんだろ?

この回答への補足

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

分からないのは、
・表示の仕方がわからない
・カレンダーの作り方がわからない
です。

カレンダーのサンプルならば見つけたのですが、そこにMySQLのデータを組み合わせ方が全く分からず、全然捗っていないのです…。

一応希望としては
http://showcase.souppot.jp/top.php
このような形のカレンダーが理想です…。

なので、結果としてはカレンダー表示にデータベースの予定を反映したいけれど、どんなコーディングをすればいいのかさっぱりわからない、といった具合です。
分かり辛く、お手数をおかけしましてすみませんでsた

補足日時:2013/03/12 12:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!