• 締切済み

アンケートをCSVに落とした時の並び順

以下のHTMLのようなアンケートフォームを作っています. CSVに落とした時の並びを変えたいのですが,どなたかお知恵を貸していただけませんでしょうか. 記事1~3,それぞれのランクA~Eを選んだ後,BestとWorstを決定するものです. 今の状態だとCSVには,「name=○」の順番でいうと↓このように並びます. 記事10-1 11Best 12Worst 記事10-2 記事10-3 11-1 11-2 12-1 12-2 これを↓このように並んでCSVに落としたいのです. 記事10-1 記事10-2 記事10-3 11Best 11-1 11-2 12Worst 12-1 12-2 <table> <tr><td colspan="3" valign="top">記事1</td></tr> <tr> <td valign="top"> <label for='1_1'>  <input type=radio name="記事10-1" value="a" id='1_1'>A</label> <label for='1_2'><input type=radio name="記事10-1" value="b" id='1_2'>B</label> <label for='1_3'><input type=radio name="記事10-1" value="c" id='1_3'>C</label> <label for='1_4'><input type=radio name="記事10-1" value="d" id='1_4'>D</label> <label for='1_5'><input type=radio name="記事10-1" value="e" id='1_5' checked>E</label> </td> <td align="center" valign="top"><input type=radio name="11Best" value="1"></td> <td align="center" valign="top"><input type=radio name="12Worst" value="1"></td> </tr> <tr><td colspan="3" valign="top">記事2</td></tr> <tr> <td valign="top"> <label for='2_1'>  <input type=radio name="記事10-2" value="a" id='1_1'>A</label> <label for='2_2'><input type=radio name="記事10-2" value="b" id='2_2'>B</label> <label for='2_3'><input type=radio name="記事10-2" value="c" id='2_3'>C</label> <label for='2_4'><input type=radio name="記事10-2" value="d" id='2_4'>D</label> <label for='2_5'><input type=radio name="記事10-2" value="e" id='2_5' checked>E</label> </td> <td align="center" valign="top"><input type=radio name="11Best" value="2"></td> <td align="center" valign="top"><input type=radio name="12Worst" value="2"></td> </tr> <tr><td colspan="3" valign="top">記事3</td></tr> <tr> <td valign="top"> <label for='3_1'>  <input type=radio name="記事10-3" value="a" id='1_1'>A</label> <label for='3_2'><input type=radio name="記事10-3" value="b" id='3_2'>B</label> <label for='3_3'><input type=radio name="記事10-3" value="c" id='3_3'>C</label> <label for='3_4'><input type=radio name="記事10-3" value="d" id='3_4'>D</label> <label for='3_5'><input type=radio name="記事10-3" value="e" id='3_5' checked>E</label> </td> <td align="center" valign="top"><input type=radio name="11Best" value="3"></td> <td align="center" valign="top"><input type=radio name="12Worst" value="3"></td> </tr> </table> <table> <tr><td valign="top">[11-1]Bestについて1</td></tr> <tr><td valign="top"><input name="11-1" type="text" value="" title="Best" size="100"></td></tr> <tr><td valign="top">[11-2]Bestについて2</td></tr> <tr> <td valign="top"> <label for='11_2a'> <input type=radio name="11-2" value="a" id='11_2a'>BestA</label> <label for='11_2b'><input type=radio name="11-2" value="b" id='11_2b'>BestB</label> </td> </tr> <tr><td valign="top">[12-1]Worstについて1</td></tr> <tr><td valign="top"><input name="12-1" type="text" value="" title="Worst" size="100"></td></tr> <tr><td valign="top">[12-2]Worstについて2</td></tr> <tr> <td valign="top"> <label for='12_2a'> <input type=radio name="12-2" value="a" id='12_2a'>WorstA</label> <label for='12_2b'><input type=radio name="12-2" value="b" id='11_2b'>WorstB</label> </td> </tr> このHTML内なのか,cgi内なのか,どこでどのように設定したらよいでしょうか. 例えば,「name="11Best"」を「name="11-0"」にすればよいとか,そのくらいで並びが変わったり・・・しませんよね. 質問もつたなくうまくお伝えできるか分かりませんが,アドバイスいただけると大変助かります. なにとぞよろしくお願いいたします.

みんなの回答

回答No.2

時間が経ってますが。 >No.1補足 肝心のデータを生成する部分やファイルに保存している部分が書かれていないようですが?

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

CGI(PHP?)で対応できそうですが、肝心のCGIについてなにも触れられていないので 「できそう」としか回答しようがありません

tapchibo
質問者

お礼

お待たせしましてすみません.このあたりでなんとかなるでしょうか. cgiに関しては全くわかりませんので,アドバイスいただけないでしょうか. なにとぞよろしくお願いいたします. # CSVに登録 elsif($mode eq 'regist') { html_set_form(\@http_body); # html form を 解析 # 入力確認 if(!CSVFORM_VALIDATE::validate(find_form('csv_form'), \&get_param)) { print_inputform();# 再入力画面 } else { #CSVに登録 $err_msg = regist_csv(); print_error() if($err_msg ne ""); } } # # CSVへ登録 # sub regist_csv { # HTMLファイル名からCSVファイル名を取得 my $csv_filename = create_csv_filename(); # CSVのカラムをformから取得 my @colmns = get_form_element_names((find_form('csv_form'))[0]); @colmns = CSVFORM_CSV::create_columns(@colmns); # CSVへ追加 my @data; my $csv_charset = ($CSV_CHARSET ne $html_charset)?$CSV_CHARSET:undef; my $err = CSVFORM_CSV::regist($csv_filename, \@colmns, \@data, \&get_param, $csv_charset, $DEBUG); return $err if($err ne ""); # 追加されたCSVのデータを加工(通知メールでダブルクォートを表示しないため) foreach my $d (@data) { $d =~ s/(^")|("$)//g; #先頭と最後のダブルクォートを消す $d =~ s/""/"/g; # 2重のダブルクォートを一つに } # デバッグ用CSVのパラメタの文字列の作成 # sub debug_csv_param { my @keys = get_param_keys(); my %csv_param = (); foreach my $key (@keys) { # カラム名_カラム番号の形になっている場合 if($key =~ /^(.+)_(\d+)$/) { my @values = get_param($key); $csv_param{$key} = {'key' => $1, 'num' => $2, 'VALUE' =>\@values }; } } my $csv_param_str = qq{<div align='center'><b>CSV paramater</b></span>}; $csv_param_str .= qq{<table border='0' align='center' width='100%' cellpadding='0' cellspacing='1'>}; $csv_param_str .= qq{<tr>}; $csv_param_str .= qq{<th>key</th><th>num</th><th>value</th>}; $csv_param_str .= qq{</tr>}; foreach my $name (keys %csv_param) { my $key = escape_html($csv_param{$name}{'key'});$key =~ s/\r/\\r/g; $key =~ s/\n/\\n/g; my $num = escape_html($csv_param{$name}{'num'});$num =~ s/\r/\\r/g; $num =~ s/\n/\\n/g; my $value = $csv_param{$name}{'VALUE'}; map {s/(?:^")|(?:"$)//g; $_=escape_html($_); s/(?:\r\n)|[\r\n]/<br>/g;} @$value; $csv_param_str .= qq{<tr>}; $csv_param_str .= qq{<td>$key</td>}; $csv_param_str .= qq{<td>$num </td>}; $csv_param_str .= qq{<td>@$value</td>}; $csv_param_str .= qq{</tr>}; } $csv_param_str .= qq{</table>}; return $csv_param_str; }

tapchibo
質問者

補足

早速ありがとうございます! CGI見てみますのでまた後ほど教えていただけませんか. 少々お待ちください!

関連するQ&A