
いつもお世話になっている者です。フォームメールCGIで行き詰っております。
push(@DATA_KS,$name);
push(@DATA_VS,$value);
としてHTML側のname属性を@DATA_KSに、valueの値を@DATA_VSに代入しています。
<table border=0 cellpadding=3 cellspacing=1 bgcolor="#ffffff">
<tr><td bgcolor="#ff8000"><b><font size=+1>項目</font></b></td><td bgcolor="#ff8000"><b><font size=+1>内容</font></b></td></tr>
EOF
$count = @DATA_KS;
foreach (0..$count-1) {
print "<input type=hidden name=\"$DATA_KS[($_)]\" value=\"$DATA_VS[($_)]\">\n";
if ($DATA_VS[($_)] eq '') {}
else { print "<td bgcolor=\"#009900\">$DATA_KS[($_)]</td>\n"; }
if ($DATA_VS[($_)] eq '') {}
else { print "<td bgcolor=\"#ffffff\">$DATA_VS[($_)]</td>\n"; }
print "</td></tr>\n";
}
これで 項目 内容 が1セットで横並びになり項目の数だけ下に続き、値の無い項目は表示されない。というところまでは出来たのですが
さらに「name属性が同じ場合はvalueの値をカンマで区切ってヨコに並べる」ということがしたいのですが方法が分かりません。何卒宜しくお願いします。
例:
○(希望表示方法)
好きな食べ物 りんご,ハチミツ,カレー
×
好きな食べ物 りんご
好きな食べ物 ハチミツ
好きな食べ物 カレー
No.1ベストアンサー
- 回答日時:
ご質問中のコードは抜粋されたもののようですので、的を射たお答えになっているか自身がないのですが、まず
> push(@DATA_KS,$name);
> push(@DATA_VS,$value);
のように$nameと$valueを別管理するのではなく、$nameと$valueのハッシュにまとめてしまうことをおすすめします。
具体的には
my %DATA_VS;
while ($nameと$valueのループ?) {
push @DATA_KS, $name;
$DATA_VS{$name} = [] if not exists $DATA_VS{$name};
push @{$DATA_VS{$name}}, $value;
}
のように $DATA_VS{$name}=[値, 値, ...] とまとめたのち、
for my $name (@DATA_KS) {
for my $value (@{$DATA_VS{$name}}) {
print qq{<input type=hidden name="$name" value="$value" />\n};
}
}
や
for my $name (@DATA_KS) {
print qq{<tr>},
qq{<td bgcolor="#009900">$name</td>},
qq{<td bgcolor="#ffffff">}, join(',', @{$DATA_VS{$name}}), qq{</td>},
qq{</tr>\n};
}
などのようにしてみてはいかがでしょう。
なお上記では、($DATA_VS[($_)] eq '') のような空文字チェックやHTMLエンコード処理などを省略していますので、適宜読み替えてください。
(というか、上記のコードは即興で書いたもので一度もテストしていませんので、バグどころか文法エラーがあるかもしれません・・・笑)
それでは、ご検討ください。
早速の返答ありがとうございます。
ハッシュにまとめる方法で書き直したところうまく表示出来ました!
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームを再送信しますか?
-
ChatGPT
-
チェックボックスでのvalue値の...
-
ChatGPTの性能は昔に比べて上が...
-
apacheでPerl CGIが作動せず、5...
-
エクセルで集計したい。
-
chatGPTみたいに画像生成出来る...
-
iDeCo
-
皆さんはGUCCIはハイブランドだ...
-
cgi-binのエラー?
-
Trees掲示板CGI(CGI-Resque氏...
-
めちゃきれい
-
number 改行が追加できない
-
生成AI画像について
-
3DCG
-
ホームページにメールフォーム...
-
cgi アクセス制限 エラー
-
CGIの記述について教えてくださ...
-
CGIの設置が分かりません・・・
-
ホームページにCGIを設置したの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SUN BBSの改造方法
-
tracert ができない原因
-
CGI上にBASIC認証のIDを表示さ...
-
perlで書いたcgiでsqliteの使い...
-
【ASP.NET MVC】フォームヘルパ...
-
【CGI】画像の表示の仕方【Mini...
-
チェックボックスでのor検索
-
Windows7でVBScriptによるネッ...
-
Perlでuse socketを使用してフ...
-
入力フォームに全角・半角スペ...
-
wordの数式について 定積分を書...
-
掲示板(kentさんの所のsunbbs...
-
ラジオボタンが両方とも選択で...
-
「value」に2つの値をセットす...
-
チェックボックスの返す値
-
[HTML]プルダウンメニューの横...
-
WEBページを強制的に横画面で見...
-
FORMのselectの選択肢を最初か...
-
VB.net データーグリッドビュー...
-
MSPゴシックで、一番幅を取る文字
おすすめ情報