• 締切済み

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"; }

  • PHP
  • 回答数2
  • ありがとう数0

みんなの回答

  • kaze2com
  • ベストアンサー率50% (6/12)
回答No.2

name="word[]" でPOSTできると思いますよ。 > foreach($_REQUEST['word'] as $val){ > $_REQUEST['word'] = " "."$val"; > } これ間違っていますよね? foreach一週目で、変数上書きしちゃってる気が。

回答No.1

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関数で、配列の要素の中身を指定した文字列で連結できます。

関連するQ&A

  • PHP apiのソート順について質問

    menu.phpでキーワード(りんご)で書き出した後は、問題なく りんご(ソート順:スタンダード)が表示されるのですが、さらに、search.phpでソート順を変えて検索するとソート順はリクエストURLに反映されるのですが、キーワード’(りんご)がリクエストURLに入りません。 search.phpでmenu.phpのキーワード(りんご)繰り返しし使うにはどのようにしたら、いいのでしょうか? [menu.php] <p><a href="search.php?word=りんご&sort=standard">りんご</a></p> [search.php] <?php $base = 'http://xxx.xxxxxx.co.jp/xxx/xxx'; $word =$_GET["word"]; $keyword = urlencode($word); $sort = $_GET["sort"]; $sort = urlencode($sort); // リクエストURL $url = $base ."&keyword=".$keyword."&sort=".$sort. ; ?> 表示順序 <select name="sort"> <option value="satandard">新着順</option> <option value="itemPrice">価格の安い順</option> <option value="-itemPrice">価格の高い順</option> <input type="submit" value="検索"> </select> よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでの検索

    初心者です。 ネットもさがしてみたのですが下記の意味がイマイアチわかりません。 <form name="form2" action="search.php" method="post"> <input type="text" name="keyword" size="25" value="<?= $keyword ?>"> <input type="submit" name="search" value="検索"><br /> <input type="radio" checked name="searchSelect" value="AND">AND  <input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect" value="OR">OR </form> (1)<form name="form2" action="search.php" method="post"> 検索ボタンを押すと「action="search.php"」が起動します。  どういう仕組みなのでしょうか。 (2) <input type="text" name="keyword" size="25" value="<?= $keyword ?>">  作者の説明で、  『前の画面でテキストボックスに入力した値を、デフォルトで表示しています。  <input type="text" name="keyword" size="25" value="<?= $keyword ?>">』  となっていますが、value="<?= $keyword ?>"でなぜそうなるのでしょうか。  また、<?= $keyword ?>の<?= ?>構文はどのような機能があるのでしょうか。 (3)<input type="radio" checked name="searchSelect" value="AND">AND  「value="AND">AND」の右側の「AND]はどういう意味でしょうか。 (4)<input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect" value="OR">OR  作者の説明で、  『(6)前の画面でORラジオボタンが選択されていた場合は、選択(checked)します。  <input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect"  value="OR">OR』  とありますが、<?= ($searchSelect == "OR")? "checked" : "" ?>でなぜそういうことができているのでしょうか。  また、『"checked" : 』の『:』は何の役目をしているのでしょうか。 上記4つの質問でどれでもいいですのでどなたかお教え願えないでしょうか。

    • 締切済み
    • PHP
  • php ハイパーリンクについて

    php ハイパーリンクについて質問ですが、 <form action="<?=$_SERVER["SCRIPT_NAME"] ?>" method="get"> </select> <input type="hidden" name="word" value="<?php print(htmlspecialchars($word, ENT_QUOTES)); ?>"> <input type="hidden" name="ger" value="<?php print(htmlspecialchars($ger, ENT_QUOTES)); ?>"> <select name="sort"> <option value="stand">新着</option> <option value="lowPrice">安い</option> <input type="submit" value="検索"> </select> </form> 上記のform actionと同じ機能をハイパーリンクで表示させるにはどのようにしたらよいのでしょうか?

    • ベストアンサー
    • PHP
  • formタグのactionを切り替えたい。

    現在、formの作成で悩んでいます。 例えば (1)魚を検索(action="fish.php") (2)肉を検索(action="meat.php") (3)野菜を検索(action="vegetables.php") の3つがあり、それぞれactionが上記の様に別だとします。 これを一つのフォームで検索をしたいと考えています。 <form action="ここを切り替えたい" method="get"> <select class="" name="search_type" id="search_type"> <option value="fish">魚</option> <option value="meat">肉</option> <option value="vegetables">野菜</option> </select> <input name="search_keyword" id="search_keyword" value="" type="text"> <input src="search_button.gif" alt="検索" type="image"> </form> 上記の様なhtmlだとして、selectの選択によってactionを切り替え検索をしたいと思っています。 色々とgoogle等で検索してみたのですが、良い方法が見つからず皆様のお力をお借りしたく、投稿しました。 是非とも、ご教授とご指導を宜しくお願い致します。

  • PHPでFormリクエスト

    ASPで以下実行したことをPHPで同じことはできるでしょうか? <form action=”Sample.asp” method=”post”> <input type=”text” name=”Name” value=”あ”><br> <input type=”text” name=”Name” value=”い”><br> <input type=”text” name=”Name” value=”う”><br> </form> Request.Form(“Name”)(1)  →あ Request.Form(“Name”)(2)  →い Request.Form(“Name”)(3)  →う

    • ベストアンサー
    • PHP
  • セレクトボックスで指定した任意のCGIにPOSTしたい

    フォームでリクエストを送信する際、セレクトボックスで指定した任意のCGIにPOSTしたいのです JavaScriptで実現したいのですが...教えてくださいm(__)m 下記はフォームの中身です。 <form action="" method="post"> <input type="text" name="key_word"> <select name="S1"> <option selected value="error">CATEGORY <option value="search_1.cgi">SELECT_1 <option value="search_2.cgi">SELECT_2</option> </select> <input type="hidden" value="kw_search" name="mode"> <input type="submit" value="検索"></td> </form>

  • フォームから受け取ったデータを変数に/PHP

    入力フォームからデータを送信し、受け取ります。 <form action="index.php" method="post"> <input type="text" name="hoge"> <input type="submit"> </form> <?php echo htmlspecialchars($_POST['hoge']); ?> この時に受けったデータが、「りんご」だとして この「りんご」を変数にしたいです。 ↓ <?php $keyword = "りんご"; ?> このようにするには、 <form action="index.php" method="post"> <input type="text" name="hoge"> <input type="submit"> </form> <?php echo htmlspecialchars($_POST['hoge']); ?> の後にどのような処理をすればよいでしょうか? または初めから「$keyword」としてフォームからデータを送ることはできるのでしょうか? 何卒ご指導の程よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPによるCSVファイルの指定列検索について

    いつも参考にさせていただいております。今回はじめての質問になりますが、よろしくお願いします。 PHPによるCSVファイル内の指定列内を検索する方法について困っております。似たような質問(http://oshiete1.goo.ne.jp/qa3570985.html)を参照しましたが、どうにもわからずほとほと困っている状態です。 とりあえず他サイトを参考にして検索フォームを下記のように作成しました。(ラジオボタンの送信内容は便宜上変更しました) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS"> <title></title> </head> <body> <form action="search_4.php" method="POST"> <INPUT type="radio" name="touroku_type" value="りんご">りんご <INPUT type="radio" name="touroku_type" value="なし">なし <INPUT type="radio" name="touroku_type" value="ぶどう">ぶどう <INPUT type="radio" name="touroku_type" value="メロン">メロン <INPUT type="radio" name="touroku_type" value="スイカ">スイカ<BR> <input type="submit" name="submit" value="検索"> </form> <!--ここから検索結果--> <ul> <?php if($_POST["touroku_type"]!=""){   $KeyWord=$_POST["touroku_type"];   $KeyWord=htmlspecialchars($KeyWord);   $Data=file("system.csv");   for($i=0;$i<sizeof($Data);$i++){     $lines=strip_tags($Data[$i]);     if(mb_eregi($KeyWord,$lines)){       $line=explode(",",$Data[$i]); ?> <li><?=$line[3]?> → <a href="item.php?id=<?=$line[0]?>">詳細を見る</a></li> <?php     }   } } ?> </ul> </body> </html> CSVファイルの登録情報は 1,りんご,あり 2,なし,あり 3,ぶどう,なし 4,メロン,なし 5,スイカ,なし とします。 この場合、”りんご”や”スイカ”など他で入力されていない情報で検索した場合きちんと出ますが、”なし”で検索すると2から5の情報が出てしまい検索として役に立たない状態です。 ここで質問なのですが、PHP上で指定列のみを検索する場合(上記の場合、配列の2つ目のみを検索対象とする)、上記プログラムのどこを変更すべきなのかご教授いただけますでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • セレクトボックスとチェックボックスを使った絞込み検索

    Yomi-Searchについての質問なのですがタイトルの通りの質問でチェックボックスを使った絞り込み検索では 01_03 04_01 と検索結果に表示されるのですがセレクトボックスとチェックボックスを組み合わせて絞り込み検索をしてみると 01_0304_01 とこのようにカテゴリとカテゴリの間にスペースが入らず絞り込み検索が出来ません‥ タグはこのように書きました。 <FORM action="http://www..." method="get" target="" name="form1"> <INPUT type="hidden" name="mode" value="search"> <INPUT type="hidden" name="page" value="1"> <INPUT type="hidden" name="sort" value="mark"> <INPUT type="hidden" name="engine" value="pre"> <INPUT type="hidden" name="kn" value="30"> <SELECT size="1" name="word"> <OPTION type="selected" value="">--------</OPTION> <option value="01_01" name="word1">○○○</option> <option value="01_02" name="word2">○○○</option> <option value="01_03" name="word3">○○○</option> </SELECT><BR> <BR> <INPUT type="checkbox" name="word4" value="04_01">○○○<BR> <INPUT type="checkbox" name="word5" value="04_02">○○○<BR> <INPUT type="checkbox" name="word6" value="04_03">○○○<BR> <BR> <INPUT type="submit" value=" 検 索 "> <INPUT type="reset" value="リセット"> &nbsp; </FORM> 全くの初心者ですいませんが良きアドレスなどをお願いします。

  • PHPのサイト内検索の結果をCSVに書き出すには

    Webサイトのサイト内検索が、どれくらい使用されているか調べるため、 検索結果をCSVで書き出したいと考えております。 php初心者のため、苦戦しております。 詳しい方がいらっしゃいましたら、ご教示ください。 サイトはCodeIgniter(コードイグナイター)を使用しており、PHP5.3.3です。 サイト内検索の仕組みは、form actionを使用しており、 htmlに記載のコードは以下です。 ------------------------------------------------------------------------------------------------------- <form action="search.php" method="get" data-form-id="keyword_webcode-search"> <input name="keyword_webcode" type="text" value="" rel="キーワード検索出来ます。"><br> <input type="submit" value="データを送信"> </form> ------------------------------------------------------------------------------------------------------ データ送信先のsearch.phpに書き出すためのコードを追加しておりますが、 何も起こりません。 コードを追加するファイルが間違っているのでしょうか? 追加したコードは以下です。 ------------------------------------------------------------------------------------------------------- $csv = fopen('file.csv', 'a'); fputcsv($csv, $ShiftJIS); fclose($csv); ------------------------------------------------------------------------------------------------------- 色々試してみましたが、うまく行かず行き詰まっています。 どなたかアドバイスいただければと思います。 よろしくお願いいたします。

    • 締切済み
    • PHP

専門家に質問してみよう