time(),date(),getdate()関数を使い、カレンダーを作ってみます。
作成する前に、必要な情報を考えてみます。
1.カレンダーを表示するには、月の初めの空欄を設けるため、
その月の初めが何曜日か
2.月末が何日まであるのか
サンプルコードの実行結果はこちら
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>PHPでカレンダーを作成</title> <link rel="stylesheet" href="../style.css"> <style> th{ height:16px; width:48px; } td{ font-family:"メイリオ"; font-size:16px; width:64px; height:64px; } td.today{ font-size:24px; font-weight:bold; } .bgGray{background-color:#d0d0d0;} </style> </head> <body> <?php $tm = time(); $dt = getdate($tm); /* mktime()関数 現在日時ではない、 日時の情報を作成する為に使う関数 */ $fm = mktime(0,0,0, $dt["mon"], 1,$dt["year"] ); //月初めの曜日を格納 $fw = date( "w" , $fm); //月終わりの日を格納 $ld = date( "t" , $tm); $wd = array("日","月","火","水","木","金","土"); echo "<h1>" . $dt["month"] . "," . $dt["year"] . "</h1>"; ?> <table border="2"> <tr> <?php //日月火水木金土を出力 foreach( $wd as $value ){ echo "<th>" . $value . "</th>"; } ?> </tr> <tr> <?php //月初めの空白を出力 for( $i = 0 ; $i < $fw; $i++ ) echo "<td></td>"; for( $j = 1 ; $j <= $ld; $j++ ){ if( $j == $dt["mday"] ) echo "<td class=\"today bgGray\">" . $j . "</td>"; else echo "<td>" . $j . "</td>"; //7日出力したら次の行へ移る if( ( $j + $i ) % 7 == 0 ) echo "</tr><tr>"; } ?> </tr> </table> </body> </html> |