
CGIを改造中です。
フォーム部分なのですが、十数項目あるものをドロップダウンリストで選択してもらうようにしたいです。
新規入力フォームは何も考える必要はないと思うのですが、問題は修正画面です。以前選択したものに「selected」を付ける必要がありますよね。
素人考えでは、
if($cou1 eq "項目1"){$selected1="selected";}
if($cou1 eq "項目2"){$selected1="selected";}
if($cou1 eq "項目3"){$selected1="selected";}
~~
として、
<option value=項目1 $selected1>項目1
<option value=項目2 $selected1>項目2
<option value=項目3 $selected1>項目3
~~
と、えんえん書き続けないといけない方法しか思いつきません。
これをどうにかして簡素に書く方法はないでしょうか?
お願いします。
No.1ベストアンサー
- 回答日時:
効率いいかどうか微妙だけど、こんな風でどうでしょう?
$cou1 = 'bbb';#前回選択値
foreach (['項目1','aaa'],['項目2','bbb'],['項目3','ccc']){
print '<option value="',$_->[1],'"',($cou1 eq $_->[1])?' selected':'','>',$_->[0],"\n";
}
# ↓ 実行結果
<option value="aaa">項目1
<option value="bbb" selected>項目2
<option value="ccc">項目3
No.3
- 回答日時:
use CGI;
use HTML::FillInForm;
my $q = new CGI;
# 初期値設定
$q->{"menu"} ||= "項目2";
$html = <<"HTML";
<form action="" method="POST">
<select name="menu">
<option value="項目1">項目1</option>
<option value="項目2">項目2</option>
<option value="項目3">項目3</option>
</select>
<input type="submit" />
</form>
HTML
my $fif = new HTML::FillInForm;
my $output = $fif->fill(scalarref => \$html,
fdat => $q);
print "Content-type: text/html\n\n";
print $output;
No.2
- 回答日時:
ん~、ちょっと面倒なのはこんな感じ。
(データは$cou1に入っていると仮定。)$sel{"$cou1"}=" selected";#selectedの前にスペースあり。こちらの方が空白+変数よりも、空白表示が綺麗。
<select name="cou1">
<option value="1"$sel{"1"}>項目1</option>
<option value="2"$sel{"2"}>項目2</option>
…
<option value="同じ"$sel{"同じ"}>項目名</option>
</select>
ハッシュを一つだけ作り、それに該当するキーを持つ変数だけ、selectedを代入します。(その他変数は存在しない。)
データに2が入っているのなら、$sel{"2"}=" selected";が作られ、$sel{"その他"}は存在しない=空白です。
基本的考え方はmaster-3rdさんと同じです。ただ、if文などを使わず、変数を一つしか作らないと言う部分が異なるだけですね。
しかし、こういうのはsteel_grayさんの、<option>をループで自動生成し、その途中で、フォームデータと値が同じならselectedを出力する、と言うのが技術的にも感覚的にも、一番楽かなと思います。ただ、HTMLを固定して出力したいなら、今回のようにハッシュを使うのも手です。
ついでに、<option>は閉じて、値は""で挟む方がいいと思いますよ。区切りがついて分かりやすいですし。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) ExcelVBAでユーザーフォームでテキストボックスなどからセルに連続して入力するコーディングの際の 2 2022/06/29 22:51
- Visual Basic(VBA) VBA エクセル 条件の設定 1 2022/03/28 10:24
- Excel(エクセル) Formulaプロパティーを使ってセルに数式を組んだのですが簡潔にしたい。 3 2022/08/21 20:51
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブル内でドロップダウンメ...
-
セレクトボックスの「選択して...
-
フリーのカートCGIを基にカスタ...
-
メールフォームでプルダウンの...
-
html select optionが左寄せに...
-
ホームページでBGM
-
Application.ScreenUpdating = ...
-
年・月・日の3つのselectメニュ...
-
日付をファイルの名前にするには?
-
メモリをアドレスを直接指定し...
-
PHPのstrtotimeのようなものあ...
-
ホストの表示など
-
10進数→2進数
-
配列 各項目を$n倍するプログ...
-
Requireできない...
-
JSONで文字列が長い時
-
HTML内での分岐
-
pythonの*
-
スキン式掲示板のしくみ
-
definedはどんな時に使う?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セレクトメニューで2つの項目...
-
文字の横にプルダウンを表示さ...
-
<SELECT>タグの折り返し
-
複数列を持ったリストボックス...
-
テーブル内でドロップダウンメ...
-
セレクトボックスのselected属...
-
SELECT要素の垂直位置
-
プルダウンメニューがプルアップに
-
プルダウンリストの背景色の指定
-
optionのselectedは更新時は効...
-
selectタグ内の特定のoptionの...
-
セレクトボックスの「選択して...
-
セレクトボックスの内容を中央寄せ
-
html select optionが左寄せに...
-
SELECT OPTIONの中身をコピペ...
-
プルダウンメニューで中央表示
-
プルダウンメニューの幅
-
プルダウンで別項目に値を代入...
-
プルダウンを外部リンクする
-
セレクトボックスの中を一部隠...
おすすめ情報