PHPでカレンダー作成サンプルです。
僕の別のサイトへ実装する予定ですので、ここでメモします。
ソースコードを貼り付けます。
<?php
/*------------------------------------
* 曜日の色を取得
* @param $i : week number
*------------------------------------*/
function get_weekday_color($i=0) {
$calendar_color = array(
'0' => '#ff0000' ,
'1' => '#000000' ,
'2' => '#000000' ,
'3' => '#000000' ,
'4' => '#000000' ,
'5' => '#000000' ,
'6' => '#0000ff' ,
'holiday' => 'red' ,
'current_day' => 'yellow' ,
'white' => '#ffffff' ,
);
return $calendar_color[$i];
}
//$m = $_GET['m'];
$m = isset($_GET['m']) ? $_GET['m'] : '';
// 表示年月を計算
if ($m) {
$year = date('Y', strtotime($m . '01'));
$month = date('n', strtotime($m . '01'));
} else {
$year = date('Y');
$month = date('n');
}
$day = date('j');//ゼロ付けない
$weekday = array('日', '月', '火', '水', '木', '金', '土');
?>
<style type="text/css">
.Calendar {
background-color : #aaaaaa;
text-align : center;
}
.Calendar caption {
padding : 4px;
}
</style>
<TABLE class="Calendar" cellpadding="4" cellspacing="1" style="">
<CAPTION style="">
<!-- 前年 -->
<A href="?m=<?php echo date('Ym', mktime(0, 0, 0, $month , 1, $year - 1));?>">≪</A>
<!-- 先月 -->
<A href="?m=<?php echo date('Ym', mktime(0, 0, 0, $month - 1 , 1, $year)); ?>"><</A>
<!-- 当月 -->
<?php echo $year . '年' . $month . '月' ?>
<!-- 来月 -->
<A href="?m=<?php echo date('Ym', mktime(0, 0, 0, $month + 1 , 1, $year)); ?>">></A>
<!-- 来年 -->
<A href="?m=<?php echo date('Ym', mktime(0, 0, 0, $month , 1, $year + 1)); ?>">≫</A>
</CAPTION>
<TBODY>
<!-- 曜日を出力 Start -->
<TR>
<?php
/*---------------------------------------------------------カレンダーの曜日を出力 */
$i = 0;
while ($i <= 6) {
$c = get_weekday_color($i);
?>
<TD style="color : <?php echo $c; ?> ; background-color : #eeeeee;">
<?php echo $weekday[$i]; ?>
</TD>
<?php
$i++;
}
?>
</TR><!-- //曜日を出力 END -->
<TR>
<?php
$i = 0;//曜日Loop
/*---------------------------------------------------------月初の週で、先月月末の一部を表示 */
while ($i != date('w', mktime(0, 0, 0, $month, 1, $year))) {
//初日への差
$weekday_dif = date('w', mktime(0, 0, 0, $month, 1, $year)) - $i;
//先月のx日
$w_day = date('d', mktime(0, 0, 0, $month, 1 - $weekday_dif, $year));
?>
<!-- 先月の日を特別で出力 -->
<TD style="background-color : #EEE;font-size:70%; "><?php echo $w_day; ?></TD>
<?php
$i++;
}
$last_day = 0;//月の最終日
/*---------------------------------------------------------当月の1ヵ月分出力 */
for ($days = 1; checkdate($month, $days, $year); $days++) {
//週間完了、来週へ
if ($i > 6) {
?>
</TR>
<TR>
<?php
$i = 0;
}
$c = get_weekday_color($i);
if ($days == $day) {
$bc = get_weekday_color('current_day');
}else{
$bc = get_weekday_color('white');
}
?>
<TD style="color : <?php echo $c;?> ;background-color : <?php echo $bc; ?>">
<?php echo $days; ?>
</TD>
<?php
$i++;
$last_day = $days;
}
/*---------------------------------------------------------月末の週で、来月の一部を表示 */
while ($i < 7) {
//カレンダーの最終曜日の差
$last_day += 1;
$w_day = date('j', mktime(0, 0, 0, $month, $last_day , $year));
echo '<TD style="background-color : #DDD; font-size:80%;">'. $w_day . '</TD>';
$i++;
}
?>
</TR>
</TBODY>
</TABLE>
♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
zanmai @2016年03月31日
» ①②③④の順で設定できるはず。…