このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

集計スクリプトについて教えて下さい

発言者:浦田
( Date Wednesday, March 11, 1998 12:50:23 )


過去のログ(集計スクリプト Date Saturday, November 16, 1996 21:09:54)
を読み、また田中さんが作られていたoption.acgi.txtにいくつか変更を加えて
自作してみましたが(勝手に変更して申し訳ありません)まったく動きません
でした。基本的には、質問一つに対して、3つのラジオボタンに(-1/0/+1
のvalue値)を持たせて、Rec_File みたいなデータベースファイルに、1件
づつ記録していくようなものを作成したいと思っています。

またreturn で返すものは、「アンケートにご協力・・・」と「何人の目です」
というカウンタだけのものにしたいと思っています。

WWWで公開するのではなく、LAN上で(Web共有を使用しています)利用する
ための物です。

ご協力いただけますようよろしくお願いします。    浦田



田中求之 さんからのコメント
( Wednesday, March 11, 1998 14:07:52 )

スクリプトはサンプルとして公開しているものですので、どんどん勝手に手を入れて
使っていただけばよいのですが、

>まったく動きません
>でした。

と言われても、なんとも答えようがありません。

スクリプトをどのように変更なさって、どのようなエラーが出ているのか、など
詳しい状況を教えてください。

浦田 さんからのコメント
( Wednesday, March 11, 1998 15:38:49 )

早速、ご回答いただきありがとうございます。
先程は、説明不足でもうしわけありませんでした。

さて、質問項目はもっとたくさんあるのですが(あと10項目ほど)、<FORM>の参考例を下記しています。
基本的には、ラジオボタンで構成されていますが、テキストボックスに入力させる項目もあります。

☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
<HTML>
<BODY>
<FORM action="form.acgi" method="POST">

<BR>
  <INPUT TYPE="radio" NAME="f001_a"VALUE="-1">: もう少し<BR>
  <INPUT TYPE="radio" NAME="f001_a"VALUE="0">: そのままでよい(適切である)<BR>
  <INPUT TYPE="radio" NAME="f001_a"VALUE="+1">: もっとがんばろう<BR>
<BR>
  <INPUT TYPE="radio" NAME="f001_b"VALUE="-1">: もう少し<BR>
    <INPUT TYPE="radio" NAME="f001_b"VALUE="0">: そのままでよい(適切である)<BR>
  <INPUT TYPE="radio" NAME="f001_b"VALUE="+1">: もっとがんばろう<BR>
<BR>
  <INPUT TYPE="radio" NAME="f002_a"VALUE="-1">: 理解できない(もっと具体的に)<BR>
  <INPUT TYPE="radio" NAME="f002_a"VALUE="0">: そのままでよい(適切である)<BR>
  <INPUT TYPE="radio" NAME="f002_a"VALUE="+1">: 理解できるが、もっと理解したい<BR>

  ちなみにどこが理解できませんか:
  <INPUT TYPE="text"NAME="f002_atxt" VALUE="" SIZE=55 MAXLENGTH=100><BR>
<BR>
<INPUT TYPE="submit" NAME="送信"VALUE="Send">  <INPUT TYPE="reset" VALUE="Reset">
</FORM>
</BODY>
</HTML>
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆


次に form.acgi のほうですが、田中さんの option から修正を加えたところを記します。
  << ※set myList to DecodeJArgs post_args までは何も変更していません >>

#1 set dx to (item 1 of myList) as integer

  ---------変更--------
   set di to (item 1 of myList) an integer  

   項目が多かったので、i から始めました。ちなみに i 〜 w まであります。


#2 if myRec="" then
     set f001_a_list to {"0","0","0"}

   ---------変更--------
   if myRec="" then
     set f001_a_list to {"0","0","0"}
      
   ここは、<FORM>・・・</FORM> の NAME を尊重して、f001_a と変更しました。
   この箇所っていうのは rec_file に初期値がない場合の設定をされているのですか?
   
#3 else 以下に関しては、option.acgi をみながら、整合するように変更していきました。

#4  set my page to "<title>・・・</title>" & return
    に関しても、いまどれだけの値が集計されていることを知られはまずいので、アンケートに
    答えてくれた方の人数を表示するようにしています。


お願いばかりでもうしわけありませんが、rec_file の仕様として、次のように記録していくようにしたい
とおもっています。(たとえば、7件の回答を得られた場合)

          1   2   3   4   5   6   7

 f001_a  +1  -1   0  +1  -1  -1   0
 f001_b   0   0  -1  +1   0   0   0
 f002_a  +1  -1   0  +1  -1  -1   0
 f002_b   0  +1   0   0  +1   0  +1
 f003_a  +1  -1   0  +1  -1  -1   0
 f003_b  +1  -1   0  +1  -1  -1  -1
 
 ・・・・・・     <省略>
 
 f013_a  +1  -1   0  +1  -1  -1   0



このデータから、表計算ソフトなどに取り込んで、レーダーチャート?(昔のボキャブラの『ばかぱくの8』)
みたいなグラフにしたいと思っています。(ここもCGIでできればいいのですが?)

勝手なことばかり言いまして申し訳ありません。よろしくお願いします。

田中求之 さんからのコメント
( Saturday, March 14, 1998 17:20:00 )

1件ごとにレコードとして記録していくということは、集計を行う必要はないわけですね?
でしたら、単純に、デコードした結果をタブ区切りでつないでいって、ファイルに追記する
という処理ですみますよ。

ただし、自由記入欄があると、その部分がレコードの構造を壊してしまう(改行が
入っていた場合など)ので、1つのファイルにすべての記録をとるのではなく、
1件ごとに1ファイルの形でデータを保存しておき、あとで解析を行うときに
まとめて読み込んで処理を行うようにすればよいと思います。

opinions は、過去の投稿の集計を見せるために、ちょいと面倒な処理を行っている
のですが、集計を行う必要がないのなら、CGI 自体は非常に単純な処理で済みます。

浦田 さんからのコメント
( Thursday, March 26, 1998 17:05:36 )

コメント頂きありがとうございました。お礼が遅くなって申し訳ありません。
とりあえず集計する部分と自由記入欄を別々にしました。こちらの方が集計
用の rec_file もサイズが大きくならないので好都合だったようです。集計
に関しては、option.acgi の項目だけを多くし、またvalue値の属性につい
ては、red_file の集計値に、後から -1、0 、+1 を掛けて処理しました。
ただ、rec_file がテキストファイルだったために、そのあとクラリスワー
クスの表計算にデータを渡したりするところが手作業でしたので、初めから
rec_file をスプレッドシート(?)にして、やりたいとおもっています。
この場合、MacPower の97年2月号に紹介されていたファイルメーカー
を利用した booklist.acgi の場合と同様の処理を行えば良いのでしょうか?
といっても、初心者なのでどこをどのように変更するのか検討がつきません
xxx.htmlの<form>の書式と、xxx.acgi.txt の処理のどこか?を変更すれば
できますか?

このたびはいろいろと教えていただき、ありがとうございました。しかし、
マックのWeb共有機能って便利ですね。

浦田