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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セレクトメニューで2つの項目...
-
複数列を持ったリストボックス...
-
【プルダウンで選んでGOボタン...
-
同じものを繰り返し表示させる
-
文字の横にプルダウンを表示さ...
-
セレクトボックスの内容を中央寄せ
-
テーブル内でドロップダウンメ...
-
SELECT要素の垂直位置
-
プルダウンメニューで中央表示
-
ドロップダウンリストのselecte...
-
<SELECT>タグの折り返し
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
formで特定のinputを送信しない...
-
VB6で、長い時間かかる処理...
-
sendmailで複数の宛先にメール...
-
実行中の変数の中身をイミディ...
-
ACCESS テキストボックスを隙...
-
c言語 16進数の2進数への変換
-
[python] 文字列を変数名として...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セレクトメニューで2つの項目...
-
<SELECT>タグの折り返し
-
文字の横にプルダウンを表示さ...
-
テーブル内でドロップダウンメ...
-
セレクトボックスのselected属...
-
複数列を持ったリストボックス...
-
セレクトボックスから別窓にジ...
-
SELECT OPTIONの中身をコピペ...
-
optionのselectedは更新時は効...
-
ドロップダウンリストのselecte...
-
セレクトメニューで選んだ値を...
-
セレクトボックスの中を一部隠...
-
SELECT要素の垂直位置
-
セレクトボックスを非表示にし...
-
プルダウンリストの背景色の指定
-
セレクトボックスの内容を中央寄せ
-
select や option のCSS設定
-
【プルダウンで選んでGOボタン...
-
プルダウンメニューのボタンの...
-
HTML プルダウン
おすすめ情報