トップへ
田村研究室

インターネット利用技術演習

2009年度

2009
7/13

CGIによる結果表示

集計結果の表示

アンケートの集計では,いつでも結果が表示できなければならない.集計作業を行うCGIの最後に結果を表示するだけではいけない.集計作業の後に結果を表示するだけでは,結果だけを見たい人がいたときに,またアンケートに回答しないといけなくなってしまう.

そのため,集計結果を表示だけのCGIを,集計作業のCGIとは別に用意しておくことになる.

集計作業のCGIでは集計結果をデータファイルに保存しているので,集計結果の表示用CGIではそのデータファイルの内容を読み出して表示すればよい.具体的にはcatコマンドを使って,データファイルの中身を表示することができる.

cat データファイル名

ただし,記述項目の記録ファイルを表示するときには,二つの点に注意すること.

  • HTML形式において複数行にわたるデータを表示させるには,<pre>タグで括ること
  • 日本語を含む場合,URLデコード処理を行うこと

URLデコード処理は,下の例のご意見欄の部分のようにtrコマンドとnkfコマンドで行うことができる.

#!/bin/sh
echo "Content-type: text/html"
echo
echo "<html>"
echo "<body>"

echo "男性の数は"
cat 男性のカウントデータファイル
echo "人です<br>"

echo "女性の数は"
cat 女性のカウントデータファイル
echo "人です<br>"

echo "1月生まれの人の数は"
cat 1月のカウントデータファイル
echo "人です<br>"

省略

echo "12月生まれの人の数は"
cat 12月のカウントデータファイル
echo "人です<br>"

echo "ご意見欄に書かれた意見の一覧"
echo "<pre>"
cat 記述項目の記録ファイル|tr % = | nkf -emQ
echo "</pre>"

その他のアンケート項目の結果も同様に表示

echo "</body>"
echo "</html>"

これを結果表示用のCGIスクリプトとして保存し,自分のページからリンクをはればよい.

スクリプトファイル保存時の注意

このようにスクリプト内に日本語を含む場合には,文字コードはEUC-JP形式で保存することを忘れないように.そうしないとCGIとしてうまく動作しない.秀丸エディタを使用している人は,「名前を付けて保存」するときに「文字コード」を「日本語(EUC)」に,「改行コード」を「LF」と選択すればよい.

※このように保存したファイルは,Windows標準のメモ帳で開くと文字化けしたようになる.以後このファイルは秀丸でしか編集できなくなる点をよく覚えておくこと.