PHP超入門 (41)
PHP超入門では、始めにハードディスク上のテキストファイルの文章を表示
したり、新しく文章を入力したりするお話をしてきています。
その応用というか、延長線上の使い方として、テキスト版のアクセスカウンタ
ーのプログラムを作り、実際にHTML文章と融合させる話をしてきました。
今回は、話をまた元に戻して、ハードディスク上のテキストファイルにPHPプ
ログラムで文章を入力するお話にしたいと思います。
■今までのプログラムの問題点
今までの説明の中では、ハードディスク上に新しくテキストファイルを作った
り、新しく文章(テキスト)を入力するのに、次のようなプログラムを紹介し
ました。
----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\096-1.txt","r+");
fwrite($file,"あなたの脳年齢は52歳です。")
fclose($file);
?>
----------------------------------------------------------
これは、もともとハードディスク上にある、何も文章(テキスト)が書かれて
いない「096-1.txt」というファイルに、「あなたの脳年齢は52歳です。」と
いう文章(テキスト)を書き込むプログラムです。
ただし、この場合、ハードディスク上に「096-1.txt」がないとエラーとなっ
てしまいます。
また、
----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\096-1.txt","w");
fwrite($file,"あなたの脳年齢は52歳です。");
fclose($file);
?>
----------------------------------------------------------
も、同様に、「096-1.txt」に、「あなたの脳年齢は52歳です。」という文章
(テキスト)を書き込むプログラムですが、引数(ひきすう)が"w"となって
いるので、ハードディスク上に「096-1.txt」というファイルがなければ、自
動的に作成してくれ、同時にプログラム中に指定してある文章(テキスト)を
書き込んでくれます。
(参考)
http://www.e-and-a.ws/06/091.asp
マァ、これらの例はそれなりに良いのですが、実際、自分たちで実務で使おう
となると、いくつかの問題点が出てきます。
それは、
(1) 文章(テキスト)を見るのに、いちいちメモ帳などのプログラムで見な
ければならない。
(2) 文章(テキスト)をファイルに記録するのに、いちいちPHPプログラム
中で指定しなければならない。
(3) 既にあるテキストファイルに対して、新しい文章(テキスト)で上記の
プログラムを実行すると、上書き保存されてしまい、以前の文章(テキ
スト)が残らない。
なんかでしょう。
特に、(1)と(2)などは、ゴチャゴチャといろいろプログラムをいじったりする
よりも、ブラウザ(あるいは携帯)などを活用して一発で、しかもお手軽に処
理したいところです。
では、それぞれの問題点について、個別に対策を考えていきたいと思います。
■サーバー上の文章(テキストファイル)をブラウザで見る
実は、これは既に解決済みです。
このPHPの中級編を始めるにあたり、一番最初に出てきたプログラム
----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\096-1.txt","r");
fpassthru($file);
?>
----------------------------------------------------------
で、一発解決です。
パソコンのブラウザなら、これで全く問題ありませんが、文章(テキスト)を
携帯電話でも見たい、というワガママな人がいるかもしれません。
その場合には、PHPの「PHPはHTML埋め込み型の言語である」という特徴を生か
して、このPHPプログラムをHTML言語で包んでしまいます。
----------------------------------------------------------
<html>
<head>
<title>携帯電話で文章を見るテスト</title>
</head>
<body>
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\096-1.txt","r");
fpassthru($file);
?>
</body>
</head>
----------------------------------------------------------
こうすることにより、携帯電話のブラウザーでも、閲覧可能となります。
図はパソコンのブラウザーの画面ですが、ちゃんとホームページのタイトルも
表示されますし、
そのソースを見てみると、非常に単純なHTML文書をブラウザが表示しているこ
とが分かります。
■サーバー上のファイルに文章(テキスト)を書き込む
これも、マァ、ほぼ解決済みです。
解決策としては、まず、HTML文書で入力フォームを作り、そのデータをPHPプ
ログラムに渡し、処理させるのです。
これは、このメルマガの初級編で、HTMLフォームからデータを入力後、PHPプ
ログラムで処理した結果をパソコンの画面に表示するプログラムを紹介しまし
たが、このパソコンの画面に表示する処理を、サーバー上のファイルに書き込
む処理に置き換えるのです。
とりあえず、私が考えた例を書いてみたいと思います。
まずは、データを入力する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>
---------------------------------------------------
このHTMLファイルを「C:\Inetpub\wwwroot\php」フォルダに「096-1.htm」と
いう名前で保存します。
次に、HTMLフォームから受け取ったテキストデータをPHPプログラムで処理し
ます。
今回の場合、いちいち書き込むファイルを準備するのは面倒なので、引数(ひ
きすう)に"w"を使いました。
また、PHPの処理だけだと画面に何の変化も現れないので、一応、終了のメッ
セージも加えてみました。
----------------------------------------------------------
<?php
$text01 = $_POST["text01"];
$file = fopen("C:\\inetpub\\wwwroot\\php\\096-2.txt","w");
fwrite($file,$text01);
fclose($file);
print("書き込み終了しました。");
?>
----------------------------------------------------------
このPHPプログラムを「C:\Inetpub\wwwroot\php」フォルダに「096-3.php」と
いう名前で保存します。
このPHPプログラムが今までの書き込みプログラムと違うところは、
今までは
fwrite($file,"あなたの脳年齢は52歳です。")
という具合に、プログラム中に、直接入力する文章を記述していましたが、今
回は
$text01 = $_POST["text01"]
というHTMLフォームから送られたデータを、変数「$text01」に代入し、
fwrite($file,$text01)
というように、直接入力する文章の代わりに、それが代入された変数に置き換
わっているところ(のみ)です。
では、早速、試してみます。
ブラウザのアドレス欄に、「http://localhost/096-1.htm」と入力して、それ
ぞれのテキストボックスに適当な文章を入力します。
そして、入力ボタンを押すと、ブラウザに「書き込み終了しました。」と同時
に
「C:\Inetpub\wwwroot\php」フォルダ内に、「096-2.txt」というファイルが
自動的に作成され、
そのファイルを開けると、一行テキストボックスに入力された文章が書き込ま
れています。
また、上のプログラムを最初の例同様、HTMLに埋め込む形にすれば、携帯から
でも入力は可能になります。
当然のことながら、既に、上で述べたPHPプログラムの一部を変えて、
----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\096-2.txt","r");
fpassthru($file);
?>
----------------------------------------------------------
というプログラムを用意しておけば、いちいちファイルをメモ帳で開かなくて
も、ブラウザで書き込まれた中身が確認できます。
■最後の課題
さて、最後の問題である「既にテキストファイルの中に、新しい文章(テキス
ト)で上記のプログラムを実行すると、上書き保存されてしまう。」について
は、大分、今号が長くなってしまったので、引き続き、次号でお話したいと思
います。