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

このQ&Aのポイント
  • 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 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
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

受け取り側は$_GET["word"]なのに、keywordとしてセットしているのは何故でしょうか。 $url = $base ."&keyword=".$keyword."&sort=".$sort. ; また、select要素のformから受け取るのであれば(当然ですが)同じform要素内にinput要素(type="hidden"でname="word"、valueがhtmlspecialchars($word, ENQ_QUOTES))が存在しないといけません。

a4orece
質問者

補足

ご回答ありがとうございます。ご指摘の$keywordのところですが、$wordの間違いです。phpの本を参考にしながら、試行錯誤でごちゃごちゃになってました。 それで、selectの要素のところですが、いろいろ調べて <input type="hidden" name="$word" value="<?php htmlspecialchars($word, ENT_QUOTES); ?>"> としたのですが上手くいきません。 wordに検索結果が反映されない所をみるとvalueのところだと思うのですが、間違ってますでしょうか? よろしくお願いいたします。

関連するQ&A

  • PHP ソートについて

    以前も、似たような質問をしたのですが少し内容が違いますのでよろしくお願いいたします。 このページ内で、ゲットしたキーワードを再ソートすると、2回エンコードされてしまいます。続けてまた、ソートすると、エンコードされた値がまたエンコードされてしまいます。、始めにゲットした値を1回だけエンコードし、ソートを変えても1回目のエンコードされた値を使うにはどのようにしたらよいのでしょうか? $base = 'http://xxx.xxxxxx.co.jp/xxx/xxx'; $keyword =$_GET["keyword"]; $keyword = urlencode($keyword); $sort = $_GET["sort"]; $sort = urlencode($sort); $url = $base ."&keyword=".$keyword."&sort=".$sort. ; <form action="<?=$_SERVER["SCRIPT_NAME"] ?>" method="get"> <input type="hidden" name="keyword" value="<?php print(htmlspecialchars($keyword, ENT_QUOTES)); ?>"> 表示順序 <select name="sort"> <option value="satandard">新着順</option> <option value="Price">安い順</option> <option value="-Price">高い順</option> <input type="submit" value="検索"> </select> </form>

    • ベストアンサー
    • PHP
  • キーワードの再検索で

    index.phpからキーワードを書きだし、search.phpで$_GETで受け取り→エンコード→ リクエストURLまでセットし、表示されるまでは問題ないのですが、ソート順を変更した際にリクエストURLに2回、キーワードが入ってしまいます。ブラウザのアドレスバーをみると、エンコードされた値(%e3%81%bf%e3%81%8b%e3%82%93(みかんみかん)と言う感じにが2回入ってしまいます。それを、ソートを変更しても、キーワードを1回だけ入れるには、どのようにしたらいいのでしょうか? [index.php] <p><a href="search.php?keyword=みかん&sort=standard">みかん</a></p> [search.php] <?php $base = 'http://xxx.xxxxxx.co.jp/xxx/xxx'; $keyword =$_GET["keyword"]; $keyword = urlencode($keyword); $sort = $_GET["sort"]; $sort = urlencode($sort); // リクエストURL $url = $base ."&keyword=".$keyword."&sort=".$sort. ; ?> 表示順序 <form action="<?=$_SERVER["PHP_SELF"]?>" method="get"> </select> <input type="hidden" name="keyword" value="<?php print(htmlspecialchars($keyword, ENT_QUOTES)); ?>"> <select name="sort"> <option value="satandard">新着</option> <option value="itemPrice">安い</option> <input type="submit" value="検索"> </select> よろしくお願いいたします。

    • 締切済み
    • PHP
  • 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
  • WikipediaのPHPによるAPIについて

    http://wikipedia.simpleapi.net/ にサンプルが出ていて、それを利用しようと思っています。 --以下サンプル <?php // キーワード指定 $keyword = "多田富雄"; // APIのURL $url = "http://wikipedia.simpleapi.net/api?keyword=".urlencode($keyword)."&output=php"; // データを取得 $data = file_get_contents($url) ; // PHPシリアライズパーサーを利用して解析し、配列に入れる $array = unserialize($data); // 配列をforeachで表示するデモ print "<H1>Wikipedia情報</H1>"; foreach ($array as $key => $value) { print "<a href=\"".$value[url]."\"><strong>".$value[title]."</strong></a>\n<br/>". $value[body] ."<hr/>\n\n"; } ?> --サンプル以上 実際のwikipediaで"多田富雄"を入力し調べた時と、上記サンプルを起動してprintした時では内容が異なります。 (上記サンプルの方がかなり少ない) unserialize関数もしくはfile_get_contents関数か、別の要因かよくわかりません。 ご経験のおありの方、ヒントだけでもいただけると助かります。 なお、私のphp経験は50-100時間程度、環境はXP,Apache2,php5です。

    • ベストアンサー
    • PHP
  • 「次の○件」の時、値がデフォルトにもどってしまいます。

    MySQLとPHP4で検索システムを作っています。 検索結果を20件ずつ表示させ、21件目から「次へ」をクリックすることで表示させてるのですが、「次へ」をクリックしてもうまく表示ができません。 キーワードはurlencodeを使って解決したのですが、プルダウン(コンボボックス?)を使ったOrderByの設定がデフォルトに戻ってしまいます。 urlencodeを使ってできなかったので、どのようにしたらよいのか、ご教授をお願い致します。 イメージだけでも御参考になれば… 「キーワード<input type="text">」を(書名順・著者名順)で 検索<input type="submit"> この( )の部分を以下のようにし、 html <SELECT name="sort"> <OPTION value="title">書名</OPTION> <OPTION value="auth">著者名</OPTION></SELECT> php $sort=$_POST[sort]; //または、GET if($sort=="title"){ $sql .="order by title "; }elseif($sort=="auth"){ $sql .="order by auth "; } のようにやってます。

    • ベストアンサー
    • PHP
  • phpパスについて

    パスについて質問ですが、path/dog.php(ファイル名)/のリクエストurlを組みたい場合、下記のようにして大丈夫なのでしょうか? $pathは共通ですので、同じ変数で大丈夫なのですが、dog.phpをcat.phpなどにいろいろ変えて使いたい場合はどのようにしたらいいのでしょうか? $path=xxxx/xxxx/animal/ <?php $url=$path."dog.php"."?keyword=" . $keyword."&genre=".$genre."&sort=".$sort;?>

    • 締切済み
    • PHP
  • PHPのheader()について

    OS:freebsd4.8 PHP:php-4.3.2 apache2 を使用しております。 ドキュメントルートに <HTML> <HEAD> <TITLE>検索エンジン</TITLE> </HEAD> <BODY> <CENTER><H1> 検索エンジン </H1></CENTER> <FORM METHOD= post ACTION = search.php> <TABLE BORDER = 4 WIDTH = 250 ALIGN = CENTER> <TR BGCOLOR = "#CCCCCC"> <TH>検索キーワード</TH> <TD><INPUT TYPE= text NAME= keywd size = 20 /></TD> </TR> <TR> <TH>エンジン</TH> <TD> <SELECT NAME = ENG> <OPTION VALUE = "yahoo">Yahoo!</OPTION> <OPTION VALUE = "google">google</OPTION> <OPTION VALUE = "goo">goo</OPTION> </SELECT> </TD> </TR> <TR> <TD COLSPAN ="2"><CENTER><INPUT TYPE="submit" value="検索" /><CENTER></td> </TR> </TABLE> </FORM> </BODY> </HTML> というtest.htmlをおいてます。 phpスクリプトとして <?php $stringkey = urlencode($keywd); switch($ENG){ case "yahoo": $url = "http://www.yahoo.co.jp/bin/search?p="; break; case "goo": $url = "http://www.goo.ne.jp/default.asp?MT="; break; case "yahoo": $url = "http://www.google.co.jp/search?q="; break; } header("Location: ".$url.$stringkey); header("HTTP/1.1"); ?> search.phpにパラメータを渡していますが 白いページしか表れません。 header()関数の記述が悪いのでしょうか? apache2の設定でしょうか? ちなみに2ファイルともドキュメントルートに配置してます。 よろしくお願いします。

    • 締切済み
    • PHP
  • csvファイルの読込みとソート

    いつも大変参考にさせていただいております。 csvファイルの読み込みとソートをしたく、ネットや過去ログ等を相当調べたのですが、完全に詰まってしまいました。 (検索キーワード:「php csv ソート」「php 二次元配列 ソート」など) とても困っています。どなたかよろしくお願いします。 以下のようなcsvファイルを読み込みソートしたいのです。 ■csvファイル 20110803, A, りんご 20111215, B, みかん 20110306, A, みかん 20110620, A, りんご 20110215, B, りんご ■個別にやりたい処理 (1)、左列の日付で昇順ソートしてすべて表示 (2)、「A」を含む行をすべて表示(日付順) (3)、「A」+「りんご」を含む行をすべて表示(日付順) □補足 csvをfgetcsvで読み込み、テーブルに入れて表示するところまではできました。 csvの行は増えていきます(max100行位)。列は固定。

    • ベストアンサー
    • PHP
  • phpでフォームの値をフレームに渡す際、&が使えず

    こんにちは。 PHPで、メタサーチのようなものを作ろうと思っています。 まず、検索窓に入力した値をGoogle検索に送り、 iframe内に表示するようにしました。 しかし、「PHP 入門」など、通常のキーワードであればうまくいくのですが、 「P&G」など、「&」が入ると、勝手にアンド検索になってしまい、うまく機能しません。 値の送り方に問題があるのでしょうか? ご教示お願い致します。 search1.php <?php $keyword=$_GET["keyword"]; $keyword4url=urlencode($keyword); ?> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> </head> <body> <center> <form action="search1.php" method="get"> キーワード:<input type="text" name="keyword" size="20" value="<?php echo $keyword;?>" onfocus="this.select()"> を <input type="submit" value="検索する"> </form> <br> <iframe src="http://www.google.co.jp/#q=<?php echo $keyword; ?>" name="frame1" frameborder="1" scrolling="auto" width="977" height="600"> </iframe> </center> </body> </html>

    • ベストアンサー
    • PHP
  • 既存エンジンを利用したHTML&PHPの検索・取得は不可能?

    PHPで、URL抽出をしたいと思っています。 たとえば、gooのブログ検索などの検索エンジンを利用して、 そこから返されたURLの取得、 もしくは返されたHTMLのソース取得の どちらかをしたいと思っています。 つまり、既存の検索エンジンを利用したいと思っているのですが・・・ とりあえずこんなHTMLをかいたのですが。 ______________________________________________________________________________ <form method="get" action="http://blog.search.goo.ne.jp/search_goo/result/" id="query_top"> <label for="searchtop">検索:</label> <input type="text" name="MT" value="" id="searchtop" size="45">  スコア  <select name="rm"> <option value = '0'>全部</option> <option value = '1' selected>1 以上</option> <option value = '2'>2 以上</option> <option value = '3'>3 以上</option> <option value = '4'>4 以上</option> <option value = '5'>5 以上</option> </select> <input type="submit" name="btn_g" class="gbbtn_search" value="gooブログ検索"></form> _____________________________________________________________________________________ これはただHTMLでフォームを作って、gooにキーワードを飛ばすだけなのですが、 この後表示される(帰ってくる)URLをPHPなどで取得することはできないでしょうか? 取得して、違うプログラムで利用したいと考えています。 しかし、個人的に色々考えたのですが、PHPだと物理的に無理な気がしてきました。 ただ、HTMLに埋め込むならPHPがいいのかなと思いました。 だれかわかる人いますでしょうか?どうかPHPに精通している方、ぜひ宜しくお願いしますm(_ _)m

    • ベストアンサー
    • PHP

専門家に質問してみよう