コーディング カレンダーに予定表をつけてみる

どうも、irisawaです。
今日のコーディングは、この前の実習で作成したカレンダーに予定表を加えるという実習を行いました。

以下、内容となります。

まずは、実習に入る前にファイル関連の関数を教えてもらいました。
以下、ファイル関連の関数です。

  • fopen(ファイル名、モード) ファイルまたはURLをオープンする。戻り値は、ファイルポインタ。
    • モードの一例
      • r 読み込みモードでオープン。
      • w 書き出しモードでオープン。ファイルが無い場合、作成する。
      • a   書き出しモードでオープンし、ファイルポインタを終端に置く。ファイルが無い場合、作成する。
  • fwrite(ファイルポインタ、書き込む文字列) ファイルに書き込む。
  • fclose(ファイルポインタ) ファイルポインタをクローズする。
  • fgetc(ファイルポインタ) 指定したファイルポインタから一バイト分文字を取り出す。
  • fgets(ファイルポインタ) 指定したファイルポインタから一行分取り出す。
  • fgetss(ファイルポインタ) 指定したファイルポインタから一行取り出し、HTML及びPHPのタグを取り除こうとする。
  • feof(ファイルポインタ) 指定したファイルポインタがファイルの終端にいるかどうかを、booleanで返す。
  • file_exists(ファイルまたはディレクトリのパス) ファイルまたはディレクトリのパスが存在するかどうかを、booleanで返す。
  • file(ファイルのパス) ファイル全体を読み込んで配列に格納する。

その他教えてもらった関数

  • nl2br(文字列) 文字列に改行文字が含まれていたら、全ての改行文字の前に<br />を挿入して返す。

以上の関数を教えてもらった後、実習に入りました。
今回コーディングしていて、難しかった所や今後修正したい箇所を挙げてみました。

  • calender.phpで選択された日付を取ってくるという処理が難しかった。
    • 今回はcalender.phpからのリンクのURLに直接データを持たせた。
  • ユーザーインターフェイスを直したり、機能を追加してみたい。
    • 今は2008年のカレンダーだけなので、年ごとのカレンダーを作り予定を立てられるようにしたい。
    • 予定をどんどん追加していくだけなので、個別に内容を編集したり削除できる処理を実装したい。
  • 今のままだと、日付ごとにファイルを作ってしまうのでそれを変更したい。
    • 最終的には、1つのファイルで全ての日付を別途管理できるようにしたい。

以下、今回のコードになります。

【コード】


<html>
<head>
<title>スケジュール</title>
</head>
<body>

<?php

session_start();

//セッションに入っている日付を消す
if (isset($_REQUEST["year"]) && isset($_REQUEST["month"]) && isset($_REQUEST["day"])) {
  unset($_SESSION["date"]);
}

//リクエストで送られた日付をセッションに入れ直す
if (!isset($_SESSION["date"])) {
    $_SESSION["date"] = mktime(0,0,0,$_REQUEST["month"],
                                   $_REQUEST["day"],$_REQUEST["year"]);

    unset($_REQUEST["year"]);
    unset($_REQUEST["month"]);
    unset($_REQUEST["day"]);
}

$day = date("Y-n-j",$_SESSION["date"]);

define("FILENAME",$day.".txt");

//日付ごとのファイルに書き込む
if (isset($_POST["add"])) {
  if ($_POST["text"] != "") {
    $fp = fopen(FILENAME,"a");

    fwrite($fp,date("y/n/j A h:i:s")."n");
    fwrite($fp,$_POST["text"]."n");

    fclose($fp);

    chmod(FILENAME,0666);
  }
}

//ファイルの中身を整形して表示
echo "<p>".date("Y年n月j日",$_SESSION["date"])."の予定</p><hr>";

if (file_exists(FILENAME)) {

  $contents = file(FILENAME);

  echo "<p>";
  foreach ($contents as $content) {
    //<br />を付ける処理
    $content = nl2br($content);

    echo $content;
  }
  echo "</p><hr>";
}else{
  echo "<p>この日の予定はまだありません。</p>";
}

?>

<form action='schedule.php' method='post'>
<p><textarea name='text'></textarea></p>
<p><input type='submit' name='add' value='予定を追加'></p>
</form>
<hr>
<p><a href='calender.php'>カレンダーへ戻る</p>
</body>
</html>

コメントをどうぞ

名前: (Required)

eMail: (Required)

Website:

Comment:

Spam Protection by WP-SpamFree