PHPを学ぼう!

▼PHPを学ぶチャプターです。


660円から使える!

 

素材メニュー

 ◆Chapter 1

 ◆Chapter 2

 ◆Chapter 3

 ◆Chapter 4

 

制作ヒント

 ◆制作のヒント

 

レッスンメニュー

 ◆Chapter2 練習問題

 ◆Chapter3 DB練習問題

 

サイト運営者がPHPを学んだ
お勧めの書籍です!
これ一冊で基本的なPHPの仕組み、簡単なプログラムの作成、SQLiteを使ったデータベースなどかなり学べる要素が詰まっています!

↓↓↓ ↓↓↓

PHPレッスンブック―PHP5対応

新品価格
¥2,520から
(2013/2/24 04:38時点)

 

 

サイバーテロの技法について書かれた書籍です!
ハッカーの手法を知ることでご自身のサイトがハッカーに攻撃されたときそれを防ぐ手法を紹介しています。

↓↓↓ ↓↓↓

PHPサイバーテロの技法―攻撃と防御の実際

新品価格
¥1,890から
(2013/11/5 10:09時点)

 

 

★初年度100円! サブドメインやメールアカウントを無制限に設置できます。
PHPやCGIは勿論、WordPress、Movable Type Open Source、掲示板、ブログ、ショッピングサイトなどが簡単に導入できるので複数サイトを運営したい場合に便利なサービスです。

↓↓↓ ↓↓↓

 

PHPが動作するサーバー

 

はじめてのHP | 無料素材 | タグ辞典 | CSSガイドEX | PHPを学ぼう!

◆Chapter 4 - カレンダーを作る 2

今度はカレンダーに予定を表示するものを作ってみましょう。
Chapter4-2の『カレンダーを作る~その1』とは違い一覧を表示するものにします。
サンプルを用意しましたの参照ください。

 

流れとしては大まかに次のとおりとなります。

  • 予定表の設定
  • 起算となる値、つまり月初日のタイムスタンプを修得
  • カレンダーの書き出し
  • 日付に合わせて予定を表示する

 

予定表は次の通りとします。

  • 3日 結婚記念日
  • 6日 銀座で待ちあわせ 20:00~
  • 10日 温泉旅行
  • 11日 温泉旅行
  • 20日 3B体操 18:00~
  • 25日 給料日

 

プログラムを参考例として作成しました。
このコードに沿って説明していきます。

01|<?php
02|  //年と月の値を修得
03|  $year = date("Y");
04|  $month = date("m");
05|
06|  //スケジュールの設定
07|  $schedule = array("3"=>"結婚記念日", "6"=>"銀座で待ちあわせ 20:00~",
08|  "10"=>"温泉旅行", "11"=>"温泉旅行", "20"=>"3B体操 18:00~", "25"=>"給料日");
09|
10|  //ファイルを実行
11|  showCalender2($year, $month, $schedule);
12|
13|  //ファンクション
14|  function showCalender2($year, $mon, $chk){
15|
16|    //初日のタイムスタンプ
17|    $cur = mktime(0, 0, 0, $mon, 1, $year);
18|
19|    //曜日の設定
20|    $week_list = array("日","月","火","水","木","金","土");
21|    $first_weekday = date("w", $cur);
22|
23|    echo "<h1>■{$year}年 {$mon}月のカレンダー</h1>";
24|    echo "<hr />";
25|
26|    $i=1;
27|    for(;;){
28|      $cur_mon = intval(date("m", $cur));
29|      if($cur_mon > $mon) break;
30|      $d = date("d", $cur);
31|      $w = date("w", $cur);
32|      $week_name = $week_list[$w];
33|
34|      //土日を判定
35|      if($w == 0){
36|        $day_color = "red";
37|      }elseif($w == 6){
38|        $day_color = "blue";
39|      }else{
40|        $day_color = "black";
41|      }
42|
43|      $day_str = isset($chk[$i]) ? $chk[$i] : "" ;
44|
45|      echo "<p><strong>{$d}日";
46|      echo "(<font color=\"{$day_color}\">{$week_name}</font>)</strong>";
47|      echo "  {$day_str}</p>";
48|      echo "<hr>";
49|
50|      $cur += 24*60*60;
51|      $i++;
52|    }
53|  }
54|?>

 

3行目では、現在の年の値を変数 $year に代入しています。
4行目では、今月の値を変数 $month に代入しています。
このコードでは、例として今年と今月の値を入れています。
$year と $month の値は本来、表示したいカレンダーの日付を入れるようにしてください。

 

7~8行で変数 $schedule に予定表の Array を作成し代入しています。
このコードの説明では予定表を簡単に読み込むため直接スケジュールを設定していますが、通常はスケジュールを保管するファイルを別に用意し読み込む必要があります。
外部ファイルの扱いについては、Chapter2-12『外部ファイルの読み書き』を参照ください。

 

11行目で14行目以降で使われるカスタマイズ関数を実行します。

 

17行目では、月初のタイムスタンプを mktime 関数を使い修得し、変数 $cur に代入します。

 

20行目の変数 $week_list に曜日の Array の値を代入しています。
PHP には、日~土曜日まで日本語で表示させる関数が用意されていないので準備しています。
これで date 関数の、

date("w", $cur)

を使って日付に対応した曜日を修得することができます。

 

27~52行では、for 関数を使いカレンダー部分を書き出す処理をします。
ここで注目するべき点があります。

for(;;)

この for 関数の使い方、これは無限ループを意味します。
無限ループは注意しなければ、無限にプログラムがループするのでサーバーに負荷をかける危険な動作です。
場合によっては、サーバーをダウンさせることがありますので利用するときには慎重に行いましょう。
必ず何処かで条件に従いプログラムが停止するようにします。

 

このコードでは29行目の

if($cur_mon > $mon) break;

で月の値が今月を越えたら停止するように設定しています。
つまり、28行目で日付のタイムスタンプを修得して、今月中なのかを判断しているわけです。
1日のタイムスタンプは、50行目で "24*60*60" (1日の時間)を $cur にプラスすることで日付送りが可能です。

 

30行目で日付を修得しています。
31行目で曜日の値を修得しています。
32行目で変数$week_nameに曜日を代入しています。

 

35~41行では曜日を判断し文字色を変更しています。

 

55~58行では、月の最終日からマスの最後までの空欄を書き出す処理です。

 

43行目では変数$day_strに予定のキーがあるかどうかを判断し値を代入しています。

 

45~48行は、カレンダーを表示させる処理です。

 

 

ツールEXで『CSV Loader』を配布しています。
CSV Loaderは、ファイルを読み込みArrayを育成するテンプレートです。
CSVやテキストファイルから取り込みたい時に利用できますので活用を検討してみてください。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ex-mode.net | ツールEX | 素材EX | アフィモール | 初級者向 初めてのホームページ作り | Htmlタグ辞典 | 初めてのプランター菜園 | リンク・ボード
気のみ気のままなブログ | CSSガイドEX | ホビ★コレ | 班長日記!

▲UP

Copyright (C) ex-mode.net 2017. All Rights Reserved.