PHP:phpで簡単なカレンダーを作成する方法

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月のカレンダーを出力した場合です。

calendar


オリジナルで作成していた方がカレンダーにイベント情報を入れたり等の
カスタマイズがしやすいのでいいと思います。

また関数にしておくと使いやすいかもしれないです。

  • このエントリーをはてなブックマークに追加

PHP:phpで簡単なカレンダーを作成する方法” への7件のコメント

  1. このソースを使用して、スケジュールカレンダーを作りたいのですが、このソースをそのまま使用して、WEBにアップしても大丈夫でしょうか?

    • d-sさん、コメントありがとうございます!
      上記のソースコードは使用して大丈夫です。

  2. なんどもすいません。
    $last_day = date(‘j’, mktime(0, 0, 0, $month + 1, 0, $year));のところはdate(“t”)ではなくこれを使用するのでしょうか?
    すいません、初心者で何も分からなくて、

    お教え下さい。
    よろしくお願い致します。

  3. rainingさん
    コメントありがとうございます。
    早速WEBにアップ致します。
    それとアップするWEBの仕様は商用ですが、
    大丈夫でしょうか?

    それと初心者なので、
    まだ分からないことがありまして、
    すいません。
    $calendar[$j][‘day’]の’day’は、なぜdayにするのでしょうか?
    変数の$cntとはどんな役割をしているのでしょうか?

    すいません。お教え下さい。
    よろしくお願い致します。

    • d-sさん、コメントありがとうございます。

      >それとアップするWEBの仕様は商用ですが、
      >大丈夫でしょうか?

      ソースコードを載せただけなので、自由に使って全然構いません。

      >$calendar[$j][‘day’]の’day’は、なぜdayにするのでしょうか?

      dayは私がわかりやすいようにキーの名前をつけただけなので、なんでもOKですよ。

      >変数の$cntとはどんな役割をしているのでしょうか?

      $cntはテーブル内のtrタグ閉じと開始を設定するために使用しています。
      foreachでループさせた数を数えて、日~土で次の列に行くようにするためです。
      テーブルで組まなければ必要ないです。それぞれの環境に合わせて利用してみてください!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です