PHP超入門 (48)


■今までのおさらい■

チョットここで、簡単ですが、今までのお話のおさらいをしたいと思います。

今まで、延々とPHPプログラミングのお話をしてきていますが、その最終目的と
しては、

 「文章(テキスト)ファイルを、PHPプログラムを利用して、ブラウザから自
  由に、サーバー上のハードディスクに書き込んだり、修正したり出来るよ
  うにしよう」

ということです。

そして、前々回のお話で一応の決着をみた訳ですが、それでもまだ、不満足な
というか使い勝手の悪い部分がありました。


それを、ここでもう一度書いてみると、


 ・前々回までのお話は、超単純な一行テキストボックスを扱っていたので、
  チョットというかあまりにも実用性に乏しい


 ・サーバーのハードディスク上に文章(テキスト)ファイルを保存する時に、

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

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

  fwrite($file,$text01);

  fclose($file);

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

  というPHPプログラムを使っていた訳ですが、保存するファイル名を「096
  -2.txt」という具合に、PHPプログラムの中で直接指定しているので、違っ
  たファイル名で保存したい時には、PHPプログラムを、いちいちいじらなけ
  ればならないので、これまた、使い勝手が悪いというか、面倒くさいです。


そこで、前回では、新しく、ファイル名と、書き込む内容が長い場合でも、ブ
ラウザで扱えるように、ファイル名を入力する一行テキストボックスと、長い
文章を入力できる、テキストエリアをHTML文のフォームを利用して作成し、そ
こに入力された内容を、PHPプログラムでサーバーのハードディスクに書き込め
るようにしようとしている訳です。


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


この上に示したフォーム文からデータを受け取り、サーバーのハードディスク
に書き込むPHPプログラムは、全く新しいものではなく、今まで何回となく出て
きたPHPプログラムを利用することになり、前々回までお話してきた、一行テキ
ストボックスの内容をハードディスクに書き込むPHPプログラムを、チョット改
良し、

----------------------------------------------------------
<?php

$hensuu01 = $_POST["title01"];

$hensuu02 = $_POST["content01"];

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

fwrite($file,$hensuu02);

fclose($file);

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

というところまで紹介しました。

ただ、これだけですと、フォームに入力された、内容(本文)は、ハードディ
スクに保存できますが、同じフォームに入力したファイル名が無視されてしま
うというか、入力された内容が反映させることができません。

そこで、これをどうするか?

といったことになります。



■文字列を結合する「.(ドット)」という記号■

そこで、ず〜〜〜っと前に、PHPプログラミングの「入門編」でお話したのです
が、「.」という、ごく単純な1文字の記号が、PHPプログラムでは複数の文字
列を結合させる働きを持っている、という機能をここで利用することにしたい
と思います。


例として、非常に単純なPHPプログラムをここで挙げてみます。


----------------------------------------
<?php

$mojiretu = "あいうえお" . "かきくけこ";

print($mojiretu);

?>
----------------------------------------


上のPHPプログラムを、「104-1.php」というファイル名で、「C:\Inetpub\www
root\php」フォルダに保存します。


その後、ブラウザのアドレス欄に、「http://localhost/php/104-1.php」と入
力すると、ブラウザには、「あいうえおかきくけこ」と表示されると思います。


上のPHPプログラムでは、直接、文字列を結合させて表示させましたが、結合さ
せる文字列を、一度、変数に代入して、その変数同士を結合させる、というや
り方もできます。


例えば、

-------------------------------------
<?php

$mojiretu1 = "あいうえお";

$mojiretu2 = "かきくけこ";

$mojiretu3 = $mojiretu1 . $mojiretu2;

print($mojiretu3);

?>
-------------------------------------

という具合にして、これを、「104-2.php」というファイル名で、「C:\Inetpu
b\wwwroot\php」フォルダに保存します。



そして、ブラウザののアドレス欄に、「http://localhost/php/104-2.php」と
入力すると、上と同じような「あいうえおかきくけこ」が表示されると思いま
す。


さて、ここで、話は、

----------------------------------------------------------
<?php

$hensuu01 = $_POST["title01"];

$hensuu02 = $_POST["content01"];

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

fwrite($file,$hensuu02);

fclose($file);

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

に戻ります。


既にお話してように、フォームから入力された、文章(テキスト)ファイルの
内容というか本文は、スンナリと処理できますが、フォームから受け取った、
ファイル名のデータ部分を処理するには、この「.」という記号の機能を利用
して、

----------------------------------------------------------
<?php

$hensuu01 = $_POST["title01"];

$hensuu02 = $_POST["content01"];

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

fwrite($file,$hensuu02);

fclose($file);

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

という具合にします。(ほんの一例です)


そして、上に書いた入力用HTMLフォーム文を、「103-1.htm」、PHPプログラム
を「103-2.php」というファイル名で、それぞれ、「C:\Inetpub\wwwroot\php」
フォルダに保存します。


次に、ブラウザのアドレス欄に「http://localhost/php/103-1.htm」と入力す
ると、見慣れた、フォームの入力画面が表示されますので、そこに適当な、フ
ァイル名と文章(テキスト)ファイルの内容を入力して、「入力」ボタンを押
します。


そうすると、画面が切り替わり、入力完了のメッセージが表示されます。


では、ここで、エクスプローラを立ち上げて、「C:\Inetpub\wwwroot\php」フ
ォルダの中を見てみてください。


そうすると、そのフォルダの中に、上のフォーム文で入力したファイル名の文
章(テキスト)ファイルが新しく出来ていて、


その内容をメモ帳で開いて見てみると、フォームで入力した内容(本文)がち
ゃんと書き込まれているのが分かると思います。


いかがでしょうか?

これで、一応、メデタシメデタシという感じではないですか?


さて、ここで、蛇足になりますが、上に書いたPHPプログラムですが、全く同じ
動作をしますが、こんな書き方もできます。

----------------------------------------------------------
<?php

$hensuu01 = $_POST["title01"];

$hensuu02 = $_POST["content01"];

$hensuu03 = "C:\\inetpub\\wwwroot\\php\\" . $hensuu01 . ".txt";

$file = fopen($hensuu03,"w");

fwrite($file,$hensuu02);

fclose($file);

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


プログラムとしては、一行長くなりますが、プログラムの見た目は、こちらの
方が見やすいのではないでしょうか?

マア、これは人それぞれの好みになりますが、私個人としては、こちらの書き
方の方が好きですし、実際にはこのような書き方を多用しています。


以上、長々とお話しましたが、何とかこれで当初の目的は達成しましたので、
次回以降、入力した内容を、再びフォーム上に呼び出して、修正した内容をサ
ーバーのハードディスクに再び書き込むことを考えてみたいと思います。

ただ、これは、以前の話とは違い、少々難しい内容になるかも知れませんので、
これについては、あしからずご了承願いたいと思います。

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

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

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

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

Powered by まぐまぐ

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