2012年2月29日水曜日

Bloggerにソースコードを投稿

Bloggerにソースコードを投稿してみるテストです。
この前のテストでやったカレンダーのソースをそのまま掲載します。

参考サイト:
Syntax Highlighter導入
Blogger でコードをシンタックスハイライトする -net3-
コードの変換
コードをハイライトする「Blogger Syntax Highlighter」ウィジェット -クリボウの Blogger Tips-

実はこのソース、バグがあります。
月初めの1日が日曜日だとtrが余計に出力されるってバグです。
読まれる方は気をつけて読んでください。
余裕があったらそのうち修正版を掲載します。

<html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <title></title>

    <style type="text/css">

.Sun{
 color: red;
}
.Mon{
 color: #000;
}
.Tue{
 color: #000;
}
.Wed{
 color: #000;
}
.Thu{
 color: #000;
}
.Fri{
 color: #000;
}
.Sat{
 color: #00F;
}
    </style>

  </head>

  <body>

<?php
 if($_GET['year'] != ""){
  $year = $_GET['year'];
 }
 if($_GET['month'] != ""){
  $month = $_GET['month'];
 }
 $calender_html = calender($year,$month);
 print $calender_html;
?>

  </body>

</html>
<?php
function  calender($year = "" , $month = ""){
 //初期化
 if($year == ""){
  $year = date('Y');
 }
 if($month == ""){
  $month = date('m');
 }
 $html = "";

 if($month == 12){
  $next_year = $year+1;
  $next_month = 1;
  $prov_year = $year;
  $prov_month = 11;


 }elseif($month == 1){
  $next_year = $year;
  $next_month = 2;
  $prov_year = $year-1;
  $prov_month = 12;
 }else{
  $next_year = $year;
  $next_month = $month+1;
  $prov_year = $year;
  $prov_month = $month-1;
 }

 //月末日
 $end_day = date('d',mktime(0,0,0,$month+1,0,$year));
 //月始まりの曜日
 $start_week = date('w',mktime(0,0,0,$month,1,$year));
 //月末曜日
 $end_week = date('w',mktime(0,0,0,$month,$end_day,$year));

 //表示
 $html .= "<table border='1' class='calender'>\n";
 $html .= " <caption>";
 $html .= "<a href='?year={$prov_year}&month={$prov_month}'><<</a>";
 $html .= "{$year}年{$month}月\n";
 $html .= "<a href='?year={$next_year}&month={$next_month}'>>></a>";
 $html .= " </caption>\n";
 $html .= " <tr>\n";
 $html .= "  <th class='Sun'>日</th>\n";
 $html .= "  <th>月</th>\n";
 $html .= "  <th>火</th>\n";
 $html .= "  <th>水</th>\n";
 $html .= "  <th>木</th>\n";
 $html .= "  <th>金</th>\n";
 $html .= "  <th class='Sat'>土</th>\n";
 $html .= " </tr>\n";
 $html .= "\n";
 //末日までループ
 for($i = 1 ; $i <= $end_day;$i++ ){

  //表示する日の曜日を取得
  $view_week = date('w',mktime(0,0,0,$month,$i,$year));
  $view_week_str = date('D',mktime(0,0,0,$month,$i,$year));

  //最初の日は空白を出力
  if($i == 1){
   $html .= "<tr>\n";
   for($ii = 0;$ii < $view_week;$ii++){
    $html .= "<td><br></td>\n";
   }
  }
  //日曜ならtr開始
  if($view_week == 0){
   $html .= "<tr>\n";
  }

  //日付出力
  $html .= "<td class='".$view_week_str."'>".$i."</td>\n";

  //土曜ならtr〆
  if($view_week == 6){
   $html .= "</tr>\n";
  }

  if($i == $end_day){
   for($ii = $view_week;$ii < 6 ;$ii++){
    $html .= "<td><br></td>\n";
   }
   $html .= "</tr>\n";
  }


 }
 $html .= "</table>\n";

 return $html;
}
?>

0 件のコメント:

コメントを投稿