ホーム > ブログ [果報は寝て待て] > PHPカレンダースクリプト

ブログ [果報は寝て待て]|Blog

PHPカレンダースクリプト

2008年10月7日 09:11

おはようございます。
何故か微妙に寝不足気味な掛尾です。

今回は、某所で公開していたPHPのカレンダースクリプトを紹介しようと思います。
ブログなんかのサイドにちょこんとあって、まぁ使うとこはあまり無いけど、あるとなんとなく安心するあれです(笑)

クラスで作っているので、単体でも動きますが、必要があればロジックとビューを分けて、MVC化して使う事もできると思います。
(余談)shape DESIGNが作るブログは、これをSmartyと連携して使っています。

<?php
class Calendar
{
  function &amp;createCalendar( $year, $month )
  {
    $calendar['curr_month'] = sprintf( '%04d年%02d月', $year, $month );
     
    $f_dow = date( 'w', mktime( 0, 0, 0, $month, 1, $year ) );
     
    $col = 0;
    $cal = "<tr>\n";
    for( $i = 0; $i < $f_dow; $i++ ){
      $cal .= "<td> </td>";
      $col++;
    }
    $day = 0;
    while( checkdate( $month, ++$day, $year ) ){
      // 今日
      if( $year == date( "Y" ) &amp;&amp; $month == date( "m" ) &amp;&amp; $day == date( "d" ) ){
        $cal .= "<td style=\"background: #fdd; font-weight: bold;\">$day</td>";
      }
      // 日曜
      elseif( ( $day + $f_dow ) % 7 == 1 ){
        $cal .= "<td style=\"color: #f00;\">$day</td>";
      }
      // 土曜
      elseif( ( $day + $f_dow ) % 7 == 0 ){
        $cal .= "<td style=\"color: #00f;\">$day</td>";
      }
      else {
        $cal .= "<td>$day</td>";
      }
      $col++;
       
      if( $col % 7 == 0 ) $cal .="\n</tr>\n<tr>\n";
    }
     
    $e_dow = date( 'w', mktime( 0, 0, 0, $month, $day, $year ) );
    if( $e_dow != 0 ){
      for( $i = 0; $i < 7 - $e_dow; $i++ ){
        $cal .= "<td> </td>";
      }
    }
    $cal .= "\n</tr>\n";
     
    $calendar['view'] = $cal;
     
     
    // ページ処理
    // 前月
    if( $month == 1 ){
      $calendar['last_year'] = $year - 1;
      $calendar['last_month'] = 12;
    }
    else {
      $calendar['last_year'] = $year;
      $calendar['last_month'] = $month - 1;
    }
     
    // 次月
    if( $month == 12 ){
      $calendar['next_year'] = $year + 1;
      $calendar['next_month'] = 1;
    }
    else {
      $calendar['next_year'] = $year;
      $calendar['next_month'] = $month + 1;
    }
     
    return $calendar;
  }
}
?>
 
<?php
$calendar = new Calendar();
 
$curr_year = isset( $_GET['year'] ) ? $_GET['year'] : date( "Y" );
$curr_month = isset( $_GET['month'] ) ? $_GET['month'] : date( "m" );
 
$cal =&amp; $calendar->createCalendar( $curr_year, $curr_month );
?>
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>カレンダー</title>
</head>
 
<body>
<div id="calendar">
  <table border="0" cellspacing="0" cellpadding="5" style="text-align: center;">
    <tr>
      <td colspan="7" align="center">
        <a href="Calendar.class.php?year=<?php echo $cal['last_year']; ?>&amp;month=<?php echo $cal['last_month']; ?>"><<</a> 
        <?php echo $cal['curr_month']; ?> 
        <a href="Calendar.class.php?year=<?php echo $cal['next_year']; ?>&amp;month=<?php echo $cal['next_month']; ?>">>></a>
      </td>
    </tr>
    <tr>
      <th style="color: #f00;">日</th>
      <th>月</th>
      <th>火</th>
      <th>水</th>
      <th>木</th>
      <th>金</th>
      <th style="color: #00f;">土</th>
    </tr>
    <?php echo $cal['view']; ?>
  </table>
</div>
</body>
</html>

それほど難しい事はしていないと思うので、じっくり読めば難解でもないと思います。

それでは…今回はこの辺で。
オシャレな(?)カレンダーを設置してくださいね!

※このスクリプトにおいて、動作の検証は行っていませんので、責任は一切負いません。

shape DESIGN - シェイプデザイン, 徳島県徳島市名東町, tel/fax 088-635-5859, 営業時間 平日10:00〜18:00

まずはお気軽にお問い合わせください
お問い合わせ・お見積り・ご相談はこちら
お気軽にご相談ください

徳島県徳島市名東町
tel/fax 088-635-5859
営業時間 平日 10:00〜18:00

※打ち合わせ等で不在の場合は、お電話でのお問い合わせに対応できない場合がありますので、ご了承ください。

フォームからのお問い合わせ

徳島・香川・愛媛・高知および大阪・京都を中心にご依頼を承ります。その他の地域でも、メール・お電話・FAX・Skype等での作業が可能であれば柔軟に対応いたします。

  • Become our fan on Facebook, facebook.com/shape.design