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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

受付中

楽天APIのデータをMYSQLへ格納したい。

JTake
JTake

総合スコア6

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

1回答

0リアクション

0クリップ

2706閲覧

投稿2017/04/15 04:44

編集2017/04/16 11:24

PHP初心者です。楽天市場商品検索APIを使用して取得したデータをMYSQLに
格納するコードを書いています。

mysqlへのデータ格納はできましたが、1ページ目に表示されるデータしか
格納できません。取得した全てのデータを格納したいのですが、如何せん
コードの書き方がわかりません。ヒントもしくはご教示頂ければ幸いです。

他の方のサンプルを利用し見よう見まねで作成している状況です。
###該当のソースコード

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <?php /**********************************************************************/ //楽天商品検索API $appId = '********************'; //アプリID $affId = '********************'; //アフィリエイトID /**********************************************************************/ echo '<div style="width:80%;margin:5% auto;">'; echo '<div style="margin:0; padding:0">'; ?> <div style="margin:0 0 2% 0;"> <form name="searchform" id="itemsearchform" method="get" action=""> <input type="text" name="keyword" id="itemkeyword" value="" /> <input type="submit" id="itemsubmit" value="検索" /> </form> </div> <?php $keyword = htmlspecialchars($_GET['keyword'], ENT_QUOTES); $e_keyword = urlencode($keyword); $currentpage = (empty($_GET['page'])) ? 1 : $_GET['page']; $first = $currentpage * 10 - 9; $last = $currentpage * 10; $shopcode = "********";//shopコード記載 $timestamp = strtotime('now'); $date = date('Y-n-j H:i:s',$timestamp); $baseurl = 'https://app.rakuten.co.jp/services/api/IchibaItem/Search/20140222?format=json'; $rsparam = array(); if ($e_keyword != ""){ $rsparam['keyword'] = $e_keyword; } $rsparam['applicationId'] = $appId; $rsparam['hits'] = 30; $rsparam['field'] = 0; $rsparam['imageFlag'] = 0; $rsparam['page'] = $currentpage; $rsparam['orFlag'] = 1; $rsparam['first'] = $first; $rsparam['last'] = $last; $rsparam['shopCode'] = $shopcode; foreach ($rsparam as $nr => $rsvalue) { $palame .= '&'.$nr.'='.$rsvalue; } $rsurl = $baseurl.$palame; $rs_json = @file_get_contents($rsurl, true); $item = json_decode($rs_json); $Item = array(); $Items = $item->Items; $count = $item->count; $hits = $rsparam['hits']; $max_page = ceil($count/$hits); // 商品数が1000を超える場合は1000に制限 if($count >= 1000){ $count = 1000; } // 商品ページが100を超える場合は100に制限 if($max_page >= 100){ $max_page = 100; } // 1ページに表示する商品数をセット if( $page == $max_page ){ // ラストページなら表示数を計算 $results_per_page = $count % $hits; }else{ // ラストページ以外なら10 $results_per_page = $hits; } $nextpage = $currentpage+1; $prevpage = $currentpage-1; for($i = 0; $i < $results_per_page; $i++) { $imageFlag = $item->Items[$i]->Item->imageFlag; if ($imageFlag == "1") { $mediumImageUrls = $item->Items[$i]->Item->mediumImageUrls[0]->imageUrl; $affiliateUrl[$i] = $item->Items[$i]->Item->affiliateUrl; $itemName[$i] = $item->Items[$i]->Item->itemName; $itemCode[$i] = $item->Items[$i]->Item->itemCode; $spCode[$i] = $item->Items[$i]->Item->shopCode; $itemUrl[$i] = $item->Items[$i]->Item->itemUrl; $postageFlag[$i] = number_format((int)$item->Items[$i]->Item->postageFlag); $itemPrice[$i] = number_format((int)$item->Items[$i]->Item->itemPrice); $itemCaption[$i] = mb_strimwidth($item->Items[$i]->Item->itemCaption, 0, 380, '...', 'UTF-8'); echo '<div style="padding:10px 10px 0 10px;">'; echo '<div style="width:130px;height:130px;float:left;"><a href="'.$affiliateUrl[$i].'" target="_blank"><img src="'.$mediumImageUrls.'" alt="" /></a></div>'; echo '<div style="margin:0 0 0 136px;">'.$itemName[$i].'<br />'; echo '<span style="color:#ff0000;">価格 '.$itemPrice[$i].' 円</span><br />'; echo $itemUrl[$i].'<br />'; if($postageFlag[$i]==0){ echo "送料込".'<br />'; }else{ echo "送料別".'<br />'; } echo $itemCode[$i].'</div>'; $mysql_con = mysql_connect ("*******","*******","*******"); if ($mysql_con == false) { print "DB_Connect Error!"; exit; } //MySQLのデータベースを選択 $select_db = mysql_select_db ("*******",$mysql_con); if ($select_db == false) { print "DB_SELECT Error!"; exit; } //insert時の文字化け回避 mysql_query('set character set utf8'); $sql = "INSERT INTO rakuten_api VALUES ('$spCode[$i]','$itemCode[$i]','$itemName[$i]','$itemPrice[$i]','$itemUrl[$i]','$date')"; $result = mysql_query ($sql,$mysql_con); //実行した結果にエラーあったらエラー表示する if ($result == false) { print "Data Insert Error!"; exit; } else { print "Data Insert OK!"; } ?> <div style="clear:both; visibility:hidden; height:10px;">クリア</div> <hr style="width:100%;border-top:1px dotted #bbb;" /> </div> <?php } } if(isset($item)){ ?> <!-- Rakuten Web Services Attribution Snippet FROM HERE --> <div> <a href="http://webservice.rakuten.co.jp/" target="_blank"> <img src="http://webservice.rakuten.co.jp/img/credit/200709/credit_31130.gif" border="0" alt="楽天ウェブサービスセンター" title="楽天ウェブサービスセンター" width="311" height="30"/> </a> </div> <!-- Rakuten Web Services Attribution Snippet TO HERE --> <div>全 <?php echo number_format($count); ?> 品数</div><?php } // ページャー echo '<p>'; $nextpage= '2'; // $url_a ="<a style='background-color: #ffffff; color: #ff0000; margin: 0; padding: 0.2em 0.5em; border: solid 1px; text-decoration: none;' href=\"?keyword=$e_keyword&page="; $url_b ="\""; $html_Page_Link = Page_Link($max_page,$currentpage,$nextpage,$url_a,$url_b); echo $html_Page_Link; function Page_Link($max_page,$currentpage,$nextpage,$url_a,$url_b){ $html = ""; if($max_page < 1) return $html; if($currentpage > 1) $html .= $url_a.($currentpage-1).$url_b.' style="background-color: #ffffff; margin: 0; padding: 0.2em 0.5em; border: solid 1px; text-decoration: none;"'.">&laquo;</a>"; $prevpage = $currentpage - $nextpage; while ($prevpage < $currentpage) { $prevpage++; if($prevpage > 1) $html .= $url_a.($prevpage-1).$url_b.">".($prevpage-1)."</a>"; } $html .= '<span style="background-color: #ff0000; color: #ffffff; margin: 0; padding: 0.2em 0.5em; border: solid 1px #ff0000; text-decoration: none;">'.$currentpage.'</span>'; if($currentpage < $max_page){ $max_page = $max_page - $currentpage; if($max_page > $nextpage) $max_page=$nextpage; $plus=0; while ($plus < $max_page) { $nextpage=$currentpage+$plus+1; $html .= $url_a.$nextpage.$url_b.">".$nextpage."</a>"; $plus++; } $html .= $url_a.($currentpage+1).$url_b.' style="background-color: #ffffff; color: #ff0000; margin: 0; padding: 0.2em 0.4em; border: solid 1px; text-decoration: none;"'.">&raquo;</a>"; } return $html; } echo '</p>'; echo '</div>'; echo '</div>'; ?>

###補足情報(言語/FW/ツール等のバージョンなど)
php ver5.3
mysql ver5.1

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

退会済みユーザー

退会済みユーザー

2017/04/15 17:11

ソースコードが読みにくいので、インデントは揃えてください。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。