いつもお世話になっている者です。フォームメール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ランキング
-
perlで書いたcgiでsqliteの使い...
-
wordの数式について 定積分を書...
-
python subprocessに関する質問
-
cgiからsendmailを送信で文字化け
-
心理テストページをCGIで作りた...
-
hiddenで送ったデータの取り出し方
-
FORMのselectの選択肢を最初か...
-
Mechanizeにおけるボタンクリッ...
-
何故横ナビ主流?
-
perl/cgi リダイレクトができない
-
テキストBOXの縦幅を変えたい
-
CGI管理ページなどより背景画像...
-
横スクロールを縦スクロールに...
-
VBで表示したホームページの...
-
プルダウン&キーワードで
-
大和ネクスト銀行の銀行コード
-
select値をhiddenのvalueに渡し...
-
UTF-8で文字化けしないようにす...
-
htmlからパラメータで、cgiに渡...
-
ラジオボタンが両方とも選択で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SUN BBSの改造方法
-
CGIメールフォームの件名について
-
perlで書いたcgiでsqliteの使い...
-
CGI(Perl)内での必須項目チェ...
-
チェックボックスでのor検索
-
入力フォームに全角・半角スペ...
-
Windows7でVBScriptによるネッ...
-
tracert ができない原因
-
配列をグループ化して出力したい。
-
電話番号を読み込むプログラム...
-
JNAVIから提供されたメー...
-
日本語文字化け(GETメソッド?)
-
文字って数字で表現・・・
-
sendmail -fオプションの指定は...
-
【ASP.NET MVC】フォームヘルパ...
-
sendmailのメール送信ができま...
-
【CGI】画像の表示の仕方【Mini...
-
添付つきメールフォーム:「an ...
-
同じname属性の結果を1行にまと...
-
太郎を太と郎に分ける方法。
おすすめ情報