248183 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

楽天ウェブサービスセンターブログ

楽天ウェブサービスセンターブログ

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

Keyword Search

▼キーワード検索

Category

Calendar

Archives

2025.06
2025.05
2025.04
2025.03
2025.02

Freepage List

2007.03.22
XML
前回では楽天商品検索APIから商品情報を取得し、
返ってきたXMLのデータを配列にいれるところまでを行いました。

いよいよ最後の仕上げ、商品情報を取り出して、HTMLに表示させます。

[サンプルコード全文はこちら]
[楽天商品検索APIの仕様はこちら]

■配列から商品情報の取り出しと表示


   94// 連想配列から値を取得
   95if($values){
   96  $item_temp  = null;
   97  foreach ($values as $data) {
   98    if(isset($data['tag'])){
   99      // タグ名のよって分岐
  100      switch ($data['tag']) {
  101        case 'STATUS'://共通パラメータ:Status
  102            if(isset($data['value'])){
  103                $status  = $data['value'];
  104            }
  105            break;
  106        case 'STATUSMSG': //共通パラメータ:Statusに特化したメッセージ
  107            if(isset($data['value'])){
  108                $statusmsg  = $data['value'];
  109            }
  110            break;
  111        case 'COUNT'://全体情報:検索数
  112            if(isset($data['value'])){
  113                $count  = $data['value'];
  114            }
  115            break;
  116        case 'ITEM':                          //商品情報:ITEMタグ開始
  117            if($data['type'] == 'open'){
  118                $item_temp = array();
  119            }else if($data['type'] == 'close'){ //商品情報:ITEMタグ終
  120                array_push($item_array,$item_temp);
  121                $item_temp = null;
  122            }
  123            break;
  124        default:
  125            if(is_array($item_temp)){         //商品情報:ITEMタグ終了
  126                if(isset($data['value'])){
  127                    $item_temp['tag']ata['value'];
  128                }
  129            }
  130            break;
  131      }
  132    }
  133  }
  134}
  135 }
  136// 以下からHTML表示部分


前回でXMLから生成した配列構造体の各要素についてみていきます。
(配列構造体の中にはXMLの要素名'tag'、値'value'、タイプ'type'が含まれています。)

97行目でタグ名をまずみます。
100行目のswitch文で、必要なタグ要素の値を取り出しています。

101行目、106行目の判定で共通パラメタとなるStatus,StatusMsgの値取得を行います。

    
商品情報に関しては、<Item></Item>の中にはいっていますので
117行目、ITEMタグの開始(タグのtypeがopen)と同時に配列を宣言し、
119行目、ITEMタグの終了(タグのtypeがclose)までは
127行目でそれぞれのタグ毎に商品情報を連想配列$item_tempに格納しています。
連想配列$item_tempには各商品情報(<Item></Item>)毎に、
それぞれの商品がItemの中の要素名'tag'をキーとしてその値が格納されます。

120行目では、ITEMタグの終了(close)となりますので、
商品情報の連想配列を通常の配列(item_array)に1商品として追加しています。

これ以降は検索結果のHTML表示となります。

    138 header("Content-type:text/html;charset=UTF-8");



138行目ですが、ブラウザに返す、ヘッダ情報にコンテンツタイプの指定(text/html)と
文字エンコーディングの指定(UTF-8)を入れます。

172行目以降は楽天商品検索APIにリクエストを投げた結果をHTMLのテーブルタグで
1件ずつ一覧表示をする部分になります。


   172 <!-- API検索結果表示 -->
   173 <font style="font-size:14px;">
   174 <?php if($status    != ""){ ?>取得結果: <?=$status?><br><? } ?>
   175 <?php if($statusmsg != ""){ ?>取得内容: <?=$statusmsg?><br><? } ?>
   176 <?php if($count > 0){       ?>取得件数: <?=$count?><br>
   177 <table width="80%" border="0" cellspacing="0" cellpadding="0" style="margin: 5px 0pt 0pt 0px;">
   



174行目,175行目,176行目で共通パラメタ(Status,StatusMsg)からの情報を表示します。
取得件数も0以上であれば表示します。


   
   178 <tr><td bgcolor="#afafaf">
   179 <table width="100%" border=0 cellspacing=1 cellpadding=5 style="font-size:12px;">
   180 <tr align="center" style="background-color: #eeeeee;">
   181 <td width="8%" >写真</td>
   182 <td width="47%">商品名</td>
   183 <td width="15%">価格</td>
   184 <td width="30%">ショップ名</td>
   185 </tr>
   186 <?php foreach ($item_array as $item){ ?>
   187 <tr style="background-color: #ffffff;">
   188 <td width="8%"  align="center"><a href="<?=$item['ITEMURL']?>" target="_top"><img src="<?=$item[IMAGEURL']?>" border=0></a></td>
   189 <td width="47%" align="left"><a href="<?=$item['AFFILIATEURL']?>" target="_top"><font size="-1"><?['ITEMNAME']?></a></td>
   190 <td width="15%" align="right" nowrap> <?=$item['ITEMPRICE']?> 円</td>
   191 <td width="47%" align="left"><a href="<?=$item['SHOPURL']?>" target="_top"><font size="-1"><?=$itePNAME']?></a></td>
   192 </tr>
   193 <?php } ?>
   194 </table>
   195 </td></tr></table>
   196 <?php } ?>
   197 </font>
   198 <!-- /API検索結果表示 -->



178行目~185行目はHTMLのテーブルの見出し部分になります。
商品情報は、「写真画像」「商品名」「価格」「ショップ名」を表示させます。

186行目では、商品配列(item_array)にはいっている商品情報の連想配列を1つずつ取り出しています。
XMLをパースした時、すべての商品情報(<ITEM>タグの中の要素と値)が含まれていますから、
商品検索結果のHTMLを表示させるのに必要な情報(itemUrl,itemPrice,shopUrl,shopName,itemName)
を連想配列から取り出して表示させています。

以上でPHPのサンプルソースの解説は終了です。

サンプルソースということでエラー処理や複雑なXMLのパース処理はなるべく簡略化していますが
200行そこそこのソースで、楽天商品検索APIを使ったマッシュアップサイトが
簡単に作成できます。

今すぐ作成してみましょう!






お気に入りの記事を「いいね!」で応援しよう

Last updated  2007.03.22 10:58:16
[サンプルソース紹介] カテゴリの最新記事



© Rakuten Group, Inc.
X