まずは作業用のフォルダを作成しましょう。「C:\Program Files\Apache Group\Apache2\htdocs」に「lesson10」というフォルダを作成してください。
さらに、Lesson10フォルダの中に「data.txt」という名前の空のファイルを作成してください。
■What's
Lesson7で一行掲示板が完成しましたが、少し改良したいと思います。まず、form.phpとsample01.phpに別れていたのを1つにします。
■サンプルプログラム
テキストエディタに以下のように書き込んで、「lesson10」フォルダの中に「form.php」として保存しましょう。
<?php
$body = $_REQUEST["body"];
$body = $body."\n";
if($_REQUEST["write"] != ""){
$fp = fopen("./data.txt","a");
fputs($fp,$body);
fclose($fp);
}
?>
<html>
<head>
<title>一行掲示板</title>
</head>
<body>
<h1>一行掲示板</h1>
書き込む内容を入力してください。<hr>
<form name="form" action="<?php print $_SERVER['PHP_SELF']; ?>" method="POST">
<input name="body" type="text" size="40">
<input name="write" type="submit" value="書込"><hr>
<?php
$data = file("./data.txt");
for($i=0; $i<sizeof($data); $i++){
print "記事NO.${i}:${data[$i]}<br>\n<hr>";
}
?>
</form>
</body>
</html>
できましたら、ブラウザのアドレスに
「http://localhost/lesson10/form.php」と入力してアクセス!!
ロリポップ!
さくらのレンタルサーバ
などのレンタルサーバー使ってる方はlocalhostのところはドメイン名になります。
(簡単に安くネットショップを開きたい方はこちら!)
さて、如何でしょうか?ちゃんと表示されましたでしょうか?
■解説
$body = $_REQUEST["body"];
$body = $body."\n";
Lesson7にも説明がありますが、テキストボックスの値を$bodyに代入して、ファイルに書き込む場合に1行1データとなるように最後に改行を付け足しています。
<form name="form" action="<?php print $_SERVER['PHP_SELF']; ?>" method="POST">
さて、今日の本題はコレですね。actionに見慣れないモノが!コレ、自分自身を呼び出しているます。自分自身つまり、
<form name="form" action="./form.php" method="POST">
コレと同じことになります。1つ目のように書いておけば、自分が扱っているファイル名を気にすることなく書くことができます。
<?php
if($_REQUEST["write"] != ""){
$fp = fopen("./data.txt","a");
fputs($fp,$body);
fclose($fp);
}
さて、お次。「クリックが押されたら書き込む」ということにしたいので「もし、書込ボタン(今回は、ボタンのnameはwrite)が押されたら書き込む」という風に考えていきます。
if($_REQUEST["write"] != "")
ココがまさにソレです。ちょっと見慣れないモノが出てきましたね?「!」びっくりまーく!
●予備知識
「!」は論理演算子といいまして「否定」を表します。今回の使い方は、「$_REQUEST["write"] != ""」つまり、「ボタンが空じゃなければ真(True)である」→「ボタンが押されたら真(True)である」ということになります。「""」は空=何も無い。ということを意味します。!を使用するので、空を否定(空じゃない)ということになります。ちょっとわかりづらいとは思いますがよく使いますので理解しておきましょう。その他の論理演算子を載せておきます。
論理演算子