さて、前回までのお話は(もう、一ヶ月前のことになりますが。。。)、サーバ ーのハードディスク上にある文章(テキスト)ファイルを、今までPHPプログラム を使ってイロイロいじってみよう、という内容でしたが、いちいちPHPプログラム を設定するのはメンドクサイうえに、実用性がないので、ブラウザから直接扱える ようにしよう、という内容でした。 で、前回の話の結論として言いたかったのは、 「サーバー上のハードディスク上に保存されている文章(テキスト)ファイルの 内容全部を、一旦、ブラウザのフォームの中に呼び出し、そのブラウザ上でい ろいろと修正し、その修正した文章を丸ごと、再びハードディスクのファイル に上書き保存する」 という事でした。 流れとしては、 (1) ブラウザのフォーム上に、自分の好きな内容の文章(テキスト)を入力す る。 ↓ (2) ハードディスク上に新しくその入力された文章(テキスト)ファイルをPHP プログラムで自動的に作成し、保存する。 ↓ (3) その、文章(テキスト)ファイルを丸ごとブラウザのフォーム上に読み込 んで、ブラウザ上で自分の好きな内容に変更する。 ↓ (4) その変更した内容を、丸ごとPHPプログラムで自動的に上書き保存する。 という内容でした。 これにより、PHPプログラムの存在を全く意識せずに、普段、あなたがインター ネット上で目にするフォームから文章を書き込むのと同じ感覚で、ブラウザのみ の操作で、サーバー上のハードディスクに保存されている文章(テキスト)ファ イルを自由に取り扱える、という具合になります。 さて、上記の内容をそれぞれお話すると。。。 まず、上記の(1)に相当するのが、以下の単純なHTML文になります。 --------------------------------------------------- <html> <head> <title>入力フォーム</title> </head> <body> <form action="096-3.php" method="post"> テキスト入力:<input type="text" name="text01"> <input type="submit" name="bottun1" value="入 力"> </form> </body> </html> --------------------------------------------------- 次に、(2)にあたる部分が、キモのPHPプログラムである、下記の内容です。 ---------------------------------------------------------- <?php $text01 = $_POST["text01"]; $file = fopen("C:\\inetpub\\wwwroot\\php\\096-2.txt","w"); fwrite($file,$text01); fclose($file); print("書き込み終了しました。"); ?> ---------------------------------------------------------- で、(3)〜(4)の部分が、もう1つのキモのHTML文+PHPスクリプトである、 ------------------------------------------------------------------------------- <?php $file = fopen("C:\\inetpub\\wwwroot\\php\\096-2.txt","r"); $text01 = fgets($file); fclose($file); ?> <html> <head> <title>入力フォーム</title> </head> <body> <form action="096-3.php" method="post"> テキスト入力:<input type="text" name="text01" value="<?php print($text01) ?>"> <input type="submit" name="bottun1" value="入 力"> </form> </body> </html> ------------------------------------------------------------------------------- という内容です。 この(3)〜(4)部分は、今の段階では「???」でも構わないです、というか、そ れが今回のお話になります。 以上が、前回までのおさらいになります。 では、今回のお話になる(3)〜(4)部分を。。。 ■フォーム上に文章(テキスト)ファイルの内容を読み込む■ 通常、単純な一行テキストボックスであれば、HTML文で書くと、上にも書きまし たように、 --------------------------------------------------- <html> <head> <title>入力フォーム</title> </head> <body> <form action="096-3.php" method="post"> テキスト入力:<input type="text" name="text01"> <input type="submit" name="bottun1" value="入 力"> </form> </body> </html> --------------------------------------------------- となりますが、上記の 「テキスト入力:<input type="text" name="text01">」 の部分を 「テキスト入力:<input type="text" name="text01" value="あいうえお">」 とすると、 HTML文をブラウザ上で読み込むだけで、テキストボックス内に「value=」で指定 した内容が自動的に表示されます。
ここで、今まで何度も言っているように、「PHPというものはHTML埋め込み型の プログラミング言語である」すなわち、「HTML文とPHPでプログラム処理させる 部分は混在して使うことができる」という性質を利用して、 「テキスト入力:<input type="text" name="text01" value="PHPの変数の内容を表示する">」 という具合に指定してやります。 具体的には、(変数の名前は自分で好きなように指定できますが)今回は、変数 名に「$text01」と指定するとして、次のようになります。 「テキスト入力:<input type="text" name="text01" value="<?php print($text01) ?>">」 ただし、この場合、単純なHTML文ではなく、既にPHPプログラムの世界に入って いるので、ファイルを保存する時の拡張子は「.htm」とか「.html」ではなく、 「.php」なり、前回までの話の流れから言うと、「096-5.php」というファイル 名で「C:\Inetpub\wwwroot\php」フォルダに保存することになります。
さて、ここで、単純に ------------------------------------------------------------------------------- <html> <head> <title>入力フォーム</title> </head> <body> <form action="096-3.php" method="post"> テキスト入力:<input type="text" name="text01" value="<?php print($text01) ?>"> <input type="submit" name="bottun1" value="入 力"> </form> </body> </html> ------------------------------------------------------------------------------- として、ブラウザのアドレス欄に http://localhost/php/096-5.php と入力しても、テキストボックスの中に「phpのプログラムが間違っている」と いう内容が表示されてしまいます。
ブラウザのみだと分かりづらいので、「表示(V)」→「ソース(C)」をクリックし て表示される 「<b>Notice</b>: Undefined variable: text01 in <b>C:\Inetpub\wwwroot \php\096-3.php</b> on line <b>9</b><br />」 の部分がソレです。
表示は、訳の分からん英語の表記となっていますが、内容としては「変数の中身 が指定されていません」といった意味になります。 そう、「096-5.php」の中で指定した、PHPの変数である「$text01」の内容が空 っぽであることから、このエラーが発生してしまったのです。 では、それを回避するためにはどうしたらよいか? すなわち、変数「$text01」の中身を指定してやらなければなりません。 また、最初の部分でもお話したように、あるいは、以前の号
の最後の部分で既に書きましたように、サーバーのハードディスクには、「日本 一の山は富士山です」という内容が書かれた文章(テキスト)ファイル(今まで の流れから言うと「096-2.txt」)があり、
その中身を何とか読み込んで、変数「$text01」に格納したいところです。 では、どうしたらよいか? え〜と、いつもながらのように、今回も非常に長い内容になってしまいましたの で、今回は、一応、区切りの良いここまで、ということでご容赦ください。 続きは次号にて。 スミマセン。。。
42歳のオヤジでもできた!パソコンサーバー化計画 (マガジンID:0000114576)
Powered by