*

WordPress用プラグインで使う宿泊予約用カレンダーをPHPで書くぜ

公開日: : 最終更新日:2013/12/30 WordPress ,

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作るシリーズで使う、空き部屋状況の表示用カレンダーについて検討します。ただし祝祭日は考慮しません。複雑になるので今後の課題にしておきます。

フレームワークにはだいたいカレンダー用のクラスがあります。つまりカレンダーって全国共通で必要な機能ってことですね。というわけで、一から書くのは非効率!ここはありがたく検索し使わせてもらう方が利口ですよね。

PHP簡単カレンダー関数
http://shanabrian.com/web/php_calendar.php

見つけたなかで最もスッキリしていて分かりやすそうな物を使わせていただくことにします。ありがとうございます。

<?php
function calendar($year = "", $month = "") {
	if(empty($year) && empty($month)) {
		$year = date("Y");
		$month = date("n");
	}
	//月末の取得
	$l_day = date("j", mktime(0, 0, 0, $month + 1, 0, $year));
	//初期出力
	$tmp = <<<EOM
<table class="calendar">
	<caption>{$year}年{$month}月</caption>
	<tr>
		<th class="sun">日</th>
		<th>月</th>
		<th>火</th>
		<th>水</th>
		<th>木</th>
		<th>金</th>
		<th class="sat">土</th>
	</tr>\n
EOM;
	$lc = 0;
	//月末分繰り返す
	for ($i = 1; $i < $l_day + 1;$i++) {
		//曜日の取得
		// 0=日曜日 1=月曜日 2=火曜日....6=土曜日
		$week = date("w", mktime(0, 0, 0, $month, $i, $year));
		//曜日が日曜日の場合
		if ($week == 0) {
			$tmp .= "\t<tr>\n";
			$lc++;
		}
		//1日の場合
		if ($i == 1) {
			if($week != 0) { // 日曜日じゃない場合
				$tmp .= "\t<tr>\n";
				$lc++;
			}
			$tmp .= repeat($week);
			// 空枠を$week個挿入する
			// 例:火曜日は$week=2 なので日曜・月曜の分(2個)空き枠を入れる
		}
		if ($i == date("j") && $year == date("Y") && $month == date("n")) {
			//現在の日付の場合 date("j")は今日の日付(頭にゼロなし)
			$tmp .= "\t\t<td class=\"today\">{$i}</td>\n";
		} else {
			//現在の日付ではない場合
			$tmp .= "\t\t<td>{$i}</td>\n";
		}
		//月末の場合
		if ($i == $l_day) {
			$tmp .= repeat(6 - $week);
		}
		//土曜日の場合 ここで次の行に移動する
		if($week == 6) {
			$tmp .= "\t</tr>\n";
		}
	}
	if($lc < 6) {
	// 仕上がりが6行無い場合は1行追加する
		$tmp .= "\t<tr>\n";
		$tmp .= repeat(7);
		$tmp .= "\t</tr>\n";
	}
	if($lc == 4) {
	// 仕上がりが4行だった場合は上と合わせて2行追加で合計6行
		$tmp .= "\t<tr>\n";
		$tmp .= repeat(7);
		$tmp .= "\t</tr>\n";
	}
	$tmp .= "</table>\n";
	return $tmp;
}

function repeat($n) {
	return str_repeat("\t\t<td> </td>\n", $n);
}
?>

わかりやすいようにコメントを追記しました。

問題はこれに空き状況をDBから引っ張って組み込む必要があることです。たぶん日付を追加している部分でDBから空き状況を引っ張ってきてやれば大丈夫ような気がします。

上のプログラムだと「$tmp」にHTMLを追記しています。空き状況用に「$tmp2」を用意して「if($week == 6) {」の中で書き足す処理を行います。

空き部屋状況のデータはテーブルに入ります。テーブルはプラグインを有効化すると自動で作成されます。以下の構造になっています。

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(4)データベース基礎

$this->table_name = $wpdb->prefix . 'rooms';

$sql = "CREATE TABLE " . $table_name . " (
    plan_id varchar(2) NOT NULL,
    s_date date NOT NULL,
    r_count smallint,
    r_season varchar(2),
    tmp varchar(10)

データの読み出しは前の記事を参考にします。
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(12)空室管理画面 C

function load_data($table_name) {
    global $wpdb;
    if ( is_admin() ) {
        $yy = mb_substr($this->rdate,0,4);       // 年の取り出し
        $mm = mb_substr($this->rdate,5,2);       // 月の取り出し
        $startday = $yy . "-" . $mm . "-01";
        $lastday= date('Y-m-t', mktime(0,0,0, $mm, 1, $yy));    
        $results = $wpdb->get_results($wpdb->prepare(
            "SELECT * FROM $table_name WHERE r_season=%s AND (s_date>=%s AND s_date<=%s) ORDER BY s_date",
        $this->rtype, $startday, $lastday ));
        //var_dump($results);
        foreach ($results as $row) {
            $this->aki[] = $row->r_count;
        }
    }
}

組立と調整は次回に。


Sponsored Link


 
 

関連記事

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(6)初期設定画面

ここまでで、ひと通りの仕組みというか流れは理解できたような気がします。まずは初期設定画面から制作して

記事を読む

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(5)メニュー階層化

今回はオリジナルプラグインの管理画面でのメニュー作成について。かなりすんなりと出来てしまったので短め

記事を読む

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(4)データベース基礎

今回はWordPressのプラグイン開発で必要になるデータベースに関する知識ついて調べました。この辺

記事を読む

ワードプレス用宿泊予約プラグイン開発「空室情報読み込み」

前回までに作ったカレンダーに空室状況を表示させます。最初に表示欄を作って確認してからデータベースの読

記事を読む

ワードプレス用宿泊予約プラグイン開発「空室カレンダー表示」

前回ネットで検索して見つけた calendar($year = "", $month = "") 関

記事を読む

ご質問は掲示板へお願いいたします。

Message

メールアドレスが公開されることはありません。

CAPTCHA


Optionally add an image (JPEG only)

Sponsored Link

気になる情報・新製品発見メモ

日頃ネットをウロウロしていて記事にするほどでもない情報、記事にするほど

録音ミニスタジオ完成の図と12色のリモコンLED電球

構想10年・制作3日の自宅音声収録スタジオの完成です。 ご覧の通

録音(撮影)ミニスタジオの制作DIY

そんな訳で吸音スポンジを壁に取り付けてみた続きです。 調子に乗っ

YAMAHA MG10UXミキサー到着

2018年 物置(事務所or作業場or遊び部屋)の一角を音声収録&撮影

そしてzbrush coreをインストールしてみる話

Blenderに挫折してから一気に3Dにのめり込んでいます。 ま

録音環境を改善する!吸音パネルをDIYとか

久々に更新! すっかり更新グセが抜けてしまい、イマイチやる気が出

→もっと見る




  •  

PAGE TOP ↑