基礎編

第1章 PHPとApacheの設定

1・1 PHPについて

1・2 PHPプログラムの作成に必要なSoftware-EmEditorを使用 http://www.forest.impress.co.jp/lib/offc/document/txteditor/emeditio.html

1・3 PHPのインストールと初期設定 - PHP5.2.13 zip package - http://www.php.net/downloads.php - 日本語のミラーサイトからjp.php.netのZIPファイルをDownload - 右クリックですべてを展開 - C:\phpと入力して展開 - 自己解凍しないのでWS2000よりコピーをD:\phpに移す。
PHPのiniファイルの設定 - php.ini-recommendedをC:\Windows内にphp.iniと変更して貼り付け、指定された行番号内を変更してセーブ
ライブラリーファイルにphp5ts.dllをC:\Windowsへ、libmysql.dllをC:\Windows\system32へコピーする
環境設定 - MyComputer/Property/詳細設定/環境変数/***のユーザー環境変数に新規でPATHとD:\phpを入力 - 再起動

1・4 サーバーソフトApacheのインストールと起動 - http://httpd.apache.org/download.cgi よりWin32 Binary(MSI Installer)をDownload
httpd-2.2.25-win32-x86-openssl-0.9.8y.msiをDownload - http://localhost/にアクセスして、It Works!を表示されれば成功
Apacheの起動と終了 - すべてのプログラム - Apcach HTTP Server 2.2 - Control Apache Server - Start or Stop
Apache と PHPを接続するためのhttpd.confの修正 - C:\Program Files\Apache Software Foundation\Apache2.2\conf の中の httpd.confを開き、以下の修正を行う - 130行目 LoadModule php5_module D:/php/php5apache2_2.dllを追加 - 240行目 index.phpを追加
DirectoryIndex index.html index.php - 386行目 AddType Application/x-httpd-php .php と 387行目 AddType Application/x-httpd-php-source .phpを追加
ApacheとPHPの接続動作確認 - Apacheの再起動 - <?php phoinfo() ?> と入力し、名前を付けて http://localhost/phpinfo.php で表示されると成功

第2章 PHPの基本

2・1 PHPプログラムを保存するフォルダの作成
Apache Software Foundation/Apache2.2/htdocs の中にphpフォルダを作成しておく (私の場合はD:XAMPP/htdocsになっている)

2・2 PHPプログラムの基本構成
@ プログラムの開始と終了 - <?php - プログラム - ?>
A 文 - 文字列を表示させる echo関数 - 文の終了は;(セミコロン)を付ける - htdocs/php/chap2/2-01.phpに保存 - コマンドプロンプトで>php "ファイル名"で表示させる
B コメント - // 又は /* 〜 */

2・3 データの型
@ 論理値 - true または false
A 整数 - 10進数、8進数(0123)、16進数(0x123A)
B 浮動小数点数 - -1.41421356 14桁まで
C 文字列(string) - (')で囲む、(")で囲む、ピュアドキュメント(記号<<< と任意の文字列:)
D 配列(array) - 2.6を参照
E オブジェクト(object) - 第5章を参照
F リソース(resource) - ファイルの情報やデータベースとの接続情報を示す
G ヌル(NULL) - 値がない、空

2・4 変数
@ 変数の定義 - $記号を先頭にして後ろに変数の名前を付ける、大文字と小文字は区別される、文字は半角英数文字と16進数の7FからFFまでの文字、1文字目は文字または_(アンダーバー)、2文字目以降は、文字、数字、アンダーバー、日本語も使用できる - 例題 2-03.php

2・5 定数
@ 定数の定義 - 定数はdefine関数を使用して定義、定数名は半角英数字のみ、1文字目は文字または_(アンダーバー)、2字目以降は文字、数字または_(アンダーバー)、日本語も使用できる
A マジック定数 - 自動的に定義されている定数
__LINE__ - ファイル上の現在の行番号
__FILE__ - ファイルのフルパスとファイル名
__FUNCTION__ - 関数名
__CLASS__ - クラス名
__METHOD__ - クラスのメソッド名

2・6 配列(array)
@ 配列の定義 - array関数を使用、値は$配列変数名[キー]を使用
A 添字配列 - 例題2-08.php - 配列のプログラム - キーと値を何も指定しないと、からの配列を、キーを指定しないと0からの配列を作成、配列を取り出すのは[角括弧]でキーを囲む
B count - 例題2-09.php - 配列の要素数を取得する
C 連想配列 - キーが数値ではなく文字列になる - 例題2-10.php
D 多次元配列 - 例題2-11.php - $dimension[0][0] - 配列名に続いて[各括弧]で囲む、配列は0から始まることに注意

2・7 演算子
@ 算術演算子 - +、-、*、/、%(剰余-5%2...5を2で割った余り) - 例題2-12.php - =は値を代入するという意味で、等しいをあらわすときは==を使用
A 比較演算子 - ==、===、!=、!==、<>、>、>=、<、<= - 文字列と整数を比較すると、文字列は整数に変換されて比較される、比較文を参照
B 論理演算子 -&&(論理積-$xと$yが成り立つとtrue)、||(論理和-$xまたは$yが成り立つとtrue)、and(論理積-$xと$yが成り立つとtrue)、or(論理積-$xまたは$yが成り立つとtrue)、!(論理積-$xがtrueでない時true) - 同じものが2つづつあるが、優先順位が&&、||、and、orになる
C 文字列演算子 - .(結合)、.=(結合代入)
D 前置と後置演算子 - ++$a($aに1を加えその後$aを返す),$a++($aを返し、その後$aに1を加える)、--$a($aに1を減算しその後$aを返す)、$a--($aを返し、その後$aから1を減算)

第3章 文

3・1 条件分岐
@ もっとも簡単なif文 - if (条件式){ 実行するプログラム } - 例題3-01.php
A 複雑なif文 - if (条件式){ 条件が成立した場合に実行するプログラム } else { 条件が成立しない場合に実行するプログラム } - 例題3-02.php
B さらに複雑なif文 - if (条件式1){ 条件式1が成立した場合に実行するプログラム } else if (条件式2){ 条件2が成立した場合に実行するプログラム } else if (条件式3){ 条件3が成立した場合に実行するプログラム } else { すべての条件を満たさなかったときのプログラム } - 例題3-03.php
C 三項演算子を用いた条件分岐 - 条件式 ? 条件が成り立つときの値 : 条件が成り立たない時の値 - 例題3-04.php
D switch文 - switch (変数) { - case 値1: - 実行する処理; //変数が値1と等しいとき、実行される - break; - case 値2: - 実行する処理; //変数が値2と等しいとき、実行される - break; - default: - 実行する処理; //変数がそのほかの値のとき、実行される - } - 例題3-05.php

3・2 繰り返し文
@ while文 -while文で条件式が成り立つ繰り返しを行う - while(条件式) { - 実行する文; - } - 例題3-06.php
A do while文 - do { - 実行する文; - } while ( 条件式); - 例題3-07.php
B 繰り返しを終了する文 - ある条件になれば終了したい場合は、break文を使用 - 例題3-08.php
C for文 - 決まった回数だけ繰り返しを実行 - for ( 繰り返しの初期化式 ; 繰り返しの終了条件の条件式 ; 変数の変更式 ){ - 実行する文; - } - 例題3-09.php
D foreach文 - 配列の要素を順番に取り出しながら処理を繰り返す - foreach ( 配列 as 配列要素 ){ - 実行する文 - } - 例題3-10.php

第4章 関数

同じような処理を繰り返し使うために関数が用意されている

4・1 システムで用意しか関数:システム関数
@ 文字列出力関数 - echo以外にprint関数がある - 例題4-01.php - echo,print関数の例-この2つの関数は値を(括弧)でくくらなくてよい
A 日付と時刻関数 - date( 日付構文, UNIXタイムスタンプ ) - 日付構文の文字列はPHPで決められたものがある、UNIXタイムスタンプは表示薄日時の数値、省略すると現在になる - 例題4-02.php - date("Y/m/d/D H:i:s") - これを動かすと"今の日時は、2014/07/08/Tue 23:43:15です。"
B 乱数 - rand (初めの整数、終わりの整数) - 例題4-03.php
C ファイル操作 - 1.ファイルを開く - fopen関数 - fopen (ファイル名, モード) - モードはファイルを開く形式でr、w、a、xなどがある - 例題4-04.php - ファイルの状態を示すファイルハンドルが返されるだけ、ファイルをオープンするだけで、何も処理結果は出ない
- 2.ファイルを閉じる - fclose (ファイルハンドル) - 例題4-05.php - 処理結果は何も出てこない
- 3.ファイルを読み込み - fread or fget関数 - fread (ファイルハンドル, 読み込むバイト数) - 例題4-06.php - 汎用にするために okuri.html/phpを作成
- 4.ファイルへの書き込み - fwrite関数 - fwrite(ファイルハンドル,書き込むデータ[,書き込む文字列長]) - また2重に書き込まれないようにロックをかける - flock(ファイルハンドル,ロックモード) - モードにはLOCK_EX(ロックする),LOCK_UN(ロックを解除する)がある - 例題4-07.php & 4-07.htm
- 5.一行単位のファイルからの読み込みおよび書き込み - fgets関数(一行単位でデータを読み込み) - feof関数(ファイルの最後まで読んだかをCHECK) - fgets(ファイルハンドル)、feof(ファイルハンドル) - 例題4-08.php & & 4-08.htm およびファイル名、本文、モードを全部指定できるアプリを作成 - triple.html & php

4・2 ユーザーが定義する関数

functionという文を使用して、自由にユーザーが関数を定義できる - function 関数名() { - 処理に必要なプログラム - } - 例題4-09.php
関数からの戻り値 - 関数を実行した結果何らかの結果が必要な時はreturn文で結果を返す - function 関数名() { - 処理に必要なプログラム - return (戻り値); - }
関数の引数 - 関数を実行するとき、何らかの値を渡すためには引数を使用 - function 関数名( 引数 ) { - 処理に必要なプログラム - return (戻り値); - } - 例題4-10.php

第5章 クラスとオブジェクト

5・1 プログラムの構成
データと処理で構成 - 例題車の操作のプログラム - <?php - // 電源の状態 - $power = false; - // ギアの状態 - $gear = "N"; - // 電源を入れる - // car_power関数は電源のon/offを変える関数 - $power = car_power(true); - // ギアを変える - // car_gearは車のギアを変える関数 - $gear = car_gear("D"); - // 電源を切る - $power = car_power(false); - ?>
この場合データと処理を一緒に入れると複雑になるので車型(データと処理を一つにまとめたもの)を作成する - 例題車型を取り入れた車の操作のプログラム - <?php - // 車を準備する - $car = new CAR(); - // 電源を入れる - $car ->changePower(true); - // ギアを変える - $car ->changeGear("D"); - // 電源を切る - $car ->changePower(false); - ?>
このように車の電源やギアを車型として表現しておくことでプログラムをすっきりさせることができるので、どのように処理するかではなく、何を処理するかで考えることをオブジェクト指向と呼ぶ

5・2 クラスとオブジェクト
<?php - // class クラス名 - class CAR { - // メンバー変数(データ)の定義と初期化 - private $power = false; - private $gear = 'N'; - // メンバー関数(処理)の定義(電源を入れるメソッドの定義) - public function changePower($power) { -
$this -> power = (bool)$power; - if ($this -> power){ - echo "電源を入れました\n"; - } else { - echo "電源を切りました\n"; - } - } - ?>
- メンバ変数のアクセス修飾子 - public,protected,private等がある
- メンバ関数のアクセス修飾子 - 同上 - 例題5-01.php(車クラスを定義する)

5・3 クラスからオブジェクトを生成する
車クラスを使って1台の車のオブジェクトを生成、オブジェクトの生成はnew関数を使用 - 例題5-02.php(クラスからオブジェクトを生成する)

5・4 親クラスから子クラスを作る
一つのクラスを作成した後では、そのクラスを使用して、拡張機能を持った子クラスを作成できる - <?php - class 子クラス名 extends 親クラス名 { - // メンバー変数やメソッドを定義する - } - }?> - 例題5-03.php(親クラスから子クラスを作る) -

応用編

第6章 カウンタのプログラム

6・1 カウンタプログラムの構成
apacheサーバを使用するときは、C: ¥Program Files\Apache Software Foundation\apache2.2\htdocsの配下にdirのcounter-top.htmlを作成して保存

6・2 カウンタファイルの作成とカウンタファイルへの読み書き
カウンターの値を保存するcounter.txtを作成しまず0を書き込んでおく

6・3 カウンタファイルへの読み出し、書き込みを行うPHPプログラム
counter_write.php

6・4 来場者のアクセス回数を表示するプログラム
counter_show.html ピュアドキュメントを使ってprint文を最初のみに抑える

第7章 抽選のプログラム

7・1 抽選プログラムの構成

7・2 抽選結果を求めるプログラム
関数randを使用、ランダムに発生した変数を$ransuuに保存、結果を$chusenに保存しその画像を表示させる

7・3 結果を表示するプログラム - chusen.php

第8章 掲示板(bbs)のプログラム

8・1 トップ画面 - top.html

8・2 投稿画面と画面を生成するHTMLプログラム - bbs_submit.html

8・3 bbsへ保存するプログラム - 投稿されたデータを保存するファイル - bbs
bbsへ書き込むPHPプログラム - bbs_write.php

8・4 bbsを見る画面とPHPプログラム
bbs_view.php

第9章 データベース(MySQL)とは

9・1 MySQLとは MySQL5.0を使用

9・2 MySQLのDownload - http://dev.mysql.com/download/mysqlからWindows (x86,32bit) MSI Installer Essentials - RecommendedをDownloadする

9・3 環境設定 - MySQL Server Instance Config Wizardを起動 - 基本的にnextでよいが、8ばんめにManual Selected Charactor Set/Collationを選択し、Charactor Setをsjis にしてnext - パスワードはmysqlにして、Excute、Finishで終了

9・4 コマンドラインを使ったデータベースの操作
@ MySQLの起動と終了 - スタート/すべてのプログラム/MySQL/MySQL Server 5.1/MySQL Command Line Clientで起動 - パスワードを入れてEnter - 終了はexitを入力

A データベースを見る
show databases; - use mysql; - show tables;

B DBの作成
create database データベース名; - parts_db という商品管理のDBを作成 - テーブル名がpartsとし、カラムは商品番号、通し番号、int(3)、主キー、NOT NULL/商品名、商品の名前、char(20)、NOT NULL/単価、商品価格、int(10)/製造会社、会社名、char(30)
create table parts (商品番号 int(3) unique NOT NULL, 商品名 char(20) NOT NULL, 単価 int(10), 製造会社 char(30)); と入力する。

C テーブルへのデータの入力
insert into parts values('携帯電話','28000','ソフトバンク');

D テーブルからデータの取出し
select * from parts;

E テーブルからデータの削除
delete from parts where 商品番号=1;

第10章 データベースを使用した商品管理システム

10・1 商品管理システムの構成 - http://localhost/php/parts_mng/top.html
TOP画面の下に商品一覧、商品登録、商品検索、商品削除の4つの機能がある、その前に3つの商品を入力しておく
@ 商品一覧 - parts1.php
A 商品登録 - parts2.html & parts2.php
B 商品検索 - parts3.html & parts3.php
C 商品削除 - parts4.html & parts4.php