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 & " &nbsp; <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" />&nbsp;&nbsp;
  <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 で読める "&lt;" に差し替える --
  replace "<" with "&lt;" in tScript
  -- スクリプトの ">" を html で読める "&gt;" に差し替える --
  replace ">" with "&gt;" in tScript

  put "<code><pre>"
  put "<div class='body' >"
  put tScript
  put "</div>"
  put "</pre></code>"
  exit to top
end if