いつもお世話になっている者です。フォームメール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で質問しましょう!
似たような質問が見つかりました
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
入力フォームに全角・半角スペ...
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
チェックボックスとセレクトボ...
-
FORMのselectの選択肢を最初か...
-
hiddenで送ったデータの取り出し方
-
select値をhiddenのvalueに渡し...
-
INPUT TYPE
-
リストボックス(multipleなsel...
-
Lightboxの表示位置に関して質...
-
「value」に2つの値をセットす...
-
VB.net データーグリッドビュー...
-
チェックボックスで選択した内...
-
横スクロールを縦スクロールに...
-
VB初心者。小数点以下の表示で...
-
cgi(perl) sendmailの使い方
-
ある条件での必須入力について
-
別formのhidden項目を自form値...
-
チェックボックスの返す値
-
MSPゴシックで、一番幅を取る文字
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SUN BBSの改造方法
-
perlで書いたcgiでsqliteの使い...
-
tracert ができない原因
-
入力フォームに全角・半角スペ...
-
CGIメールフォームの件名について
-
Perlでuse socketを使用してフ...
-
CGI(Perl)内での必須項目チェ...
-
電話番号を読み込むプログラム...
-
Windows7でVBScriptによるネッ...
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
select値をhiddenのvalueに渡し...
-
「value」に2つの値をセットす...
-
チェックボックスの返す値
-
INPUT TYPE
-
WEBページを強制的に横画面で見...
-
[HTML]プルダウンメニューの横...
-
VB.net データーグリッドビュー...
-
別formのhidden項目を自form値...
-
FORMのselectの選択肢を最初か...
おすすめ情報