#!/usr/local/bin/perl # WebAN v3.3 is Free. # # Scripts Found at: http://www.rescue.ne.jp/ # History # v3.2 29-Aug-98 浮動小数点(小数点1桁固定小数点形式)処理 # v3.3 23-Dec-99 西暦2000年対応 #----------------# # 初期設定 # #----------------# # 日本語コード変換ライブラリの指定(別に用意します) require './jcode.pl'; # タイトル $title = "アンケート集計結果"; # 設置したURL $cgi = 'http://設置したURL/'; # 内容が書き込まれる記録ファイルのパスを設定 # (このCGIと同じディレクトリに設置する場合は、'./an.dat'でよい) $file = './an.dat'; # 書き込み件数の最大登録数の設定です。この件数を超えると、古いものから削除されていきます。 # これを'0'に設定すれば記録され続けます。 $max = '1000'; # グラフの「+」印は割合に応じた数だけ表示されますが、例えば90%の場合には90個 # 表示されてしまいます。次の値を 2 にすれば45個、3 にすれば30個、という様に # 個数を次の値で割った数だけ表示されます。 $gyao = "3"; ########################################################################################### ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); # 2000年対応 $year += 1900; # 時分秒を2桁に統一する処理 if ($sec < 10) { $sec = "0$sec"; } if ($min < 10) { $min = "0$min"; } if ($hour < 10) { $hour = "0$hour"; } # 上記の$monには0から11までの数字が入るので修正処理 $month = ($mon + 1); if ($month < 10) { $month = "0$month"; } # 時刻フォーマット $date = "$hour\:$min\:$sec $month\:$mday\:$year"; $date_now = "$year年$month月$mday日 $hour時$min分$sec秒"; # フォーム入力されたデータを$bufferに格納する # getかpostかによって取得方法が異なる if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } ®ist; &html; sub html { $accesses = @lines; if ($lines[($accesses - 1)] =~ /(.*)\,(.*)/) { $first_date = $1; ($clock,$day) = split(/ /,$first_date); ($hour,$minute,$second) = split(/:/,$clock); ($month,$mday,$year) = split(/:/,$day); if ($year < 100) { $year += 1900; } $first_date = "$year年$month月$mday日 $hour時$minute分"; } if ($lines[0] =~ /(.*)\,(.*)/) { $last_date = $1; ($clock,$day) = split(/ /,$last_date); ($hour,$minute,$second) = split(/:/,$clock); ($month,$mday,$year) = split(/:/,$day); if ($year < 100) { $year += 1900; } $last_date = "$year年$month月$mday日 $hour時$minute分"; } foreach $line (@lines) { ($dummy,$an) = split(/\,/,$line); push(@AN, $an); } foreach (@AN) { $ans{($_)[0]}++; $j++; } print "Content-type: text/html\n\n"; print "
\n"; print "
\n"; print "回答数:$j
\n"; print "
選択回答名 | 回答数 | 割合 | 割合の目安 |
---|---|---|---|
$_ | $ans{$_} | $percent_ans\% | $kome | \n";
print "
\n"; if ($tnx eq "1") { print "
' . "\n"; exit; } sub wcheck { #(簡易)複数回投稿防止処理 @pairs = split(/;/,$ENV{'HTTP_COOKIE'}); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ s/ //g; $COOKIE{$name} = $value; } if ($COOKIE{$cgi} eq 'repost_check') { &error('複数投票できません','あなたは既に投票されました.'); } print "Set-Cookie: $cgi=repost_check;\n"; }