revTalk CGI 04: テキストを外部ファイルに書き出す
さらに外部ファイルを、ページ内に書き出す。INCLUDE コマンドについて
表示サンプル いたずら書きが多いので、一部の言葉やリンクは書き込みできないようにしてあります。
まずページを開いた時に、テキスト・エリア「writeText」とテキスト・ボックス「name」のチェックをして、テキスト・エリア「writeText」に何か書き込まれていたら、外部ファイル「simple4_writeText.txt」から始めの2行を取って、その前方にテキスト・エリア「writeText」とテキスト・ボックス「name」のデータを加えます。このサンプルの場合、ページを開いた時点で今までに書き込まれた3件を表記すると言う事で「get line 1 to 2 of url ("file:simple4_writeText.txt") 」としています。
<?rev
-- ページを開いた時、フォームのテキスト・エリア"writeText"と --
-- テキスト・ボック"name"に書き込みがあるか --
put $_GET["writeText"} into tData
put $_GET["name"} into tName
if tData <> empty then
-- テキスト・エリアに書き込みがあれば、外部ファイルから2行 IT に入れる --
get line 1 to 2 of url ("file:rev04_writeText.txt")
-- TABを書き込みのデリミタにして、外部ファイルを書き換える --
put tab & "Name: " && tName & " <br \>"& tData & \
"<br \><br \><hr>" &cr & it into url "file:simple4_writeText.txt"
end if
?>
ページトップに表示されるフォームは以下のようになります。
<!-- このファイル名は rev04_writeText.irev 。メソッドは GET -->
<form id="FormName" action="rev04_writeText.irev" method="GET" name="FormName" enctype="text/plain">
<!-- テキストエリアとインプットするテキストボックス、サブミットのボタン -->
<textarea name="writeText" rows="6" cols="80" /></textarea><br \><br \>
Name: <input name="name" type="text" />
<input type="submit" name="submit" value="Submit">
</form> <br><hr><br>
このフォームの内要を受けて、フォームの下に過去の3件の書き込みを revTalk で書きます。
<?rev
-- 外部ファイルからテキストデータを得る --
get url ("file:simple4_writeText.txt")
if it<> empty then
-- テキストデータの改行を、HTML用に書き換える --
replace cr with "<br \>" in it
-- テキストデータの、各書き込みのデリミタ TAB にする --
set itemDel to tab
put empty into tNum
-- アイテム毎に文を揃えて、仕切り線を入れる --
repeat for each item tItem in it
if tNum <> empty then
put tNum&") " & tItem &"<br \>" after tOutput
end if
add 1 to tNum
end repeat
put tOutput
end if
?>
INCLUDE コマンドについて
04 から、表示サンプルのトップに「スクリプトを見る」を付けました。「スクリプトを見る」をクリックすると
<?rev include "include/script.irev" ?>
と言うrevTalk が書かれていて、「スクリプトを見る」があるファイルのソースが見えるようになっています。「include」は幾つもの共通するrevTalkスクリプトが書かれている書類を、ページにインポートするコマンドです。上記の意味は同じ階層にある「include」と言うディレクトリ(ファルダー)にある「script.irev」と言う書類をインポートしています。
「script.irev」にある「スクリプトを見る」のスクリプトは、
set itemDel to "/"
-- インポートした書類のファイル名を得る --
put item -1 of ($_SERVER[REQUEST_URI]) into tFilename
set itemDel to "="
-- $GET で受けたファイルと「script.irev」をインポートしたファイル名が同じであれば --
if $_GET["file"] is item -1 of tFilename then
put url ("file:" & item -1 of tFilename ) into tScript
-- スクリプトの "<" を html で読める "<" に差し替える --
replace "<" with "<" in tScript
-- スクリプトの ">" を html で読める ">" に差し替える --
replace ">" with ">" in tScript
put "<code><pre>"
put "<div class='body' >"
put tScript
put "</div>"
put "</pre></code>"
exit to top
end if