2-5 Webサーバを 利 用 したデータベースアクセス 1 目 的 PHPと 呼 ばれるスクリプト 言 語 を 利 用 し,PostgreSQLのデータベースをWeb 上 で 操 作 し,デー タベースに 追 加, 削 除, 変 更 等 を 行 い,Webサーバを 利 用 したデータベースアクセスの 基 礎 的 な 知 識 や 技 術 を 習 得 する 2 使 用 機 器 及 びソフトウェア WindowsXPのクライアントパソコン PostgreSQL PHP Linux(Fedora Core3)のサーバパソコン 3 関 連 知 識 Webサーバを 利 用 したデータベースアクセスをするためには, 通 常, 二 つの 手 法 がある (1) Webサーバ 側 での 実 現 方 法 1 CGI(Common Gateway Interface) Webサーバの 設 定 によって,HTMLに 記 述 されたプログラムをサーバ 側 で 実 行 し, 実 行 結 果 をブラウザに 送 信 する 方 法 である 実 行 するプログラムは, 通 常,Perl,C 言 語 またはUNIX シェルスクリプトなどが 使 われる 2 スクリプト 言 語 (ミドルウェア 方 式 ) Webページに,Webサーバが 解 釈 可 能 なスクリプトを 埋 め 込 む 形 でHTMLを 統 合 化 する 方 法 で ある PHP(Hypertext Preprocessor) はWebサーバで 実 行 され, 結 果 のHTMLファイルのみ をクライアントへ 送 信 する JSP(Java Server Pages ) も 同 様 の 機 能 を 持 っている また, Webサーバで 実 行 するので, 動 作 結 果 がブラウザの 種 類 やバージョンに 依 存 しない (2) ブラウザ 側 での 実 現 方 法 1 JavaScript Netscape 社 が 同 社 のNavigatorのために 開 発 したブラウザ 側 のスクリプト 言 語 である 次 に 述 べるJavaと 一 緒 に 解 説 されることが 多 いが,Java Appletを 作 成 する 言 語 とは 異 な る 仕 様 である JavaScriptは, 簡 単 な 画 面 制 御 に 向 いている 言 語 である 2 Java Sun Microsystems 社 の 提 唱 によるオブジェクト 指 向 言 語 である ブラウザが 動 作 している プラットホーム(UNIXか,Windowsか,Macかということ )に 依 存 しないプログラム 実 行 環 境 の 実 現 が 可 能 となる 言 語 である Webサーバが 利 用 できるのは,HTML 形 式 で 記 述 されたテキストであり,ブラウザから 送 信 される 利 用 者 の 回 答 に 応 じて 処 理 の 流 れを 変 えることは, 一 般 には 不 可 能 である また,Webサーバは, 利 用 者 の 要 求 に 応 じてデータベースにアクセスする 方 法 も 持 ち 合 わせていない こうした 処 理 を 可 能 にするのが,スクリプト 言 語 のPHPである 例 えば, 図 1の 不 動 産 のページについて 考 えると,1 万 件 の 物 件 があったとすると, 個 々 -1-
の 物 件 紹 介 ページをHTMLで 作 成 すると1 万 ページ 必 要 になる PHPなどのスクリプトをHTML に 組 み 込 むと,データベースから 動 的 に 物 件 紹 介 ページを 生 成 することができるので,デー タベースと1ページ 分 のスクリプトで 済 む 作 成 するときの 手 間 だけでなく, 変 更 があった ときの 手 間 も 考 えると,データ 数 が 多 ければ 多 いほど 動 的 に 作 成 されるページは 威 力 を 発 揮 する 図 1 HTMLとPHPの 違 い HTMLの 場 合 PHPの 場 合 物 件 データベース 10000.html 1000.html view.php?id=10000 データ 分 の ページ 数 データベースと スクリプト1ページ PHPは, HTML 中 にスクリプトとして 直 接 記 述 できるため, データベースのアクセスに 関 して, PostgreSQLを 利 用 するための 関 数 が 用 意 されており,Webページから 簡 単 にPostgreSQLのデー タベースに 接 続 することができる WebサーバとDBサーバの 連 携 を 利 用 したWebページ 閲 覧 の 概 要 を 図 2に 示 す 図 2 WebサーバとDBサーバの 連 携 を 利 用 したWebページの 閲 覧 -2-
Webサーバの 設 定 ファイルを 編 集 し,スクリプト 機 能 を 構 築 する Webサーバへの PHPス クリプト 機 能 の 構 築 手 順 を 図 3に 示 す 図 3 Webサーバへの PHPスクリプト 機 能 の 構 築 手 順 (1) データベース 管 理 者 の 登 録 (2) 設 定 ファイルの 編 集 (httpd.conf) (3) Apacheの 再 起 動 と 動 作 確 認 (4) PHPスクリプトの 作 成 (5) クライアント(WindowsXP)からの 確 認 -3-
4 実 習 例 題 PHPスクリプトを 使 い,データベース testdb のテーブル table1 を 取 り 込 み,1 ぺージに5 件 のデータ 表 示 させるWebサーバを 構 築 する さらに,データを 追 加 できるWeb サーバを 構 築 する クライアント(WindowsKP)のブラウザからそれぞれのWebサーバのURL epc**.cen.hic.ac.jp/5kenzutu.php ( 図 4), epc**.cen.hic.ac.jp/tuika.php ( 図 5) を 入 力 し, 確 認 する 図 4 epc**.cen.hic.ac.jp/5kenzutu.php 図 5 epc**.cen.hic.ac.jp/tuika.php (1) データベース 管 理 者 の 登 録 1 ユーザ nobody の 登 録 データベース 管 理 者 としてユーザ nobody を 登 録 する (ユーザ postgres は,イン ストール 時 に 登 録 されている ) 空 いている 画 面 で 右 クリックし,[ 端 末 を 開 く]を 選 択 する 次 のように 入 力 し,それぞれ Enter キーを 押 す ユーザIDを postgres に 変 更 する データベース 管 理 者 nobody を 登 録 する ユーザIDを root に 戻 す ( Ctrl キーと D キーを 同 時 に 押 す ) [root@epc** root]# su postgres ユーザIDを postgres に 変 更 する データベース 管 理 者 bash-3.00$ createuser Enter name of user to add: nobody nobody を 登 録 する Shall the new user be allowed to create databases? (y/n) y Shall the new user be allowed to create more new users? (y/n) n CREATE USER bash-3.00$ [Ctrl]+[D] ユーザIDを root [root@epc** root]# に 戻 す 2 ディレクトリの 作 成 端 末 ]に 次 のように 入 力 し,それぞれ Enter キーを 押 す -4-
[root@epc** root]# cd /home/wwwadmin [root@epc** wwwadmin]# mkdir www (2) 設 定 ファイルの 編 集 (httpd.conf) 設 定 ファイル(フォルダ /etc/httpd/conf のファイル httpd.conf を 編 集 する 1 ファイル httpd.conf のバックアップ(httpd.conf.orig2) 端 末 ]に 次 のように 入 力 し,それぞれ Enter キーを 押 す [root@epc** root]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.orig2 2 geditの 起 動 図 6 編 集 画 面 アプリケーション]から[アクセサ リ ], [GNOMEテキスト エディタ]をク リックする 3 ファイルの 表 示 図 6の[ファイル]より[ 開 く]を 選 択 する ファイルシステム]をダブルクリッ クする フォルダ 名 /etc/httpd/conf,フ ァイル 名 httpd.conf を 選 択 し,ダ ブルクリックする 検 索 ]より[ 検 索 ]を 選 択 する 4 httpd.conf ファイルの 編 集 次 のように httpd.conf ファイルを 編 集 する ( # はコメント 文 である ) サーバ 管 理 者 のメールアドレス(wwwadmin@epc**.cen.hic.ac.jp)を 設 定 する ( 検 索 する 文 字 列 に ServerAdmin を 入 力 し,[ 検 索 ]ボタンを3 回 クリックする ) データベース 管 理 者 のユーザ,グループを 設 定 する ( 検 索 する 文 字 列 に user apache を 入 力 し,[ 検 索 ]ボタンをクリックする ) Webサーバのホスト 名 (epc**.cen.hic.ac.jp)を 設 定 する ( 検 索 する 文 字 列 に ServerAdmin を 入 力 し,[ 検 索 ]ボタン3 回 クリックする ) DocumentRoot(/home/wwwadmin/www)を 設 定 する ( 検 索 する 文 字 列 に DocumentRoot を 入 力 し,[ 検 索 ]ボタンを2 回 クリックする ) UserDirを 確 認 する ( 検 索 する 文 字 列 に UserDir を 入 力 し,[ 検 索 ]ボタンを7 回 クリックする ) DirectoryIndexを 設 定 する ( 検 索 する 文 字 列 に DirectoryIndex を 入 力 し,[ 検 索 ] ボタンを2 回 クリックする ) 指 定 したディレクトリのインデックスファイルを 指 定 及 び 追 加 できる directoryを 設 定 する -5-
( 検 索 する 文 字 列 に Directory を 入 力 し,[ 検 索 ]ボタンを10 回 クリックする ) 使 用 するdirectoryの 設 定 を 記 述 する ここではドキュメントルートディレクトリと 同 じにする PHPファイルの 認 識 を 設 定 する ( 検 索 する 文 字 列 に addtype を 入 力 し,[ 検 索 ]ボタンを2 回 クリックする ) Apacheが,ファイルをPHPのスクリプトとして 解 釈 するように 設 定 されているので, PHPスクリプトを 含 むファイルの 拡 張 子 は.php か.phps にする ## ## httpd.conf -- Apache HTTP server configuration file ~ ~ ~ サーバ 管 理 者 のメールアドレスを 設 定 #ServerAdmin root@localhost する ( serveradmin で 検 索 3 回 目 ) ServerAdmin wwwadmin@epc**.cen.hic.ac.jp ~ ~ ~ User nobody ユーザ,グループを 設 定 する Group nobody ( user apache で 検 索 1 回 目 ) ~ ~ Webサーバのホスト 名 を 設 定 する ServerName epc**.cen.hic.ac.jp ( servername で 検 索 3 回 目 ) ~ ~ ~ # DocumentRootを 設 定 する DocumentRoot "/home/wwwadmin/www" ( documentroot で 検 索 2 回 目 ) ~ ~ ~ <IfModuule mod_userdir.c> # UserDir public_html UserDir www UserDirを 確 認 する ( userdir で 検 索 7 回 目 ) </IfModuule> ~ ~ ~ <IfModuule mod_dir.c> DirectoryIndex index.html index.php </IfModuule> ~ ~ ~ < Directory "/home/wwwadmin/www" > ~ ~ ~ # # AddType application/x-tar.tgz AddType application/x-httpd-php.php AddType application/x-httpd-php-source.phps DirectoryIndexを 設 定 する ( directoryindex で 検 索 2 回 目 ) directoryを 設 定 する ( directory で 検 索 10 回 目 ) PHPファイルの 認 識 を 設 定 する ( addtype で 検 索 2 回 目 ) 5 httpd.conf ファイルの 保 存 保 存 ]ボタンをクリックする -6-
(3) Apacheの 再 起 動 と 動 作 確 認 図 7 サービスの 再 起 動 1 サービス(Apache)の 再 起 動 (postgresqlも 再 起 動 しておく ) アプリケーション] より[ サーバ 設 定 ], [サービス]を 選 択 する 図 7の httpd にチェックを 入 れ,[ 停 止 ]をクリックし,[ 再 起 動 ]をクリ ックする 2 index.php の 作 成 geditの[ファイル]より[ 新 規 ]を 選 択 する 次 のように 入 力 する <html> <? echo phpinfo();?> </html> geditの[ファイル]より[ 保 存 ]を 選 択 する ファイル 名 index.php を 入 力 する 他 のフォルダの 参 照 ]を 選 択 し, ファイルシステム,フォルダ(フォルダ 名 /home/ wwwadmin/www )を 順 にダブルクリックし,[ 保 存 ]ボタンをクリックする 3 ブラウザからの 動 作 確 認 図 8 http://epc**.cen.hic.ac.jp/index.php ブラウザ(Mozilla Firefox)を 表 示 さ せる (ブラウザが 起 動 していない 場 合 は, ランチャの[Webブラウザ]をクリック する ) URL http://epc**.cen.hic.ac.jp/ index.php を 入 力 し, Enter キーを 押 す ( 図 8) (4) データベースの 使 用 権 限 の 設 定 データベース testdb は, 作 成 者 wwwadmin だけが 使 用 権 限 を 持 つ 一 方,apacheの 実 行 者 は,Webサーバに 対 するセキュリティ 上 の 理 由 でnobodyに 限 定 されている SQLコマンド grant を 使 用 して, 利 用 者 nobody がデータベース testdb のテーブ -7-
ル table1 を 利 用 できるように 権 限 を 設 定 する なお, 権 限 は select, insert, update, delete の 各 項 目 ごとに 設 定 が 可 能 であるが,ここでは 便 宜 上, all に 設 定 しnobodyに 対 してすべての 権 限 を 付 与 する 1 利 用 者 の 設 定 次 のように 入 力 し,それぞれ Enter キーを 押 す [root@epc** root]# su wwwadmin [wwwadmin@epc** root]$ psql testdb testdb=> grant all on table1 to nobody; GRAMT testdb=> \z Access privileges for database "testdb" Schema Table Access privileges ----------+--------+------------------------------------------------------------ public table1 {wwwadmin=a*r*w*d*r*x*t*/wwwadmin,nobody=arwdrxt/wwwadmin (1 row) testdb=> \q 2 パーミションの 変 更 デスクトップの[コンピュータ]をダブルクリックする ファイルシステム]をダブルクリックする 図 9 パーミションの 変 更 フォルダ home, wwwadmin, www を 順 にダブ ルクリックする ファイル index.php を 右 クリックし,[プロパ ティ]を 選 択 する 図 9のように[アクセス 権 ]タブを 選 択 する 所 有 者, グループ, その 他 の 図 9のよう にチェックを 入 れる (パーミッション 755 ) ファイルの 所 有 者,ファイルのグループをそれぞれ wwwadmin に 設 定 する また, 上 位 のフォルダも 同 様 にパーミッションを 755 に 変 更 する (5) PHPスクリプトの 作 成 とクライアントからの 確 認 テーブル table1 のデータをすべて 表 示 するPHPスクリプトを 作 成 する 1 ファイル ichiran.php の 作 成 geditの[ファイル]より[ 新 規 ]を 選 択 する 端 末 ]に 次 のように 入 力 し,それぞれ Enter キーを 押 す <html> <head> <title> 会 員 データ 一 覧 を 表 示 する</title> -8-
</head> <body> <h3> 会 員 データ 一 覧 を 表 示 する</h3> <? 1 $conn=pg_connect("","","","","testdb"); if (!$conn) { echo " 接 続 エラーが 発 生 しました\ n"; exit; 2 3 // データを 取 り 出 す $result = pg_exec($conn,"select id,nam,pre,ag from table1"); if (!$result) { echo "エラーが 発 生 しました\n"; exit; 4 // 取 り 出 したデータを 表 示 echo "<table border=\"20\">"; 5 echo "<tr>"; 6 echo "<td> 会 員 番 号 </td>"; 7 echo "<td> 氏 名 </td>"; echo "<td> 住 所 </td>"; echo "<td> 年 令 </td>"; 7 echo "</tr>"; 6 for ($i = 0; $i < pg_numrows($result); $i++) { 8 $row = pg_fetch_array($result, $i, PGSQL_ASSOC); 9 echo "<tr>"; echo "<td>"; echo pg_result($result,$i,"id"); 10 echo "<td>"; echo pg_result($result,$i,"nam"); echo "<td>"; echo pg_result($result,$i,"pre"); echo "<td>"; echo pg_result($result,$i,"ag"); echo "</tr>"; echo "</table>"; // 接 続 解 除 pg_close($conn); 11?> 1 </body> </html> 各 PHPスクリプトの 意 味 は, 次 のとおりである 1 及 び1 スクリプトの 開 始 と 終 了 を 示 す Apacheは <? と?> の 間 をPHPスクリ プトとして 解 釈 する 2 データベースtestdbに 接 続 して,コネクションIDを 変 数 $connに 返 す 3 データベースと 正 しく 接 続 できたかどうかをチェックする 4 接 続 したデータベースに 対 してSQLコマンドを 実 行 して, 結 果 を 配 列 変 数 $resultに -9-
格 納 する 5 表 示 するテーブルの 表 を 作 成 する 線 の 太 さは,20 6 及 び6 <tr>で 挟 んだ 項 目 名 を 表 示 する 7 教 示 する 項 目 は,<td>で 囲 む 8 $i=0 から,データベースの 行 数 まで 繰 り 返 す $i=pg_numrows($result)で 行 数 を 取 得 する 9 $i 行 目 を 配 列 として$rowに 取 得 する 10 $i 行 目 のidを 表 示 する 11 データベースとの 接 続 を 切 断 する geditの[ファイル]より[ 保 存 ]を 選 択 する ファイル 名 index.php を 入 力 する 他 のフォルダの 参 照 ]を 選 択 し, ファイルシステム,フォルダ(フォルダ 名 /home/ wwwadmin/www )を 順 にダブルクリックし,[ 保 存 ]ボタンをクリックする ブラウザを 起 動 し,URL http://epc**.cen.hic.ac.jp/ichiran.php を 入 力 し, Enter キーを 押 す ( 図 10) 図 10 2 ファイル 5kenzutu.php の 作 成 テーブル table1 のデータから1ぺージに5 件 のデータ 表 示 PHPスクリプトを 作 成 する geditの[ファイル]より[ 新 規 ]を 選 択 する 端 末 ]に 次 のように 入 力 し,それぞれ Enter キーを 押 す <html> <head> <title> 会 員 を5 件 ずつ 表 示 する</title> </head> <body> <h3> 会 員 を5 件 ずつ 表 示 する</h3> <?php // 接 続 設 定 $conn=pg_connect("","","","","testdb"); if (!$conn) { echo " 接 続 エラーが 発 生 しました\n"; 1-10-
exit; // データ 数 を 取 得 $sql = "SELECT COUNT(*) AS cnt FROM table1;"; 2 $res = pg_query($conn, $sql) or die("データ 抽 出 エラー"); 3 $row = pg_fetch_array($res, 0, PGSQL_ASSOC); 4 $dtcnt = $row["cnt"]; 5 // 取 り 出 す 最 大 レコード 数 $lim = 5; 6 // 表 示 するページ 位 置 を 取 得 $p = intval(@$_get["p"]); 7 if ($p < 1) { 8 $p = 1; // 表 示 するデータの 位 置 を 取 得 $st = ($p - 1) * $lim; 9 // 前 のページ/ 次 のページのページ 番 号 を 取 得 $prev = $p - 1; if ($prev < 1) { $prev = 1; $next = $p + 1; 10 11 // データを 取 り 出 す $sql = "SELECT id, nam, pre, ag FROM table1 ORDER BY id LIMIT $lim OFFSET $st;"; $res = pg_query($conn, $sql) or die("データ 抽 出 エラー"); 12 13 // 取 り 出 したデータを 表 示 echo "<table border=\"20\">"; echo "<tr>"; echo "<td> 会 員 番 号 </td>"; echo "<td> 氏 名 </td>"; echo "<td> 住 所 </td>"; echo "<td> 年 令 </td>"; echo "</tr>"; for ($i = 0; $i < pg_numrows($res); $i++) { $row = pg_fetch_array($res, $i, PGSQL_ASSOC); echo "<tr>"; echo "<td>"; echo pg_result($res,$i,"id"); echo "<td>"; echo pg_result($res,$i,"nam"); echo "<td>"; echo pg_result($res,$i,"pre"); echo "<td>"; echo pg_result($res,$i,"ag"); echo "</tr>"; echo "</table>"; -11-
// 前 のページ/ 次 のページへリンク if ($p > 1) { echo " <a href=\""."?p=$prev\"> 前 のページ</a>"; if (($next - 1) * $lim < $dtcnt) { echo " <a href=\""."?p=$next\"> 次 のページ</a>"; 14 15 16 17 // 接 続 を 解 除 pg_close($conn);?> </body> </html> 各 PHPスクリプトの 意 味 は, 次 のとおりである 1 データベースとの 接 続 2 SELECT 文 を$SQLに 格 納 する 3 pg_queryを 実 行 し,table1のデータを 抽 出 し,$res に 格 納 する 4 データの1 行 目 を 配 列 で 抽 出 し,$row に 格 納 する 5 データのレコード 数 をカウントし,$dtcnt に 格 納 する 6 ブラウザに 表 示 する 最 大 レコード 数 設 定 する 7 @$_GET["p"]で 現 在 のページ 番 号 を 取 得 し,intvalで 整 数 化 する 8 1 未 満 の 時 は$pを1とする 9 次 のページを 表 示 するとき, 前 のページをカウントしないように, 開 始 位 置 を 決 め る 10 前 のページに 戻 るときの 変 数 を 決 める 11 次 のページに 進 むときの 変 数 を 決 める 12 id,nam,pre,ag をidの 順 番 に 並 べて 取 得 するSELECT 文 13 最 大 5 人 で 開 始 位 置 を$st とする 14 もし,$pが1より 大 きかったときには{ を 実 行 する 15 前 のページ をクリックした 時, 前 ページにリンクし, URLにページ 数 を 追 加 する 16 もし,レコード 数 が 最 後 まで 表 示 されてなかったときは 17 次 のページ をクリックした 時, 次 ページにリンクし, URLにページ 数 を 追 加 する geditの[ファイル]より[ 保 存 ]を 選 択 する ファイル 名 5kenzutu.php を 入 力 する 他 のフォルダの 参 照 ]を 選 択 し, ファイルシステム,フォルダ(フォルダ 名 /home/ wwwadmin/www )を 順 にダブルクリックし,[ 保 存 ]ボタンをクリックする ブラウザにURL http://epc**.cen.hic.ac.jp/5kenzutu.php を 入 力 し, Enter キーを 押 す -12-
図 11 3 ファイル tuika.php の 作 成 テーブル table1 にデータを 追 加 するPHPスクリプトを 作 成 する geditの[ファイル]より[ 新 規 ]を 選 択 する 端 末 ]に 次 のように 入 力 し,それぞれ Enter キーを 押 す <html> <head> <title> 新 規 データを 追 加 する</title> </head> <body> <h3> 新 規 データを 追 加 する</h3> <?php // データベースに 接 続 $conn=pg_connect("","","","","testdb"); if (!$conn) { echo " 接 続 エラーが 発 生 しました\n"; exit; // 追 加 するデータを 取 得 if (count($_post) > 0) { $id = $_POST["id"]; $nam = $_POST["nam"]; $pre = $_POST["pre"]; $ag = $_POST["ag"]; 1 2 // データが 送 信 されたときはデータを 追 加 if (strlen($id) and strlen($nam) and strlen($pre) and strlen($ag)) { // データ 追 加 3 $sql="insert into table1 (id,nam,pre,ag) values ('".$id."','".$nam."','".$pre." ','".$ag."')"; 4-13-
pg_query($conn, $sql) or die("データ 追 加 エラー"); 5 // データを 取 り 出 す $sql = "SELECT id, nam, pre, ag FROM table1 ORDER BY id"; $res = pg_query($conn, $sql) or die("データ 抽 出 エラー"); 6 7 // 取 り 出 したデータを 表 示 echo "<table border=\"20\">"; echo "<tr>"; echo "<td> 会 員 番 号 </td>"; echo "<td> 氏 名 </td>"; echo "<td> 住 所 </td>"; echo "<td> 年 令 </td>"; echo "</tr>"; for ($i = 0; $i < pg_numrows($res); $i++) { $row = pg_fetch_array($res, $i, PGSQL_ASSOC); echo "<tr>"; echo "<td>"; echo pg_result($res,$i,"id"); echo "<td>"; echo pg_result($res,$i,"nam"); echo "<td>"; echo pg_result($res,$i,"pre"); echo "<td>"; echo pg_result($res,$i,"ag"); echo "</tr>"; echo "<form method=\"post\" action=\"".$_server["php_self"]."\">"; echo "<tr>"; echo "<td><input type=\"text\" name=\"id\"></td>"; echo "<td><input type=\"text\" name=\"nam\"></td>"; echo "<td><input type=\"text\" name=\"pre\"></td>"; echo "<td><input type=\"text\" name=\"ag\"></td>"; echo "<td><input type=\"submit\" value=\" 追 加 \" name=\"sub1\"></td>"; echo "</tr>"; echo "</form>"; echo "</table>"; 8 9 10 11 // 接 続 を 解 除 pg_close($conn);?> </body> </html> 各 PHPスクリプトの 意 味 は, 次 のとおりである 1 ブラウザに 表 示 されている 文 字 を 取 得 する 方 法 には,POST がある 取 得 した 文 字 をカウントし,0より 大 きければ2へ 進 む 2 ブラウザのフォームに 入 力 したid をPOSTにより 取 得 し,$idへ 格 納 する 3 $id $nam $pre $ag の 文 字 数 を 調 べて, 確 認 されれば4へ 進 む 4 データベースtable1にデータを 追 加 する -14-
5 実 行 6 SELECT で table1 をid 順 に 並 べる 7 実 行 8 追 加 項 目 に 文 字 を 表 示 するためには,form methodで 入 力 文 字 を 取 得 し,actionで 同 じ 位 置 に 表 示 させる 9 id のinput type はtextタイプである 10 nam のinput type はtextタイプである 11 追 加 ボタンを 作 り,クリックするとsubmitタイプになっているので, 内 容 を 送 信 す る geditの[ファイル]より[ 保 存 ]を 選 択 する ファイル 名 tuika.php を 入 力 する 他 のフォルダの 参 照 ]を 選 択 し, ファイルシステム,フォルダ(フォルダ 名 /home/ wwwadmin/www )を 順 にダブルクリックし,[ 保 存 ]ボタンをクリックする ブラウザにURL http://epc**.cen.hic.ac.jp/tuika.php を 入 力 し, Enter キーを 押 す 図 12 (6) クライアント(WindowsXP)からの 確 認 ブラウザ(Internet Explorer)を 起 動 する URL http://epc**.cen.hic.ac.jp/ichiran.php を 入 力 し, Enter キーを 押 し, 確 認 する URL http://epc**.cen.hic.ac.jp/5kenzutu.php を 入 力 し, Enter キーを 押 し, 確 認 する URL http://epc**.cen.hic.ac.jp/tuika.php を 入 力 し, Enter キーを 押 し, 確 認 す る 演 習 PHPスクリプトを 使 い,データベース testdb のテーブル table1 を 取 り 込 み,1 ぺージに3 件 のデータ 表 示 させるWebサーバを 構 築 し,クライアント(WindowsXP)のブラウ ザからURL epc**.cen.hic.ac.jp/3kenzutu.php を 入 力 し, 確 認 する -15-