プロが教える店舗&オフィスのセキュリティ対策術

HTML部分のみ変更可能なCGIの一部で
セレクトメニューをチェックボックスに変更出来ますか?
しても問題ないですか? 教えて下さい <(_ _)>

<select name="ken">
<option value="5"/?ken.5?/>5件</option>
<option value="10"/?ken.10?/>10件</option>
<option value="20"/?ken.20?/>20件</option>
</select>

A 回答 (6件)

 チェックボックスでも代用はできますが、フォームの名称を同じにした場合、CGI側でPOSTされたデータを受信するプログラムをしっかり作り込まないとANo.1さんのおっしゃるように上書きされて最後に代入された値のみが残ってしまうことになります。


 逆を言えば受信側のCGIでしっかり作り込んでいれば問題はありません。
 質問の例で全部にチェックが入った場合GETメソッド調に記述すると
?ken=5&ken=10&ken=20
 のように入ってきますのでこれをどう処理するかはCGI作者の仕様次第となります。
 ちなみにわたくしは、巷でよく行われるハッシュ代入の際に、同一のキーを持つものが有ればタブで区切ってデータ追記するようにしています。
    • good
    • 0
この回答へのお礼

えーと チェックボタンの場合は私には難しいですね・・・
radioボタンなら問題ないって事ですね?

お礼日時:2008/10/20 20:06

またまたまた失礼します。


前の回答で「なら」を2回繰り返しているミスに赤面しております。
フォームを強制的に設定したい場合の簡単なJavaScriptサンプルを以下に置いときます。
<html>
<head>
<title>TEST</title>
</head>
<script language="JavaScript">
<!--
function fInit(){
  // それぞれ2番目の要素を強制選択
document.f.S01[1].selected = true;
document.f.R01[1].checked = true;
}
//-->
</script>
<body onLoad="fInit()">
<form method="POST" action="test01.cgi" name="f">
<select size="1" name="S01">
<option value="AAAAA">AAAAA</option>
<option value="BBBBB">BBBBB</option>
<option value="CCCCC">CCCCC</option>
<option value="DDDDD">DDDDD</option>
</select><br>
<input type="radio" value="AAA" name="R01">A 
<input type="radio" name="R01" value="BBB">B 
<input type="radio" name="R01" value="CCC">C 
<input type="radio" name="R01" value="DDD">D
<br>
<input type="submit" value="送信" name="B1">
</form>
</body>
</html>
    • good
    • 0
この回答へのお礼

色々と詳しい説明、ありがとうございました。

お礼日時:2008/11/03 10:57

またまた失礼します。



元のフォームの表示がベタHTMLなのかCGIやPHPによるものなのか、またブラウザによって状況は変わってきますが
通常、HTML側にSELECTEDがあろうがCHECKEDがあろうが「次画面から戻るボタンによってフォームに戻って」くれば、入力時の値になると思います。
そうならないケースとして自分の知る範囲で以下のケースがあげられます(環境はいずれもWindows)。
 1.フォームHTML内でロード時にJavaScript等によってフォームの値が初期化される。
 2.ブラウザがIEならキャッシュファイルが壊れている。(キャッシュファイルを消せば正しくなる)
 3.FireFoxならおかしくなっているフォームの前に<span>タグなどでスタイルシートのクラスが指定されている。
 4.フォーム自体がサーバサイドのプログラムによって生成される。
といったところでしょうか
経験上、一番多いケースは「2」のIEのバグに起因するものです。
普通のエンドユーザならなら、大多数が確認などから戻ったときに再入力が面倒と感じるので、ブラウザ側では入力時の値をキープする仕様になっていると思います。
的外れな回答かもしれませんが…こんな回答で大丈夫でしょうか。
    • good
    • 0
この回答へのお礼

戻るとラジオボタンだけがキープされないです FireFox
NO6をやってみます。

お礼日時:2008/10/27 13:21

確認画面にしろ、エラー表示にしろ原理は同じ。


たとえば、この「おしえて」でも、確認画面のソースには、記入内容とは別に、「戻る」のフォームには、すべての記入内容がhiddenで書かれているのでは?(未確認)
 それを元に、記入フォーム自体もCGIから出力させればよいです。
ソースの中途にHTMLのソース書くのは面倒ですし、改造もしにくくなるので、状況により、
__END__
以降にソースを書いて<DATA>
あるいは、外部ソース
を呼び出して----Q1----、とか、---ckedc1---の部分を、送られてきたデータを使って書き直してます。
    • good
    • 0
この回答へのお礼

ちょっと難しそうですけど参考にさせていただきます

お礼日時:2008/10/27 13:14

 たびたび失礼いたします。


 takumana20様のスキルがわからないのでお礼のところで問われている部分についてはなんとも申し上げられないのですが
端的に言うと
 一項目しか選択できないセレクトメニュー = ラジオボタン
 複数項目選択できるセレクトメニュー(multiple) = チェックボックス
となります。
 CGIのカテなので「CGI側をどうにかしたい」のかと思ったのでそのつもりで回答したのですが、HTMLに関する質問だったのでしょうか?
    • good
    • 0
この回答へのお礼

質問がわかりにくくてすいません。。。えーと、
オプションをラジオに変更してみたら戻った時とか
戻り値がセレクトオプションなら固定でselectedになってたんですが
(CGIで何か細工をしてるのかな? 決定した値が反映されてるんです)
ラジオだと固定値checkedになんないんですよね。これが毎回チェックしなおすのも面倒だし
(そのスキルが無いんですw)困った・・・

お礼日時:2008/10/22 22:26

/?ken.5?/・・・ってなに?



 radioボタンでは代用可能です。
 checkだとnameを変えないと上書きされます。

この回答への補足

> /?ken.5?/・・・ってなに?
たぶんCGIの何かの指定です。たぶんこれが戻った時に決定した項目がselectedになると思います。
でもラジオボタンだと戻った時にチェックにcheckedにならないんです・・・
ラジオボタンにして、戻った時にも一度決定した項目がチェックされる方法があれば教えて下さい。

補足日時:2008/10/22 22:31
    • good
    • 0
この回答へのお礼

すいません<(_ _)>
radioボタンで作って1個だけ選択したいので大丈夫って事ですね。

お礼日時:2008/10/20 20:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!