- 締切済み
PHPでTEXTと同様なcheckBoxの処理
下記のフォームから検索キーワードを入力してANDとORの検索はちゃんとできていますが、 チェックボックスを使いテキストフォームと同様のロジックで「りんご■メロン」と 文字と文字の間にスペース「■」で結合して送信し、PHPコード側で受けとるにはどうしたらよいかアドバイス下さい。 ちなみに、PHPコード側では$_REQUEST['word']に<input type=text name=word size=35 value="">と同じような処理を入れたいです。 (1)検索キーワード --------------------------------------- りんご■メロン *■は半角スペース文字とします。 HTMLフォーム --------------------------------------- <form action="test.php" action="POST"> <input type=hidden name=mode value="search"> 検索キーワード:<input type=text name=word size=35 value=""> <select name=option> <option value="and"> AND</option> <option value="or"> OR</option> </select> <input type=submit value="Search"> </form> ↓この処理では全然だめでした。 <form action="test.php" method="post"> <input type="checkbox" name="word[]" value="りんご"> <input type="checkbox" name="word[]" value="メロン"> <input type=submit value="Search"> </form> PHPコード foreach($_REQUEST['word'] as $val){ $_REQUEST['word'] = " "."$val"; }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kaze2com
- ベストアンサー率50% (6/12)
name="word[]" でPOSTできると思いますよ。 > foreach($_REQUEST['word'] as $val){ > $_REQUEST['word'] = " "."$val"; > } これ間違っていますよね? foreach一週目で、変数上書きしちゃってる気が。
- seimurakam
- ベストアンサー率61% (21/34)
PHPでは、 $word[] = "りんご"; $word[] = "メロン"; という記述で、array(0 => "りんご",1 => "メロン")となりますが、 HTMLでは明示的に配列のキーを記述しなくてはいけません。 りんごもメロンも"word[]"という変数名でPOSTしようとしているため 後から書かれた"メロン"で上書きされてしまっているようですね。 こうするのがいいんじゃないかと思います。 <form> <input type="checkbox" name="word[1]" value="りんご" /> <input type="checkbox" name="word[2]" value="メロン" /> <input type="submit" value="Search" /> </form> $word = implode(" ",$_POST['word']); implode関数で、配列の要素の中身を指定した文字列で連結できます。