• ベストアンサー

こんにちは。いつもお世話になります。

こんにちは。いつもお世話になります。 現在既存の検索フォーム(PHP)に項目を追加しています。 同じフォーム内に同じname値のセレクトボックスを複数作りたいと思っているのですが、一番後にあるセレクトボックスの値だけが適用されて他が無視されてしまいます。 ひとつのセレクトボックスにまとめることができないため複数設置したいのですが、何か方法はありませんでしょうか。 解決方法がPHPやjavascriptなのかもしれないのですが、検討がつかないためこちらで質問させていただきました。 お力をお貸しいただけましたら助かります。 よろしくお願いします。

  • HTML
  • 回答数3
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>残念ながらフォームはHTMLなのです ごめんなさい、おそらく誤解だと思うのですが命題が矛盾しています selectに任意のnameをつけることができるのですよね? であればhogeという名前をつけたいときにhoge[]という名前をつけるだけですよ それができないのであれば、逆に任意のnameがつけられないということですから nameが競合すること自体が発生しません。

sm080101
質問者

お礼

お礼が遅くなり、申し訳ありませんでした。 教えて下さった方法はHTMLのフォームのname値を変えればいい、ということだったでしょうか。 (書き忘れていましたが、フォームはHTMLでフォームのactionのリンク先がphpになっています) 変えてみたのですが、今度は何もヒットしなくなりました。 ちなみにname値はデータベースの変数(誤用だったらすみません)です。 同じ変数をname値にして、セレクトボックスを複数作りたいです。 説明不足が多い上に初心者の説明のため分かりにくいと思いますが、解決方法がありましたら教えて下さい。 よろしくお願いします。

sm080101
質問者

補足

補足から失礼します。 申し訳ありません! 「"hoge[]"」と言っていただいていたのを、「[]」をスペースをあらわす□だと思い込んでしまっていました。 「[]」にしたところ、無事にできました。 このたびは本当にありがとうございました。

その他の回答 (2)

  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.3

まず、selectのname=hogeを hoge_a、hoge_b、hoge_c などに分けてしまい、PHP側で、$_POST["hoge"]や$_GET["hoge"]で受け取っている部分を、 $hoge_all = $_POST["hoge_a"] . "と" . $_POST["hoge_a"] . "と" . $_POST["hoge_c"]; みたいにつなげてから、$hoge_allを$_POST["hoge"]の変わりに使う感じでいかがしょうか。

sm080101
質問者

お礼

回答ありがとうございました。 nameを変えることができないため、残念ながらできませんでした。 今後の参考にさせていただきます。 ありがとうございました!

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

PHPならセレクトボックスの名前の後ろに[]をつけてやると配列として受けることができます。 <select name="hoge[]">みたいな感じです。

sm080101
質問者

お礼

回答ありがとうございます。 残念ながらフォームはHTMLなのです…。 でもPHPでできるとうかがって、なんとなく希望が見えてきました。 ありがとうございました!

関連するQ&A

  • multipleの取得

    現在、test1.phpのセレクトボックスで複数選択された値を、 test2.phpで取得させることをしています。 そこで、質問ですが、 <select name="sbox" multiple> <option>・・・ ・ ・ </select> を使ったセレクトボックスから、 複数の情報を取得するにはどうしたらいいですか? 現在は、複数選択したつもりでも、上書きされているためか、 最後のoption の値しか取得できません。 色んなページを参考にして、 <select name="sbox[]" multiple> にする方法を考えましたが、 このセレクトボックスはjavascriptで、 optionの数を変えています。 そのため、nameに[]を使うと、javascriptが動作しなくなってしまう ようです。 nameに[]を使う以外に、複数の値をPOSTする方法を教えてください。 わかりにくい質問で申し訳ないですが、よろしくお願いします。

    • 締切済み
    • PHP
  • AJAXでPHPの配列を用いたセレクトボックスの連動

    AJAXでPHPの配列を用いたセレクトボックスの連動を行いたいと思っています。たとえば、 PHPで配列をセットしセレクトボックスを生成します。 1番目のセレクトボックスで1番目の項目を選択すると 2番目のセレクトボックスの内容が連動して変化する。 といった動きを目指しています。 2番目のセレクトボックスの内容もPHPで持って設定したいと考えています。 1番目のセレクトボックスのvalue値が2ならばajaxで通信して21から29までのkeyの配列を設定するという形式ですが。どのようにして良いかわかりません。 教えて下さい。

    • ベストアンサー
    • AJAX
  • JavaScriptのキーイベント

    JavaScriptのキーイベント いつもお世話になりますm(__)m Javascriptのキーイベントで教えて下さい。 フォーム上に、テキストボックス(id=A)とセレクトボックス1(id=B)と、セレクトボックス2(id=C)があるフォームがあり、フォーム内の項目移動をキーボードで行いたいと思います。 各項目のkeydownイベントでキーコードを取得して、Aの場合 Enter(13)又は→(39)なら、Bへ ←(37)なら、Cへ 移動するようにキーコードを取得して移動するようにしました。 IEだと問題なく動くのですが、Firefoxだと、矢印キーで移動した時に、移動先のセレクトボックスの値が  ←で動いた場合、セレクトボックスの値が1つ前  →で動いた場合、セレクトボックスの値が1つ後 に変わってしまいます。 (フォーカスは問題なく移動先のセレクトボックスにあります) 移動した後(例えばB.focus()の後)に、まだキーイベントが残っていて、Bにフォーカス移動後に、→キーが押されたような状態っぽいのです。 Firefoxの場合、セレクトボックスにフォーカスがある時、キーボードの左右で値を変更できるので、その辺りが原因と思うのですが、移動時に左右矢印キーのイベントを無効(?)にする事はできないのでしょうか? 雑な書き方で申し訳ありませんが、お詳しい方、是非ともご教授下さいm(__)m 宜しくお願い致します。

  • ラジオボタンの選択項目

    ラジオボタンの選択項目を、セレクトボックスとテキストボックスにするにはどのようにしたらいいのでしょうか? またJavaScriptを用いてラジオボタンの値と選択されたセレクトボックス、テキストボックスの値をsubmitさせるにはどのようにするのでしょうか? ご存知の方いらっしゃいましたらお願いします。

  • いつもお世話になっております。

    いつもお世話になっております。 現象が限定的で、調べてもこれといった答えが見つからなかったので質問させて下さい。 [質問]ACCESS2007においてフォーム操作時に特定のキー入力時に発生する警告音を消したい。 現象: フォーム上の入力用のテキストボックスにタブでフォーカスを当てたときにBackSpaceキーやDeleteキーを押下すると警告音(デフォルトのvbCriticalのメッセージ出現時と同じ音)が発生します。 テキストボックスに既に値が入っている場合、BackSpaceキーを押すと警告音が鳴りますがDeleteでは鳴りません。 また、マウスクリックによりテキストボックスを選択した時にはどちらのキーを押しても警告音は発生しません。 警告音が鳴る際にポップアップやエラー等は発生していません。 Windowsの設定で警告音自体を無くすという手段も考えましたが、普通のエラーの時にも警告音が出ないのは困るのでその方法は断念しました。 DeleteおよびBackSpaceを押したときの音だけを鳴らないようにしたいのですが、解決策はおろか原因すらもよく分かりません。 現象、解決方法ご存知の方いらっしゃいましたら回答をよろしくお願い致します。

  • セレクトボックス HTML javascript

    セレクトボックス HTML javascript php セレクトボックスの複数選択についてですがご教授よろしくお願いいたします。たとえばセレクトボックスを二つ作り 一つ目のセレクトボックスを ・フルーツ ・寿司 ・カレー フルーツを選択すると二つ目のセレクトボックスの中が ・りんご ・みかん ・なし 寿司を選択すると二つ目のセレクトボックスが ・いくら ・まぐろ ・うに このように 一つ目のセレクトボックスの選択によって 二つ目のセレクトボックスの中身を変えるにはどのようなコードを組めば よろしいのでしょうか。 現在 php javascript mysqlの勉強しています。 ご教授いただければ幸いです。

    • ベストアンサー
    • HTML
  • フォームの値取得について

    PHP4を利用しています。 フォームからのデータ取得で 以前はフォームで利用した名前に$をつければ その値を変数として利用できたと思うのですが、 PHP4からは設定によっては出来ないと言うことなので フォームの名前と同じ名前の変数に値を入れる為 $name1=$_POST['name1']; で取得しようと思ったのですが、 フォームで利用しているテキストボックスが多いのです。 やはりひとつづづ取得する方法しかないのでしょうか? なにか良い手があったら教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • selectが複数ある場合の値取得について

    お世話になります HTML内に下記のようなフォームが複数存在しています。 select[name="page_name"]が変更されたときに値を取得しPHP に送信したいのですが、一番上にあるselectの値が取得されてしまいます。 ひとつのscriptで複数のselectに対応したい場合、どのような記述になりますでしょうか? 助けていただきたいです。よろしくお願いします。 <!--1番目のセレクト--> <form method="post" action="javascript:void(0);"> <input type="hidden" id="img_id" name="img_id" value="3"> <select name="page_name"> <option value="">選択してください</option> <option id="page_name" value="1">あああ</option> <option id="page_name" value="2">いいい</option> <option id="page_name" value="3">ううう</option> </select> </form> <!--2番目のセレクト--> <form method="post" action="javascript:void(0);"> <input type="hidden" id="img_id" name="img_id" value="4"> <select name="page_name"> <option value="">選択してください</option> <option id="page_name" value="1">あああ</option> <option id="page_name" value="2">いいい</option> <option id="page_name" value="3">ううう</option> </select> </form> <!--3番目のセレクト--> ---省略--- /*script*/ $('select[name="page_name"]').change(function() { var data = { 'page_name' : $('#page_name').val(), 'img_id' : $('#img_id').val() }; $('#name').text(data['img_id']); $.ajax({ type: "POST", url: "/admin/change/", data:data }); alert("画像使用ページを変更しました!"); return false; }); });

  • tabキーによるfocusの当たり方を制御したい

    こんにちは,よろしくお願いします。 formが設置してあるページで,tabキーを押すとfocusが移動しますが,この挙動が,ブラウザによって違うことに気づきました。 ドリームウィーバーで,レコードの挿入ウィザードを使って簡単にフォームを設置することができますが,たとえば,この単純なページをInternet Explorerで開いて,1回tabキーを押してみると,focusは,ブラウザのアドレスバーに行ってしまいます。しかし,Firefoxでは,フォームの1番目のテキストボックスにfocusが当てられ一番最後にブラウザのアドレスバーなどに行きます。また,OperaではFirefoxと同様にフォームの1番目のテキストから始まって,ブラウザにはfocusが渡りません。 FirefoxやOperaのようにフォームの1番目の項目からfocusがあたるようにしたいのですが,どのようにすればよいのでしょうか? gooやYahooを上記の3つのブラウザで開いてみると,必ず同じ挙動を示して,同じところからfocusが当たりますから,何らかの方法で制御する方法があるのだと思うのですが…。 tabindexを設定して,フォームの1番目の項目を1として,順に設定してみたりしたのですが,Internet Explorerでは,やはり一番先にブラウザにfocusが渡ってしまいました。 私の希望としては,Opera のように一切ブラウザにfocusが当たらないようにしたいのです。しかし,できないのであれば,Internet Explorerで一番最初にブラウザにfocusが当たらないようにする方法を教えていただきたいです。 当方,JavaScriptとPHPにてホームページを作成中です。よろしくお願いします。

    • ベストアンサー
    • HTML
  • 複数選択の項目をPHP側でArrayで受け取る方法。

    PHPで開発の際、HTMLのフォームで複数選択の項目を、PHP側でArrayで受け取る際、フォームの項目のnameを、例えば、<input type="checkbox" name="hoge[]"> のように [] を入れないとダメなんですか? 以前、Perlをやっていまして、ちょっとショッキングです。他にも方法はありますか?もしあるなら、一番標準てきな方法はどういった方法でしょう。 [] と書くと、その項目が単数か複数かという情報をHTML側に依存させてしまう印象を受けます。 (どちらにせよ、checkboxやradioと書いている時点で、単数複数の情報をもたせてしまってますが・・・)

    • ベストアンサー
    • PHP

専門家に質問してみよう