質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

6118閲覧

楽天APIの出力件数を最大にする。

seel

総合スコア25

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/11/29 06:32

楽天のサンプルAPIをいじって使えるようにしたのですが
30件しか取得できませんでした。

仕様上では1ページ30件*100ページ取得できるそうなのですが
どうやったらいいでしょうか。

結果は横4列のテーブルで出力したいです。

取得件数に関するパラメーターはあるようです。

私がサンプルを改変したものを載せます。
IDは削除してあります。

<!DOCTYPE html> <html lang='ja'> <head> <link rel="stylesheet" href=style.css" type="text/css"> <title>楽天</title> <meta charset='utf-8'> </head> <body> <?php $rakuten_relust = getRakutenResult('うどん', 0); // キーワードと最低価格を指定 foreach ($rakuten_relust as $item) : ?> <center> <table border="0" align="center"> <tr align="center"> <td align="center"> <div class="center"><a href="<?php echo $item['url']; ?>"><img src="<?php echo $item['img']; ?>"></div><br /> <div class="center"><?php echo $item['name']; ?></div><br /> <div class="center"><?php echo $item['price']; ?>円</div><br /> <div class="center"><?php echo $item['shop']; ?></div><br /> </td> </tr> </table> </center> <?php endforeach; ?> </body> </html> <?php function getRakutenResult($keyword, $min_price) { // ベースとなるリクエストURL $baseurl = 'https://app.rakuten.co.jp/services/api/IchibaItem/Search/20140222'; // リクエストのパラメータ作成 $params = array(); $params['applicationId'] = ''; // アプリID $params['affiliateId'] = ''; // 自分のアフィリエイトID $params['keyword'] = urlencode_rfc3986($keyword); // 任意のキーワード。※文字コードは UTF-8 $params['sort'] = urlencode_rfc3986('+itemPrice'); // ソートの方法。※文字コードは UTF-8 /* $params['minPrice'] = $min_price; // 最低価格 */ $params['hits'] = '30'; // hits $params['page'] = '100'; // page $canonical_string=''; foreach($params as $k => $v) { $canonical_string .= '&' . $k . '=' . $v; } // 先頭の'&'を除去 $canonical_string = substr($canonical_string, 1); // リクエストURL を作成 $url = $baseurl . '?' . $canonical_string; // XMLをオブジェクトに代入 $rakuten_json=json_decode(@file_get_contents($url, true)); $items = array(); foreach($rakuten_json->Items as $item) { $items[] = array( 'name' => (string)$item->Item->itemName, 'url' => (string)$item->Item->itemUrl, 'img' => isset($item->Item->mediumImageUrls[0]->imageUrl) ? (string)$item->Item->mediumImageUrls[0]->imageUrl : '', 'price' => (string)$item->Item->itemPrice, 'shop' => (string)$item->Item->shopName, ); } return $items; } // RFC3986 形式で URL エンコードする関数 function urlencode_rfc3986($str) { return str_replace('%7E', '~', rawurlencode($str)); }?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/11/29 06:55

1ページ(リクエスト)30件が上限。ページの値を変えて繰り返しリクエストが可能てことなのでは?
guest

回答1

0

ベストアンサー

hits1ページあたりの件数(30固定で良いかと)
page取得したいページ番号
この2つを使って制御することになると思います。
レスポンスとして、
pageCount総ページ数
page現在のページ番号
が返ってくるので、pagepageCountに到達していなければ、pageをインクリメントして再度リクエストすれば良いかと思います。

投稿2016/11/29 07:43

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問