電子書籍の厳選無料作品が豊富!

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

A 回答 (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-transitio …
<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>
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/12/10 23:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!