• ベストアンサー

HTML入力フォームの保存

HTMLで入力フォームを作った時にチェックボックスにチェックを入れ送信した後に、またそのHTMLのアンケートフォームを開いた時に初期値として前回送信したチェックが入っているようなプログラムを書きたいのですが、どうすればいいのかわかりません。Perlやhtmlで書きたいと思っているのですが書けますか?? どなたか教えてください!!

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

1) フォームのパラメータを何かに保存 2) 保存したものを読み出す 3) フォームのパラメータのデフォルト値としてセット すればOKです。 モジュールを使っていいなら、例えば以下のようになります。アカウント管理していないことと、表示がくずれるので空白2文字を全角空白で書いていることに注意。 #!/usr/bin/perl -T use strict; use warnings; use utf8; use CGI; use CGI::Carp qw(fatalsToBrowser); use CGI::Pretty; use HTML::FillInForm; use Storable qw(nstore retrieve); use constant QUERY_FILE => './serialize.dat'; my $q = CGI->new(); my $html = do { local $/ = undef; <DATA> }; my $output; my $sended = $q->param('send'); if ( defined $sended ) {   nstore( $q, QUERY_FILE ) || die QUERY_FILE;   $output = HTML::FillInForm->fill( \$html, $q, target => 'form1' )     || die "$!"; } elsif ( -r QUERY_FILE ) {   my $saved_query = retrieve(QUERY_FILE) || die QUERY_FILE;   $output     = HTML::FillInForm->fill( \$html, $saved_query, target => 'form1' )     || die "$!"; } else {   $output = $html; } print $q->header( -charset => 'UTF-8' ), $output; __DATA__ <!DOCTYPE html   PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja-JP" xml:lang="ja-JP">  <head>   <title>Test HTML::FillInForm</title>   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  </head>  <body bgcolor="#ffffff">   <form name="form1" method="POST">     Name : <input type="text" name="url" />     <br />     <input type="radio" name="look_behind" value="A" checked="checked" />Value A     <input type="radio" name="look_behind" value="B" />Value B     <input type="radio" name="look_behind" value="C" />Value C     <br />     <input type="checkbox" name="checkbox1" value="ON" lablel="checkbox_label" />checkbox1     <input type="checkbox" name="checkbox2" value="ON" lablel="checkbox_label" />checkbox2     <br />     <select name="select1">      <option value="option1">option1</option>      <option value="option2">option2</option>      <option value="option3">option3</option>     </select>     <br />     <input type="submit" name="send" value="send" />   </form>  </body> </html>

endo891113
質問者

お礼

ありがとうございます。試してみます!

関連するQ&A

専門家に質問してみよう