phpで現在の年月のカレンダーを表示するサンプルを作成しました。
WEBサイトを構築しているとカレンダーを表示したい場合があります。
営業日カレンダーやイベントカレンダーなど、様々な箇所で利用されています。
ツールやライブラリーなど色々ありますが、それらを使用せずに
phpで簡単なカレンダーを作成した時の方法をメモします。
■ phpで簡単なカレンダーを作成
※テーブルで出力する場合の方法です。
【PHP】
「$year」「$month」に取得したいカレンダーの年月を指定します。
「$calendar」にカレンダーの情報を格納します。
<?php
// 現在の年月を取得
$year = date('Y');
$month = date('n');
// 月末日を取得
$last_day = date('j', mktime(0, 0, 0, $month + 1, 0, $year));
$calendar = array();
$j = 0;
// 月末日までループ
for ($i = 1; $i < $last_day + 1; $i++) {
// 曜日を取得
$week = date('w', mktime(0, 0, 0, $month, $i, $year));
// 1日の場合
if ($i == 1) {
// 1日目の曜日までをループ
for ($s = 1; $s <= $week; $s++) {
// 前半に空文字をセット
$calendar[$j]['day'] = '';
$j++;
}
}
// 配列に日付をセット
$calendar[$j]['day'] = $i;
$j++;
// 月末日の場合
if ($i == $last_day) {
// 月末日から残りをループ
for ($e = 1; $e <= 6 - $week; $e++) {
// 後半に空文字をセット
$calendar[$j]['day'] = '';
$j++;
}
}
}
?>
【HTML】
「$calendar」をループさせ、カレンダーの値を出力します。
<?php echo $year; ?>年<?php echo $month; ?>月のカレンダー <br> <br> <table> <tr> <th>日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th>土</th> </tr> <tr> <?php $cnt = 0; ?> <?php foreach ($calendar as $key => $value): ?> <td> <?php $cnt++; ?> <?php echo $value['day']; ?> </td> <?php if ($cnt == 7): ?> </tr> <tr> <?php $cnt = 0; ?> <?php endif; ?> <?php endforeach; ?> </tr> </table>
【CSS】
見やすいように、スタイルを調整します。
<style type="text/css">
table {
width: 100%;
}
table th {
background: #EEEEEE;
}
table th,
table td {
border: 1px solid #CCCCCC;
text-align: center;
padding: 5px;
}
</style>
下記のようにカレンダーが出力されます。
※下記は2014年7月のカレンダーを出力した場合です。
オリジナルで作成していた方がカレンダーにイベント情報を入れたり等の
カスタマイズがしやすいのでいいと思います。
また関数にしておくと使いやすいかもしれないです。











