• 締切済み

PHPで価格帯で分類したいのです

楽天APIで商品一覧を表示させるページを作っているとこなのですが、 商品を価格帯で分類・絞込みの機能を付けたいと思っております。 楽天APIにリクエストを投げるときに、検索キーワードと、たとえば他のパラメータとして「レビュー件数が多い順」や「ジャンルID」などを付けて投げても、返ってきたxmlデータの中には、検索でヒットした件数のうち、最高30件分の商品情報しか引っ張ってはこれないのですが、その30件の中からですら最高価格と最低価格をどうやって抽出すれば良いのやら・・・ っていうか、要はそういう問題ではなくって、 検索キーワードや他のパラメータを付けてAPIにリクエストを投げた際に、同時に、同じ検索キーワードで「価格が高い順」と「価格が安い順」のリクエストも投げることが出来れば、後はどうにでもなる、と、思ってはいるのですが・・・、 同じ検索キーワードで、あとは違うパラメータをくっつけた3つのリクエストを同時に送信するなんてことが、出来るのかしら? ということで、どなたか良い方法をご存知の方がいらっしゃらないかしら、と、こうして投稿させていただいております次第でございます。 ---------------------------------- 具体的になにがやりたいのかと申しますと、 たとえばAPIの検索結果で得られた商品郡で、最低価格の1円の商品があり、最高価格の商品が10000円だったすると、 1~100円 100~500円 500~1000円 1000~5000円 5000~10000円 というふうに、検索結果ごとに価格帯分類のリンクをPHPで計算させて表示させて、 たとえば100~500円のリンクをクリックして、その価格での絞込み結果が表示されたページには、 100~200円 200~300円 300~400円 400~500円 といったように、さらに細かい価格分類も表示させることが出来ればなおGOODなわけですが・・・ 楽天商品検索APIにリクエスト投げて、検索にヒットした全商品の中から、最高価格と最低価格が分かれば、後はそれを均等に分割して、「価格帯で絞り込む」とかいうリストとか作ったり、まぁ、いかようにも出来るわけなのですが・・・ なにか良い方法があれば、どなたか教えてくださいませ。

みんなの回答

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>同じ検索キーワードで、あとは違うパラメータをくっつけた >3つのリクエストを同時に送信するなんてことが、出来る >のかしら? 出来る。と楽天APIの仕様に書いている。 http://webservice.rakuten.co.jp/api/itemsearch/#requestURL 「例」でも、&sort=%2BitemPrice というのが書いている(逆順は&sort=%2DitemPrice)。 #仕様を読まずにプログラムを作っているわけじゃないと思うんだけど・・・

stars-nanoha
質問者

補足

回答ありがとうございます♪ えと・・・、質問の補足をさせていただきます。 現状では、商品検索の機能として、次の3つは実装済みです。 「検索キーワード」 「ジャンルで絞込み」・・・ファッションとかスポーツとか家電とか 「並び順」・・・価格で昇順降順・レビュー件数が多い順・新着順 なので現状ではたとえば、ユーザーがキーワードを入力し、レビュー件数での並び順を選択した状態で検索ボタンを押したとすると、楽天APIからのレスポンスは、 ・レビュー件数の多い順で ・キーワードを含む商品が ・30件 それが配列に格納され、見やすい形になってページに出力させています。 ユーザーは、そこから、2ページ目(次の30件)、3ページ目(さらに次の30件)と、検索結果を閲覧できる形となっています。 検索結果を価格帯で絞り込む機能を実装する手段は、思いついたものがあるにはあるのです。ユーザーがAPIに渡すパラメータのうち、「検索キーワード」「ジャンル」はそのままで、「並び順」のパラメータを"&sort=%2BitemPrice"としたURLと、"&sort=%2DitemPrice"としたURLの二つのリクエストを生成、送信し、最も安い商品と最も高価な商品の商品データを取り出す。 そうすれば、あとはその二つの価格を元に、何通りかの○○円~○○円といった価格帯で絞り込むリンクを計算させて表示させれば、それで望み通りには、なるのです。 なるのですが、 そのためには、ユーザー指定のリクエストを行った裏で、それとは別のパラメータを付加したリクエストとを2回送信する必要があります。 楽天APIには「リクエストは1秒間に1回まで」という規制があるため、最低でも1秒ずつ2回で2秒のウェイトをかけなければ、ページの生成は完了しない、というのが、とっても、なんとかならないかなぁと、悩んでるところなのです。 引き続き回答をお待ちしておりますので、みなさんよろしくお願いいたします。 agunuzさん、ありがとうございました。私の質問の仕方がわかりにくい文章でしたので、申し訳ございませんでした。

関連するQ&A

専門家に質問してみよう