ホーム » ブログ » PHPでカレンダー作成サンプル
このエントリーをはてなブックマークに追加
@2018/09/03

スポンサーリンク
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)); ?>">&lt;</A> 
    <!-- 当月 -->
    <?php echo $year . '年' . $month . '月' ?>
    <!-- 来月 -->
    <A href="?m=<?php echo  date('Ym', mktime(0, 0, 0, $month + 1 , 1, $year)); ?>">&gt;</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>

♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
0人
このエントリーをはてなブックマークに追加


★ 当記事を閲覧の方は下記の【関連記事】も閲覧していました。

お名前:

 

EMAIL:

 

URL:

 

認証コード:

zanmai.net-safecode

 


※会員の方は認証コードを要らないから、新規登録をオススメ!

check