• 締切済み

セレクトメニューで複数選択した値をpost送信する

セレクトメニューで下のように、「multiple」を使えばカテゴリA~カテゴリDまでを全て選択する事ができますが、 <form method="post" action="test.php"> <select multiple name="category"> <option value="category_a">カテゴリA</option> <option value="category_b">カテゴリB</option> <option value="category_c">カテゴリC</option> <option value="category_d">カテゴリD</option> </select> </form> そうではなくて、下のように「すべてのカテゴリ」という項目を作って、カテゴリA~カテゴリDまでの値をPOST送信したいのですが、どのように記述すればよいのか四苦八苦しております。 <form method="post" action="test.php"> <select name="category"> <option value="?">すべてのカテゴリ</option>⇒この部分が解らない箇所です。 <option value="category_a">カテゴリA</option> <option value="category_b">カテゴリB</option> <option value="category_c">カテゴリC</option> <option value="category_d">カテゴリD</option> </select> </form> 色々調べてみたのですが、ないものですね。私の勉強不足だとは思いますが、どなたかご助言の程よろしくお願い致します。

みんなの回答

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

選んでもいないデータをサーバーに飛ばすことはできません <option value="category_all">すべてのカテゴリ</option>⇒この部分が解らない箇所です。 として、category_allが飛んできたときにはサーバー側のプログラムで category_a~dが選ばれたと判断する あとはjavascriptなどで、multipleでそれぞれのoptionを選ぶような 仕組みをつくる のどちらかでできます

回答No.1

基本的に、POSTされるPHP側で振り分け処理を行うしかありません。 ですので、そこはなんでも好きな文字を入力すればよいです。 <option value="all">すべてのカテゴリ</option> とか。 後は、PHP側で、 <?php if($_POST['category'] == 'all'){ //すべてのカテゴリが選択された場合の処理 }else{ //それ以外が選択された場合の処理 } ?> といったような感じです。

関連するQ&A