phpで現在の年月のカレンダーを表示するサンプルを作成しました。
WEBサイトを構築しているとカレンダーを表示したい場合があります。
営業日カレンダーやイベントカレンダーなど、様々な箇所で利用されています。
ツールやライブラリーなど色々ありますが、それらを使用せずに
phpで簡単なカレンダーを作成した時の方法をメモします。
■ phpで簡単なカレンダーを作成
※テーブルで出力する場合の方法です。
【PHP】
「$year」「$month」に取得したいカレンダーの年月を指定します。
「$calendar」にカレンダーの情報を格納します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <?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」をループさせ、カレンダーの値を出力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <?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】
見やすいように、スタイルを調整します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <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月のカレンダーを出力した場合です。
オリジナルで作成していた方がカレンダーにイベント情報を入れたり等の
カスタマイズがしやすいのでいいと思います。
また関数にしておくと使いやすいかもしれないです。
このソースを使用して、スケジュールカレンダーを作りたいのですが、このソースをそのまま使用して、WEBにアップしても大丈夫でしょうか?
d-sさん、コメントありがとうございます!
上記のソースコードは使用して大丈夫です。
なんどもすいません。
$last_day = date(‘j’, mktime(0, 0, 0, $month + 1, 0, $year));のところはdate(“t”)ではなくこれを使用するのでしょうか?
すいません、初心者で何も分からなくて、
お教え下さい。
よろしくお願い致します。
date(“t”)で大丈夫でした!すいません!
月末の日付を取得できればOKです。
rainingさん
コメントありがとうございます。
早速WEBにアップ致します。
それとアップするWEBの仕様は商用ですが、
大丈夫でしょうか?
それと初心者なので、
まだ分からないことがありまして、
すいません。
$calendar[$j][‘day’]の’day’は、なぜdayにするのでしょうか?
変数の$cntとはどんな役割をしているのでしょうか?
すいません。お教え下さい。
よろしくお願い致します。
d-sさん、コメントありがとうございます。
>それとアップするWEBの仕様は商用ですが、
>大丈夫でしょうか?
ソースコードを載せただけなので、自由に使って全然構いません。
>$calendar[$j][‘day’]の’day’は、なぜdayにするのでしょうか?
dayは私がわかりやすいようにキーの名前をつけただけなので、なんでもOKですよ。
>変数の$cntとはどんな役割をしているのでしょうか?
$cntはテーブル内のtrタグ閉じと開始を設定するために使用しています。
foreachでループさせた数を数えて、日~土で次の列に行くようにするためです。
テーブルで組まなければ必要ないです。それぞれの環境に合わせて利用してみてください!
コメント頂き、大変感謝しております。
ありがとうございました!
ピンバック: PHPファイルに賢威HTML版を適用させる手順について! | Liibercraft|リーベルクラフト