PHP超入門 (47)
■今までのまとめ■
さて、前回までの話の流れをここでまとめると、以下のようになります。
(1) ブラウザのフォーム上に、自分の好きな内容の文章(テキスト)を入力
する。
↓
(2) ハードディスク上に新しくその入力された文章(テキスト)ファイルを
PHPプログラムで自動的に作成し、保存する。
↓
(3) その、文章(テキスト)ファイルを丸ごとブラウザのフォーム上に読み
込んで、ブラウザ上で自分の好きな内容に変更する。
↓
(4) その変更した内容を、丸ごとPHPプログラムで自動的に上書き保存する。
そして、前回までで、上記の流れは、一応完結の形をみて、メデタシメデタシ
となった訳ですが、振り返ってみると、まだまだ不満足な点がいくつかありま
す。
まず、上記(1)の段階で、下記のようなPHPプログラムを用いたのですが、
----------------------------------------------------------
<?php
$text01 = $_POST["text01"];
$file = fopen("C:\\inetpub\\wwwroot\\php\\096-2.txt","w");
fwrite($file,$text01);
fclose($file);
print("書き込み終了しました。");
?>
----------------------------------------------------------
ここに、ちょっと納得できない点があります。
それは、「fopen("C:\\inetpub\\wwwroot\\php\\096-2.txt","w");」の行の中
に「096-2.txt」とプログラムの中に直接ファイル名を指定しており、違うファ
イル名で保存したい時には、いちいちPHPプログラムをいじらなければならない
ことです。
やはり、ここは、ブラウザなどから自由に保存するファイル名を入力し、PHPプ
ログラムの存在を意識せずに使いたいものです。
もう1つ、不満な点は、今まで延々とお話してきた例では、単純な一行テキス
トボックスであり、
あまりというか、ほとんど実用性がありません。
やはり、実用性を持たせるには、複数行テキスト領域を用いて、気軽に長文を
入力したいところです。
そこで、今回から、これを視野においたお話を展開していきたいと思います。
■まずは、入力用フォームページの準備■
何はともあれ、サーバーのハードディスクに文章(テキスト)を保存させるに
は、それを入力するための、フォーム用HTML文を準備しなければなりません。
そこで、今回は、例として、以下のものを使いたいと思います。
--------------------------------------------------------------
<html>
<head>
<title>入力用フォーム</title>
</head>
<body>
<form action="103-2.php" method="post">
ファイル名<br>
<INPUT size="20" type="text" name="title01">.txt<br>
<br>
内容<br>
<TEXTAREA rows="10" cols="15" name="content01"></textarea><br>
<input type="submit" name="bottun01" value="入 力">
</form>
</body>
</html>
--------------------------------------------------------------
このフォームでは、保存するファイル名もブラウザ上で自由に指定できますし、
内容を記入するエリアも広々として、何となく、入力する気にもなれます。
上記のHTMLで「form action="103-2.php"」と指定してあることから、フォーム
の「入 力」ボタンを押すと、記入された内容は、「103-2.php」というPHPプ
ログラムに引き渡されて、処理されることになります。
■「103-2.php」の内容■
さて、フォームから送られてきた、内容を受け取り、それをサーバーのハード
ディスク上に保存する役目を、「103-2.php」が行うことになります。
(「103-2.php」はこれから作ることになります。今はまだありません)
前回までは、フォームから送られてきた内容は1つだけでしたが、今回は、フ
ァイル名と本文の2つになります。
通常、フォームから送られてきた内容をPHPプログラムの変数に収納するには、
$hensuu = $_POST["フォームの部品の名前"];
となりますので、今回の場合、
ファイル名は $hensuu01 = $_POST["title01"];
内容は $hensuu02 = $_POST["content01"];
という具合になるでしょう。
そして、今までの話の中で、ハードディスクに実際に、文章(テキスト)ファ
イルを書き込む操作を担当していた
----------------------------------------------------------
<?php
$text01 = $_POST["text01"];
$file = fopen("C:\\inetpub\\wwwroot\\php\\096-2.txt","w");
fwrite($file,$text01);
fclose($file);
print("書き込み終了しました。");
?>
----------------------------------------------------------
というPHPプログラムに改造を加えることになります。
最初の2行は上でお話しましたように、単純に、コピー&ペーストだけでよい
でしょう。
また、「fwrite($file,$text01);」の部分を「fwrite($file,$hensuu02);」に
変更しておきます。
----------------------------------------------------------
<?php
$hensuu01 = $_POST["title01"];
$hensuu02 = $_POST["content01"];
$file = fopen("C:\\inetpub\\wwwroot\\php\\096-2.txt","w");
fwrite($file,$hensuu02);
fclose($file);
print("書き込み終了しました。");
?>
----------------------------------------------------------
さて、このままですと、フォーム上で書き込まれた内容は、折角入力したファ
イル名は無視されて、「096-2.txt」というファイル名で、強制的に保存されて
しまいますので、この部分を何とかしなければなりません。
で、その方法は?といったところですが、またまた話が長くなりそうなので、
これについては、次回に繰り越し、ということで、ご容赦ください。
多分、2通りの方法があるんじゃないかと思います。
(↑結果としては同じですが。。。)