PHP超入門 (43)


さて、前回では、既にハードディスク上にある文章(テキストファイル)に、
新しく文章(テキスト)を追加する方法をご紹介しましたが、あんまり、シッ
クリこないというか、普段使っているワードとかエクセルには「新規追加」な
んていうメニューはないので、あまりピンとこない、というところでお話は終
わりました。

そこで、今回はそれを解決する、1つの例を考えてみたいと思います。



■文章(テキスト)一度ブラウザに呼び出して、上書き保存する

今まで、何度も出てきましたが、基本となるPHPプログラムは、


----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\xxx.txt","A");

fwrite($file,"B");

fclose($file);
?>
----------------------------------------------------------

という非常に簡単なプログラムであり、

・「xxx.txt」という文章(テキスト)ファイルに

・引数(ひきすう)「A」をいろいろ指定することにより

・「B」という内容の文章(テキスト)を

いろいろと操作する。

ということをになります。


この引数(ひきすう)には、いくつかのアルファベットの文字で指定してやり、
それぞれの働きは

----------------------------------------------------
引数    意味      ファイルが存在しない場合
----------------------------------------------------
 r  読み込み専用    エラー
 r+  読み書き可能    エラー
 w  書き込み専用    ファイルを作成
 w+  読み書き可能    ファイルを作成
 a  追加書き込み専用  ファイルを作成
 a+  読み込み、追加可能 ファイルを作成
----------------------------------------------------

という風になります。

この場合、「r」や「r+」の場合は、単に文章(テキスト)を「見るだけ」な
ので、あまり面白くもなんともないのですし、ハードディスク上に予め、文章
(テキスト)ファイルを用意しておかなければならないので、ちょっとメンド
クサイです。

引数(ひきすう)が「w」や「w+」の場合は、書きたい文章(テキスト)を入
力すれば、自動的にハードディスク上にファイルを作成してくれ、その上、指
定した文章(テキスト)の内容も書き込んでくれます。

ただし、その文章(テキスト)を訂正したい場合、「w」や「w+」の場合は、完
全に上書き保存してしまうので、訂正したい部分も含めて、1から文章を作成
し直さなければなりません。


引数(ひきすう)が「a」や「a+」の場合は、「w」や「w+」の場合と同様、書
きたい文章(テキスト)を入力すれば、自動的にハードディスク上にファイル
を作成してくれ、その上、指定した文章(テキスト)の内容も書き込んでくれ
すが、この場合、「追加書き込み」オンリーの機能しかなく、既に書き込んで
ある文章(テキスト)に手を加えることはできません。


このように、これらの機能単体だと、使い勝手が悪いし、欲を言えば、ワード
やエクセルのように、「新規作成」「上書き保存」「名前を付けて保存」みた
いなことができれば非常に使い勝手がよくなると思いますし、第一、いちいち
プログラムの中で指定して、そのプログラムを走らせる、というのも面倒です
し、実用的ではありません。

できれば、インターネット上で見かける掲示板のように、プログラムの存在を
意識せずに、ブラウザだけで操作をしたい、というのが本音でしょう。

そこで、それについて、徐々にではありますが、それをステップ・バイ・ステ
ップで実現させていきたいと思います。



■まずは、文章(テキスト)をブラウザ経由で作成する

以前、HTML文のフォームから、ハードディスク上に新しく、文章(テキスト)
ファイルを作成したお話をしました。

このメルマガを初めて読まれる方、あるいは、「忘れちゃった〜」という方は、
以下をご参照ください。
 http://www.e-and-a.ws/06/096.asp

この時、使用した、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>
---------------------------------------------------

で、(ファイル名は「096-1.htm」)


フォーム文から入力した内容をハードディスク上に保存するPHPプログラムは

----------------------------------------------------------
<?php
$text01 = $_POST["text01"];

$file = fopen("C:\\inetpub\\wwwroot\\php\\096-2.txt","w");

fwrite($file,$text01);

fclose($file);

print("書き込み終了しました。");
?>
----------------------------------------------------------

でした。(ファイル名は「096-3.php」)


ここで、繰り返しになりますが、上のHTML文とPHPプログラムの連携というか、
流れをお話しますと、


 HTMLの入力フォームに適当な文章をキーボードから入力する

    ↓

 入力された内容が、PHPプログラムに渡され、変数「$text01」に渡される。
 これは、PHPプログラムの「$text01 = $_POST["text01"]」の部分で実現し
 ています。

    ↓

 「$text01」の内容が、「096-2.txt」に書き込まれる

といった具合になります。


これは、一番最初に書いた、今までお話してきたPHPプログラムの雛型

----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\xxx.txt","A");

fwrite($file,"B");

fclose($file);
?>
----------------------------------------------------------

の「B」の部分に、直接、文章を書くのではなく、HTML文のフォームから
受け取った内容を、変数である「$text01」に置き換えているのにすぎません。


では、その内容変更をPHPプログラムに直接指定するのではなく、PHPプログラ
ムを意識せずに、ブラウザから操作するにはどうしたらよいか?

チョット考えてみましょう。。。


一番単純なのは、上のHTML文とPHPプログラムを利用して、初めから文章を書
き直すことです。

でも、それは、先程お話したようにチョット面倒です。


そこで。。。これは私が考えた1例ですが、

こんなのは如何でしょうか?

-------------------------------------------------------------------------------
<?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>
-------------------------------------------------------------------------------

これは、以前お話した「アクセスカウンター」のお話
 http://www.e-and-a.ws/06/096.asp

この時、使用した、HTMLのフォーム文は
 http://www.e-and-a.ws/06/093.asp

の流用です。


ここで、クドクド説明しても、年末年始のこともありますので、とりあえず結
論から。。。


すごく前のお話の繰り返しになりますが、

上の

---------------------------------------------------
<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>
---------------------------------------------------

を、「096-1.htm」の名前で、「C:\Inetpub\wwwroot\php」に保存。


次に

----------------------------------------------------------
<?php
$text01 = $_POST["text01"];

$file = fopen("C:\\inetpub\\wwwroot\\php\\096-2.txt","w");

fwrite($file,$text01);

fclose($file);

print("書き込み終了しました。");
?>
----------------------------------------------------------

を「096-3.php」の名前で、「C:\Inetpub\wwwroot\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>
-------------------------------------------------------------------------------

を「096-5.php」の名前で、「C:\Inetpub\wwwroot\php」に保存します。


そして、ブラウザのアドレス欄に

 http://localhost/php/096-1.htm 

と入力して、自分の好きな文章を入力します。


そして、「096-2.txt」というファイルが新しく作成され、その中身がを見る
と、今、入力された内容が書き込まれていることを確認します。


次に、ブラウザのアドレス欄に

 http://localhost/php/096-5.php 

と入力されると。。。

テキストボックス内に、さっき入力して、「096-2.txt」に保存された内容が
表示されることが確認できると思います。


そして、その表示された内容を自由にに変更して、


「入力」ボタンをおしてから、「096-2.txt」の中身を見てみると。。。

ちゃんと、変更された内容が反映されていることが分かると思います。


と、マァ、こんな感じですが、いかがでしょうか?


以上、小難しいプログラムをヅラヅラとかきましたが、これを、簡単に言葉で
説明すると、

「ハードディスク上に保存されている内容全部を、一旦、ブラウザのフォーム
 の中に呼び出し、いろいろと訂正し、その全体の文章を丸ごと、再びハード
 ディスクのファイルに上書き保存する」

ということを、小難しい、3つのプログラムで実現しているのにすぎないので
す。


初めにお話したように、思いもよらず、長〜い話となってしまったので、詳し
い話は、また来年ということで、それではどうぞ良いお年をお迎えください。

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

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

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

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

Powered by まぐまぐ

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