- ベストアンサー
チェックボックスを使って条件検索
チェックボックスにチェックされたものについて、データベースで条件検索をしたいです。 形としては、チェックボックスで任意にチェックできて、最後に送信ボタンを押すと検索結果ページがでてくる仕組みにしたいです。 いちおうこうなってくれればいいんだけど、っていうのがあるんですけど、 例えば、 □goo をチェックすると http://www.abc.com/database.cgi?table=xx&search=goo のように語尾に&search=gooがくっついた形でリンクをさせたいです。 チェックが複数の場合は、 □goo □教えて □神様 だとすると、 http://www.abc.com/database.cgi?table=xx&search=goo,教えて,神様 のように,で区切ってリンクをさせたいです。 ちなみに、使ってるデータベースはHeRO DBです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
遅くなってすみません。 こんな感じでどうでしょうか? 3つともチェックを入れるとこうなります。 http://www.abc.com/database.cgi?table=xx&search=goo,教えて,神様 ちなみにJavascriptを使わず、ただsubmitするとこうなりました。(IE6) http://www.abc.com/database.cgi?table=xx&search=goo&search=%8B%B3%82%A6%82%C4&search=%90_%97l --------------------- <html> <head> <script> <!-- function test() { var param = ""; var f = document.forms[0]; var chk = f.search; if(chk) { if(chk.length) { // チェックボックスが複数のとき for(var i = 0 ; i < chk.length ; i++) { if(chk[i].checked == true) { if(param != "") { param += ","; } param += chk[i].value; } } } else { // チェックボックスが1つしかないとき if(chk.checked == true) { if(param != "") { param += ","; } param += chk.value; } } } // ページを飛ばす location.replace(f.action + "?table=xx&search=" + param); } //--> </script> </head> <body> <form action="http://www.abc.com/database.cgi" method="get"> <input type="hidden" name="table" value="xx"> <input type="checkbox" name="search" value="goo">goo<br> <input type="checkbox" name="search" value="教えて">教えて<br> <input type="checkbox" name="search" value="神様">神様<br> <input type="button" onclick="test()" value="click me"><br> <input type="submit" value="submit"> </form> </body> </html>
その他の回答 (2)
- osumitan
- ベストアンサー率33% (102/307)
送信ボタンをクリックしたときのJavscriptで チェックボックスのチェック状態を見ながら URL文字列にパラメータを付加していって そのURLに飛ばせばいいのではないでしょうか?
補足
私のしたいことはまさしくそれです。 ただ、URL文字列にパラメータを付加していって、というプログラムの書き方どうしてもわからないんです。 どのように書けばいいのか具体的に教えていただけないでしょうか?
- moon_night
- ベストアンサー率32% (598/1831)
Javascriptの問題ではないのですね。 で、 http://www.abc.com/database.cgi?table=xx&search=goo,教えて,神様 はHTMLの使用としては不可能です。 PerlとかPHPなどで加工すればできないことはないですが、加工するときは一旦受け取らなければいけないので、意味がありません。 (値を送信 -> スクリプトで処理 -> 結果表示 が本来の処理。 質問の処理では 値を送信 -> スクリプトで加工 -> 加工した値を送信 -> スクリプトで処理 -> 結果表示 と、工程が増えるだけ無駄です) 要するに処理するスクリプトの問題です。
お礼
この度はありがとうございました。 方法としてはいろいろなのもがあるのですね。 自分なりにあれこれ模索してみたいと思います。
お礼
ありがとうございました。大変参考になりました。 自分でも本やホームページを見ながらなんとかつくってみました。また、プログラミングに行き詰ったら質問にきたいと思います。この度は本当にありがとうございました。