PHP超入門 (44)


さて、前回までのお話は(もう、一ヶ月前のことになりますが。。。)、サーバ
ーのハードディスク上にある文章(テキスト)ファイルを、今まで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」の中身を指定してやらなければなりません。

また、最初の部分でもお話したように、あるいは、以前の号
 http://www.e-and-a.ws/06/098.asp

の最後の部分で既に書きましたように、サーバーのハードディスクには、「日本
一の山は富士山です」という内容が書かれた文章(テキスト)ファイル(今まで
の流れから言うと「096-2.txt」)があり、



ファイルの中身


その中身を何とか読み込んで、変数「$text01」に格納したいところです。


では、どうしたらよいか?

え〜と、いつもながらのように、今回も非常に長い内容になってしまいましたの
で、今回は、一応、区切りの良いここまで、ということでご容赦ください。

続きは次号にて。

スミマセン。。。

新しく「パソコン(PC)初心者向け パソコンサポートサービス」を始めました。
詳細は専用サイトを御覧ください。

上記の内容はシリーズとしてメールマガジンで配信しています。

42歳のオヤジでもできた!パソコンサーバー化計画 (マガジンID:0000114576)

メールマガジン登録  メールアドレス:
メールマガジン解除  メールアドレス:

Powered by まぐまぐ

copyright(c) 2002-2007 E&A工房 All rights reserved.