PHPを学ぼう!

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


安心サポートのGOG!

 

素材メニュー

 ◆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 - カレンダーを作る 1

ブログなどでよく見かける次のカレンダーを作ってみましょう。

■2017年 9月のカレンダー

 

 

 

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

 

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

  • 起算となる値、つまり月初日のタイムスタンプを修得
  • 曜日の折り返しの処理
  • カレンダーの書き出し

 

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

01|<?php
02|//年と月の値を修得
03|$year = date("Y");
04|$month = date("n");
05|
06|//ファイルを実行
07|showCalender1($year, $month);
08|
09|//カスタマイズファンクション
10|function showCalender1($year, $mon){
11|
12|  //初日のタイムスタンプ
13|  $cur = mktime(0, 0, 0, $mon, 1, $year);
14|
15|  //曜日の設定
16|  echo "<h1>{$year}年 {$mon}月のカレンダー</h1>\n";
17|  echo "<table border=\"1\">\n";
18|  echo "<tr>\n";
19|  echo "<th bgcolor=\"pink\"><p><font color=\"red\">日</font></p></th>\n";
20|  echo "<th><p>月</p></th>\n";
21|  echo "<th><p>火</p></th>\n";
22|  echo "<th><p>水</p></th>\n";
23|  echo "<th><p>木</p></th>\n";
24|  echo "<th><p>金</p></th>\n";
25|  echo "<th><p><font color=\"blue\">土</font></p></th>\n";
26|  echo "</tr>\n";
27|  echo "<tr>\n";
28|
29|  //最初の曜日までの空欄育成
30|  $week_num = date("w", $cur);
31|  $i = 0;
32|  while($i < $week_num){
33|    echo "<td><p> </p></td>\n";
34|    $i++;
35|  }
36|
37|  //日付の書き出し
38|  for($day = 1; checkdate($mon, $day, $year); $day++){
39|    if($week_num > 6){
40|      $week_num = 0;
41|      echo "</tr><tr>\n";
42|    }
43|    if($week_num == 0){
44|      $str = "<font color=\"red\"><strong>{$day}</strong></font>";
45|    }elseif($week_num == 6){
46|      $str = "<font color=\"blue\"><strong>{$day}</strong></font>";
47|    }else{
48|      $str = $day;
49|    }
50|    echo "<td><p>{$str}</p></td>";
51|    $week_num++;
52|  }
53|
54|  //最後の曜日までの空欄育成
55|  while($week_num < 7){
56|    echo "<td><p> </p></td>\n";
57|    $week_num++;
58|  }
59|  echo "</tr>\n";
60|  echo "</table>";
61|}
62|?>

 

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

 

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

 

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

mktime([ [, [, [, [, [,]]]]]]])

で指定した日付のタイムスタンプが修得できるのです。
月初を求めるには、

mktime(0, 0, 0, $month ,1, $year)

とすることで、例えば2014年1月1日するなら、2014年1月1日 0時0分0秒のタイムスタンプを修得することができます。

 

カレンダーの書き出しには、html タグの table を使います。
table の見出し部分、16~27行は固定なのでそのまま書き出しまますが、それ以降は曜日によって改行の処理をしなければなりません。
table について理解していなければ上手く書き出しができませんので注意してください。

 

30行目の変数 $week_num は、date 関数を使って月初の曜日の戻り値を代入しています。

date("w", $cur)

つまり、"w" で指定した date 関数では日曜日なら "0"、月曜日なら "1" となり、土曜日は "6" を返すのです。

 

31~35行では、空欄のマスを作成する処理です。
30行目の $week_num でカレンダーの開始日の数字がわかっているのでそれを使い1日までの空欄を作成しています。

 

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

for($day = 1; checkdate($mon, $day, $year); $day++)

for 関数の条件に checkdate 関数を使っているということです。
checkdate 関数を使うことで日付が正しいのかチェックができるのです。
このように利用することでカレンダーの日付をカウントできるのです。

 

39~42行では曜日で判断し改行をするかどうかの判断をしています。

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

 

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

 

カレンダーの書き出しの流れが理解できたでしょうか?
table タグの扱いが少し難しいかもしれませんね。
PHP を上手く活用するには、html タグと Java Script の理解が必要です。
Chapter2 までご理解いただき、htmlタグをソフトウェアを使わず書けるようになれば、簡単な PHP プログラムの制作ができるようになるでしょう。
ちょっとした小技を入れたいときには Java Script を使います。
Java Scriptは、Web ブラウザで制御するプログラムです。
参考例がネットで検索できるので使いたいもの探し、取り入れていくことで完成度の高い PHP プログラムを制作することができます。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

▲UP

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