かんたん空室サーチとは? 空室サーチは、部屋と3種の状態を登録し、部屋専用のカレンダーを生成するPHPスクリプトです。予約用フォーム等は無く、部屋に登録されたURLがカレンダーにリンクされています。


メールフォームのみで予約を受け付けているサイトに最適です。
使用中のメールフォームを有効に活用し、かつ、カレンダーで空室状態をユーザーへ提供出来るものとなっています。予約内容の記録等はありませんので、あくまで空室かどうかを提供するに留まります。

注) データベースは使いません。空室状況や部屋データはテキストファイルに保存されます。
セットアップファイルの編集 (config.php) config.phpをUTF-8対応のエディターで開き、説明をよくお読みになって設定して下さい。
パーミッションの変更 dataフォルダー (777 or 707)
data/room.dat (666 or 606)
上記のようにパーミッションを変更して下さい。
管理パネルへのアクセス config.phpに設定したパラメーターを使って、管理パネルへアクセスします。
define('ADMIN_MODE',admin);デフォルトで admin が設定されています。

例)
http://hoge.jp/kusitu/ に設置した場
http://hoge.jp/kusitu/?mode=admin が管理パネルURLになります。
少々面倒ですが、管理パネルURLを外部に知られない為のものです。ユニークな文字列を半角英数字で設定して下さい。
部屋を登録する
ログインすると部屋登録画面が表示されます。フォームにサービス名とリンクしたいメールフォームのURL、説明文を記入して登録して下さい。

部屋が登録されると、部屋一覧に表示されます。ここに表示されるURLが、部屋専用のカレンダーURLとなります。

部屋を削除するリンクを押すと、データファイルも含めて部屋が削除されます。

部屋一覧でカレンダーリンクをクリックすると、左図のカレンダー画面が表示されます。空室や満室を設定したい日付をクリックすると、状態変更ページが表示されます。
状態アイコンに関して

状態は3種あり、空室 特別 満室 状態をカレンダー上でアイコン表示します。もちろん、空室と満室のみの表示でも構いません。特別とは、特別料金が適用される日や、イベントを表す等のアイデアで使って下さい。

パラメーターの送信に関して

せっかく複数の部屋を登録しても、メールフォームへリンクしているだけですと、メールフォーム側でどの部屋か判別出来ません。上述した特別も同様です。部屋数が少ない場合は、部屋ごとにメールフォームを用意する方法もありますが、部屋数が多いと現実的ではありません。また、カレンダーをクリックしているのに、日付の取得も出来ません。

これを取得する為に、カレンダーに設定されたURLには複数のパラメーターが追加されます。

http://メールフォームURL/?r=1229214417&j=1&d=1229526000
変数名
r 部屋のユニークID
data/room.dat ファイルを読み込み、IDに該当するデータを抽出する事で部屋名を取得出来ます。
j 状態を表します。 nullの場合は空室1の場合は特別
d 数字はUnix epochからの通算秒数です。この数値からUNIXタイムスタンプを作成し、日付を表示する事が出来ます。
PHPの場合
echo date("Y-m-d",$d); → 2008-12-25

上記をPHPやPerl(CGI)のメールフォーム側で取得するには、多少の知識が必要になります。
※ 取得方法に関するご質問等にはお応え出来ませんので、ご了承下さい。
※ 取得する為のメールフォーム作成は、有償にて作成しますので、お気軽にお問い合わせ下さい。

利用のアイデア

便宜上、ホテル予約のように部屋といった表記にしていますが、会議室予約やイベント予約にも使えるかと思います。サンプルカレンダーではメールフォームにリンクしていますが、これをイベント情報ページにリンクさせたり等も可能かと思います。(ブログでも同様の事が出来ますが)

カレンダーは全てスタイルシートで書いていますので、表示を小さくしてリンクタグを外し、あくまで確認用のみに使う等も、カスタマイズ次第では可能かと思います。

セーフモードのサーバー/セキュリティに関して

満室や特別といった、部屋の状態を記録するファイルは、dataディレクトリー内に自動生成され、状態を書き込んでいきます。詳しい説明は省きますが、セーフモードの場合はこれが出来ないケースがあり、正常に動作しません。また、正常に動作したとしても、あくまでテキストファイル(.dat)に書き込みますので、セキュリティは甘くなります。

この点を十分に理解してご利用下さい。