しあわせのツボさん、今回も早々にご返信いただきまして、誠にありがとうございます。感謝致します。
詳しい説明ができず、困惑させてしまって大変失礼しました。
現在作成しているWEBからの入力フォームのデータにつきまして、最初私は、WEBの入力フォーム→CGIでのデコード→WEBでの確認画面→確認後ボタンによりCSVに登録という流れを考え、
ファイル間のデータの流れとしてはWEB入力フォームhtmlファイル→CGIファイル→確認用htmlファイル→(CSVファイル)を考えていました。
そのため、前回の質問でCGIファイルから別個の確認用htmlファイルを開く方法を尋ねさせていただきました。
しかし、その後本等を見たところ、CGIファイルにhtmlタグを書き込むことによって開くことが一般的であることが分かり、そのようにしました。
#教えていただいたにもかかわらず、大変申し訳ございません。
その結果、確認のWEB画面でデータは表示できました。この画面から、確認ボタンによってCSVファイルに書き込みをしたく、HTMLのformタグで設定をしたいのですが、うまくいきません。
WEB確認ページのformのinputで設定された"c1""OK"のデータを、その下のif文以下に続いていければと思うのですが、その場合のformの設定が分かりません。
再度で申し訳ございませんが、何かアドバイスをお願いできませんでしょうか?
その部分のPerlプログラムを示します。
# POSTメソッドかGETメソッドかによる処理
if( $ENV{'REQUEST_METHOD'} eq "POST" ) {
read( STDIN, $buffer, $ENV{'CONTENT_LENGTH'} );
} else {
$buffer = $ENV{'QUERY_STRING'};
}
@buf = split( /&/, $buffer );
# HTMLから渡された文字を処理して変数に代入する
foreach $data ( @buf ){
( $num, $val ) = split( /=/, $data );
$val =~ tr/+/ /;
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex( $1 ))/eg;
$personal{$num} = $val;
}
print <<EOT;
Content-type: text/html
#確認用WEBページ
<HTML><head><title>データ確認</title></head>
<body>
名 前=$personal{'a1'}<br>
性 別=$personal{'a2'}<br>
年 齢=$personal{'a3'}<br>
郵便番号=$personal{'a4'}<br>
住所(ご自宅)=$personal{'a5'}<br>
電話番号=$personal{'a6'}<br>
勤 務 先=$personal{'a7'}<br>
所 属=$personal{'a8'}<br>
役 職=$personal{'a9'}<br>
よろしければ”OK”を押してください。<br>データの修正を行いたい場合はブラウザの”戻る”ボタンにて、参加申し込みフォームに戻って修正を行ってください。<br>
<form action="">
<input type = "hidden" name = "c1" value="OK">
<input type="submit" value="確認">
</form>
</body>
</html>
EOT
#CSVへの書き出し
if ($personal{'c1'} eq OK){
to_csv();
close (FILE);
} else {
close (FILE);
}
#CSVファイルに出力するための関数
sub to_csv {
$file = "sheet.csv";
chomp ( $personal{'a1'} );
chomp ( $personal{'a2'} );
chomp ( $personal{'a3'} );
chomp ( $personal{'a4'} );
chomp ( $personal{'a5'} );
chomp ( $personal{'a6'} );
chomp ( $personal{'a7'} );
chomp ( $personal{'a8'} );
chomp ( $personal{'a9'} );
print FILE "$personal{'a1'}\t,$personal{'a2'}\t,$personal{'a3'}\t,$personal{'a4'}\t,$personal{'a5'}\t,$personal{'a6'}\t,$personal{'a7'}\t,$personal{'a8'}\t,$personal{'a9'}\n";
close (FILE);
}
おかしな部分が多々あり、見にくいと思いますが、私にとって本件が始めてのことなので、お許しください。
宜しくお願い致します。