Dreamweaver TechniqueJAVA Script サンプル | CSS sample | JAVA Applet sample | Flash Sample
HTML4.0 reference | DynamicHTMLXHTML | XML sample | XSLT sample | RIKO's ASP Trial
ASP ADO リファレンス | PHP関数リファレンス | MySQL関数リファレンス

CGIアンケートプログラムの作成

まず、Flashから送られたデータをもとにアンケート集計を行うCGIプログラムを作ります。

■ CGIアンケートプログラムの作成

CGIのアンケートプログラムは、以下のようになります。


enqdata.cgi

1

#!/usr/local/bin/perl
2
 
3
#----- アンケートデータファイル
4
$logfile = "./enqdata.dat";
5
 
6
#----- データの値の読み込み
7
if ($ENV{'REQUEST_METHOD'} eq "POST") {
8
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
9
}
10
if ($ENV{'REQUEST_METHOD'} eq "GET") {
11
$buffer = $ENV{'QUERY_STRING'};
12
}
13
$selectNum = -1;
14
@getlist = split(/&/,$buffer);
15
foreach(@getlist) {
16
($key,$value) = split(/=/,$_);
17
if ($key eq 'selectdata') {
18
$selectNum = $value;
19
}
20
}
21
 
22
#----- アンケートデータファイルの読み込み
23
$count = 0;
24
open(IN, "$logfile");
25
while(<IN>) {
26
$data = $_;
27
chomp($data);
28
if ($count == $selectNum) {
29
$data++;
30
}
31
$enqdata[$count] = $data;
32
$count++;
33
}
34
close(IN);
35
 
36
#----- データをFlashへ送る
37
print "Content-type: text/plain\n\n";
38
 
39
for ($cnt = 0; $cnt < $count ; $cnt++) {
40
print "dat$cnt=$enqdata[$cnt]&";
41
}
42
 
43
#----- データの書き換え
44
open(OUT,">$logfile");
45
for ($cnt = 0; $cnt < $count ; $cnt++) {
46
print OUT "$enqdata[$cnt]\n";
47
}
48
close(OUT);
49
exit;

1行目:Perlプログラムの最初に必要な行です。

4行目:アンケートデータのファイル名「./enqdata.dat」を$logfileという変数に格納しておきます。

7〜12行目:Flashからのデータ読み込みを行います。
       $logfileのファイルを開き、$buferという変数に読み込みますが、GETで送られてきてもPOSTで送られてきても、読み込めるようにしています。

13行目:訪問者が選択した項目の番号$selectNumの初期値として-1を入れておきます。もし訪問者がアンケートに答えず選択項目がない場合は-1になります。

14〜20行目:Flashからのデータ$bufferを分解して、「selectdata」という変数名で送られてきたデータがあれば、$selectNumにその値を代入します。

23〜34行目:アンケートデータファイルからデータを1行ずつ読み込み、出力用のデータ$enqdataの配列に1つずつ代入していきます。

26行目:$logfileから読み込んだ1行のデータは「$_」という変数に入っていますので、これを$data変数に代入します。

open (IN, ファイル名);
   while(<IN>){
   読み込んだ1行のデータ = $_ ;
}

27行目:1行のデータを読み込んだら最後に改行データが付いてくるので。chomp関数で改行を削除します。

chomp (最後の改行を削除する文字列) ;

28行目:項目のインデックス$countとFlashで選択された項目の番号$selectNumとが同じであれば、そのデータのカウント$dataを1行増やします。

37〜41行目:アンケート集計の結果を、Flashの変数として渡せるフォーマットにして送ります。「data0 = データ0 & data1 = データ1・・・・・・」というフォーマットで送られます。

44〜48行目:アンケート集計の結果を、$logfileに書き出して保存します。

<<<戻る

Shirley's i-box | Shirley's little-box | Dreamweaver Technique | JAVA Script sample | CSS sample | JAVA Applet sample