PHP カレンダーとスケジュール機能 最終回

こんにちは。hirafujiです。

今日のPHPでは、前回前々回に引き続き、「ファイルの操作と、ファイルによるデータの持ち方をマスターする」というテーマのもと、カレンダーとスケジュール機能を作りました。

以下、恥ずかしながら私のコードをご紹介します。

【カレンダー】

【コード】

<?php

//リクエストに月が送られてくれば設定。デフォルトは当月。
if (isset($_REQUEST['month'])) {
    $to_month = $_REQUEST['month'];
} else {
    $to_month = date('n');
}

?>
<html>
<head>
<title>こんにちは!僕カレンダー!</title>
<style type="text/css">
<!--
    .normal { font-weight:normal; }
    .bold   { font-weight:bold;   }
-->
</style>
</head>

<body>
<form id="form1">
<select id="month" name="month" onChange="submit();">
    <?php for ($i=1;$i<=12;$i++): ?>
    <?php
        $selected = "";
        if($i == $to_month) {
            $selected = "selected";
        }
    ?>
    <option value="<?php echo $i ?>" <?php echo $selected ?> ><?php echo $i ?></option>
    <?php endfor;?>
    </select>,2008<br />
</form>

<table border ='1'>
<thead>
    <tr>
        <th width='125' style="color: #ff0000"><font size='10'>sun</font></td>
        <th width='125'><font size='10'>mon</font></td>
        <th width='125'><font size='10'>tue</font></td>
        <th width='125'><font size='10'>wed</font></td>
        <th width='125'><font size='10'>thu</font></td>
        <th width='125'><font size='10'>fri</font></td>
        <th width='125' style="color: #0000ff"><font size='10'>sat</font></td>
    </tr>
</thead>

<?php

  /********************************/
  /**** ここからhirafujiのコード ****/
  /********************************/

$year = 2008 ;
$month = $to_month ;
$day = 1 ;                                 //日付は1から始める
$satrt = mktime(0,0,0,$month,$day,$year) ; //タイムスタンプ取得

for  (  ;  ;  )  {

  echo "<tr>" ;

  for ( $i=0 ; $i<=6 ;$i++ ) {

    if ( checkdate($month,$day,$year) && $i== date('w' , mktime(0,0,0,$month,$day,$year))) { //正しい曜日から開始するため

      $filename = "~/hirafuji/test".$month."_".$day.".txt" ;

      if ( file_exists($filename) ) { //過去に予定を書き込んだことがあるかどうか調べる
        echo "<td bgcolor='yellow'>" ;
      } else {
        echo "<td>" ;
      }

      echo "<a href='~/hirafuji/schedule.php?month=".$to_month."&day=".$day."'>" ;

      /********************************/
      /***** 曜日によって色を変える ******/
      /********************************/

      if ( $i==0 ) {       //日曜日
        echo "<font color='red' size='10' >" ;
      } elseif ( $i==6 ) { //土曜日
        echo "<font color='blue' size='10' >" ;
      } else {             //平日
        echo "<font color='black' size='10' >" ;
      }

      echo $day."<font></a></td>" ;
      $day++ ;

    } else { //日付や曜日が妥当ではない時
      echo "<td> </td>" ;
    }
  }

  echo "</tr>" ;

  if ( !checkdate($month,$day,$year) ){
    break ;
  }
}

?>

</table>
</body>
</html>
【実行結果】
calender

【スケジュール】

【コード】

<html>
<head>
<title>こんにちは!僕スケジュール!</title>
</head>

<body>

<?php

$month = $_GET['month'] ;
$day = $_GET['day'] ;
$year = 2008 ;

if (checkdate($month,$day,$year) ) { //日付の妥当性を調べる

  /********************************/
  /********** 日付を表示 ***********/
  /********************************/

  echo "<center> <h1>Hello! This is a schedule for ".$day ;

  if ( $day == 1 ) {
    echo "st," ;
  } elseif ( $day == 2 ) {
    echo "nd," ;
  } elseif ( $day == 3 ) {
    echo "rd," ;
  } else {
    echo "th," ;
  }

  echo $month."!</h1>" ;

?>

    <h2>Write your plans , and you will be HAPPY!!</h2>

       <table>
       <tr>
       <td valign='top'>
       <form action='calender.php' method='post'>
       <p><input type='submit' name='home' value='HOME' /></p>
       </form>

       <?php echo "<form action='schedule.php?month=".$month."&day=".$day."' method='post' >" ; ?>
       <p><input type='submit' name='write' value='WRITE' /></p>
          <p>name:<input type='text' name='yourname' value='名無しさん' /></p>
          <textarea name='text' rows='5' cols='30'></textarea>
          </form>
          </td>

          <td width='20'> </td>

<?php

  /********************************/
  /*****スケジュール自体の処理********/
  /********************************/

  $filename = "~/test".$month."_".$day.".txt" ;
  echo "<td valign='top'>" ;

  if ( isset($_POST['write']) ) { //ボタン押した時
    $time = date('') ;
    $txt = fopen($filename , "a") ;

    fwrite( $txt , "<ul><li><font size='5'>".nl2br($_POST['text'])."</font><br />   <font size='1'>(".date('G:i:s/d/M/Y')." by".$_POST['yourname'].")</font></li></ul>") ;
    fclose($txt) ;
  }

  if ( file_exists($filename) ) { //過去に予定を書き込んだことがあるかどうか調べる

    $txt = file($filename) ;
    foreach ($txt as $value) {
      echo $value . "<br />" ;
    }

  }

} else { //変な日付の時
  echo "ERROR!!!
        <form action='calender.php' method='post'>
        <p><input type='submit' name='home' value='HOME' /></p>
        </form>" ;

}

?>
</td>
</tr>
</table>
</center>
</body>
</html>
【実行結果】
schedule


どうでしょうか。
実は、ブログには載せられない様な変なところにばかりこだわってしまったので(新卒の誕生日にお祝いメッセージを出すとか…)、肝心の機能については疑問も残りますが…。ブログに載せる前に、日付の判定をもうちょっとなんとかしたかったのですが、今日はもう時間切れです><
他の新卒も、削除機能を付けたり、隠しコマンドを持たせたりと各々楽しみながら作っていた様でした。

今回取り組んだカレンダー・スケジュールは、DBを使える様になったらもう一度作り直す機会をいただける様です。
その頃には、もっともっと良いコードを書ける様になっているでしょうね。とても楽しみです!

コメントをどうぞ

名前: (Required)

eMail: (Required)

Website:

Comment:

Spam Protection by WP-SpamFree