PHPによるWebアプリケーションスーパーサンプル 第2版

PHPスクリプトのサンプル集PHPによるWebアプリケーションスーパーサンプル 第2版の特徴です。

本書の特徴 目次  デモ PHPとは 最初の1ページ ゲストブックを作成しよう DBスクリプト自動生成 wiki
【広告】PHPの頻出関数リファレンス「PHP辞典 第2版」
【広告】PHP入門書でありながらSmarty・PEARまで説明します「初めてのPHP & MySQL 第2版」

PHPとMySQLでゲストブックを作成する

  簡単なゲストブックの作成を通して、データベースを扱うWebアプリケーションの作成手順を見ていきましょう。データベースを準備して、メッセージを書き込み、表示させる手順を紹介します。

 

※このページは、PHPによるWebアプリケーションスーパーサンプル 第2版 「14-2 ゲストブックを作成する」から必要な部分のみを抜粋しています。それぞれの手順の解説は本書をご覧ください。

○完成したゲストブック

 

ゲストブックの作成

  これから作成するゲストブックには2つの機能があります。メッセージの書き込みと表示です。これらは、ブラウザの書き込みフォームからメッセージを書き込むことと、蓄積されたメッセージを表示するという処理になります。

 ゲストブックの作成は、データベースの準備とスクリプトの記述という手順で進めます。記述するスクリプトは次の4つの部品で構成されます。

 

○ゲストブックを構成する部品
部品1:メッセージ書き込みフォーム
部品2:データベース接続スクリプト
部品3:メッセージ書き込みスクリプト
部品4:メッセージ表示スクリプト

 

 これらの要素は、「データベースの準備」に続けて紹介します。本書付録CD-ROMではguestbook1.txt〜guestbook4.txtという名前のテキストファイルに収めてあります。これらを参考にスクリプトを記述またはコピー&ペーストし、必要に応じて修正すると、ゲストブックが完成します。

 

準備:データベースの準備

  ゲストブックへの書き込みデータを保存するデータベース「guestbook」に、テーブル「guestdata」を作成します。なおここでは、データベースにMySQLを使うことを想定しています。

 

○テーブル「guestdata」の構造

データベース名:guestbook テーブル名:guestdata
項目名 データ型 サイズ 内容
id int   データID(主キー)
g_name varchar 50 名前
g_mail varchar 50 メールアドレス
g_mes text   メッセージ
g_date datetime   書き込み日時

 

 次のSQLコマンドを任意のファイル名(例:create.sql)で保存し、コマンドラインツールなどから実行します。また、ブラウザからMySQLを管理できるツールphpMyAdminでは、SQLコマンドをテキストエリアにペーストして実行できる機能があるので、そのようなツールを使う場合は、ファイルに保存しなくてもSQLコマンドを実行できます。

 ファイルに記述されたSQLコマンドを実行してデータベースやテーブルを作成する方法は本書「第16章 各種設定」も参考にしてください。その章では、MySQLのインストール手順から説明していますが、ApacheやPHP、MySQLのインストールをまとめて完了させたい場合は、「XAMPP(一括インストールツール)」によるインストールをおすすめします。(このツールは本書CD-ROMには付属していませんので、リンク先からダウンロードしてください。)

 

[create.sql]

 

 このSQLコマンドをコマンドラインから実行する場合は、次のようにコマンドラインツールのmysqlにcreate.sqlを実行するオプションを指定して実行します。(下記コマンドでは便宜上、パスを省略して表記していますが、「"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe" <オプション>」のようにパスを指定してmysql.exeを実行することもできます。)

 

mysql < C:\create.sql -u user1 -p
Enter password: ********

 

 このコマンドの「-u」、「-p」オプションはそれぞれユーザー名、パスワードを指定してデータベースにアクセスするためのオプションです。「-u user1 -p」は「user1」という名前のユーザーでパスワードを指定してデータベースにアクセスするという意味です。このオプションにより表示された「Enter password:」というメッセージに続けて、パスワードを入力してコマンドを実行します。

 

部品1:書き込みフォームの追加

  データベースの準備ができたら、メッセージを書き込むフォームを準備しましょう。まずPHPスクリプトが記述できるソフト(エディタでかまいません)を起動します。起動したエディタの新規ドキュメントに、次の「部品1」を貼り付けます。

 

[部品1:書き込みフォーム]

 

 ファイルに名前(例:guestbook.php)をつけてPHPスクリプトとして保存します。PHPスクリプトを実行可能なディレクトリに保存するように注意してください。
  guestbook.phpにアクセスすると、次のように書き込みフォームが表示されます。

 

○書き込みフォーム

部品2:データベース接続スクリプトの追加

  メッセージの書き込みフォームが無事ブラウザに表示できたら、メッセージの書き込みスクリプトを追加します。このメッセージ書き込み処理はデータベースへの接続(部品2)とデータの書き込み(部品3)で構成されています。
 まず、部品2(データベースへの接続)を追加します。作成中のゲストブックスクリプトにある目印「部品2から部品4 ここから↓」と「部品2から部品4 ここまで↑」の間に貼り付けます。

 

[部品2:データベース接続スクリプト]

 このコード内の、サーバー/データベース/ユーザー/パスワードは自分の設定に合わせて変更してください。とくにデータベースにログインできるユーザー名($user)とパスワード($pass)は、ご利用の環境に合わせて変更しないと、そのままでは動作しません。

 

部品3:書き込みスクリプトの追加

  続けて、部品3(メッセージ書き込みスクリプト)を追加します。作成中のゲストブックスクリプトに配置した部品2の下に貼り付けます。

 

[部品3:書き込みスクリプト]

 

 メッセージ書き込み部分の処理は、フォームへの入力データを受け取り、受け取ったデータをデータベースに追加するという流れになります。

 

部品4:表示スクリプトの追加

 部品3まででメッセージの書き込みが可能となります。エラーが発生せず、メッセージ書き込みまでうまくできたら、最後にデータを表示する部分を追加しましょう。作成中のゲストブックにある部品3の下に追加してください。

 

[部品4:表示スクリプト]

  メッセージを表示するには、guestdataテーブルからデータを取得して、取得したデータを1行ずつ表示していくという流れになります。

 ページは表示できるのに、書き込んだメッセージがうまく表示されない場合は、文字コードの問題が考えられます。スクリプトの文字コード、Apacheのデフォルト文字コード、MySQLの文字コードが原因と成り得ます。

 このサンプルコードでは必要な処理コードを単純に見せるため、文字コードを変換する処理を省略しているので、例えば、スクリプトの文字コードとデータベースの文字コードが異なると、上手くデータを表示できないことも考えられます。この場合、データを表示するときにmb_convert_encoding関数で文字コードを変換する方法や、スクリプトの文字コードとデータベース、Apacheのデフォルト文字コードを同じ文字コード(例:「EUC-JP」)に統一するという方法があります。

 

ゲストブック完成

 ここまでの手順で、メッセージを書き込み、書き込まれたメッセージを表示するゲストブックが完成しました。ゲストブックにアクセスして、データが書き込まれるか表示されるかを確認しましょう。
 これまでの手順で作成したスクリプトは「完成したゲストブック」(guestbook.php)になります。うまく動作しないときにはこちらと見比べてください。

 

[完成したゲストブック]

 

このページは、PHPによるWebアプリケーションスーパーサンプル 第2版 より抜粋しました。本書では、各手順の解説もしています。また、MySQL以外のデータベースの処理や、ゲストブック以外のサンプルも多く紹介しています。ぜひ参考にしてください。(本書の内容はこちらです。)

 

PHPによるWebアプリケーションスーパーサンプル 第2版