人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

週末PHP学習の初心者です。

このAPIのサンプルがあるのですが
http://web.shirakabako.net/rakutenichiba/itemsearch/code.html

楽天の商品一覧を取得しているようなのですが、
これを個別のページを作って、そこに飛ばしたいのですが、やり方が分かりません。

HTMLのページからキーワードを取得したりするものだと$_GET['id'];などを使うやり方を他のサイトで見て学習したのですが、
上記のURLではforeachを使ってループしてますが、こんな時には詳細ページはどうやって作ればいいのでしょうか?

初心者なので、出来る限り分かりやすい回答をお願いいたします。
出来れば、サンプルか分かりやすいURLがあれば助かります。

●質問者: ぽこたん
●カテゴリ:インターネット ウェブ制作
✍キーワード:API HTML PHP URL キーワード
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● うぃんど
●72ポイント ベストアンサー

楽天APIではサンプルに示された下記以外にも様々な情報が同時に渡ってきています

$itemName = $item->itemName;

$itemPrice = $item->itemPrice;

$itemCaption = $item->itemCaption;

$affiliateUrl = $item->affiliateUrl;

$smallImageUrl = $item->smallImageUrl;

渡ってくる情報の詳細は下記になります

http://webservice.rakuten.co.jp/api/itemsearch/#INDEX04

楽天APIから受け取った情報の中から必要な情報だけを渡すこともできますが、受け取った側で取捨選択するほうが楽なので、ここでは単純に全ての情報を受け渡すことにします

$parameters = base64_encode(serialize($item));
print <<< page
<table width="80%" cellspacing="0" cellpadding="0">
 <tr>
 <td class="image" rowspan="2">
 <a href="{$affiliateUrl}" target="_blank"><img src="{$smallImageUrl}"</a>
 </td>
 <td><a href="{$affiliateUrl}" target="_blank">{$itemName}</a></td>
 <td class="price">{$itemPrice}円</td>
 <td>
 <a href="detail.php?item={$parameters}" target="_blank">詳細</a>
 </td>
 </tr>
 <tr>
 <td colspan="3">{$content}</td>
 </tr>
</table>

受け取った値を単純に出力しているだけです整形までは行ってません(整形はサンプルと同様にtableタグなどを使うと楽でしょう)

detail.php

<?php
$parameters = unserialize(base64_decode($_GET["item"]));
echo '<pre>';
var_dump($parameters);
echo '</pre>';

$_GETなどによる受け渡しというところまでは事前に調べたご様子なので上記のような例としましたが、情報が表を流れてしまいます(POSTでもGETでもユーザーとサーバー間でやり取りが発生することに違いはありません)し、送信用の情報作成と受け取った情報の展開という二度手間となってもいるため、実際のシステムにおいては上記のようには行わず、楽天APIから受け取った情報はセッション変数に保管しておき、detail.phpにはセッション変数から取り出すためのキーだけを送るという手段を取ります(セッション変数について学ばれれば、言葉の意味が理解できるようになるはずですので、どこかに控えて置いてくださいね)


2 ● niwa-mikiho
●8ポイント

$data = file_get_contents($file);


これでサーバーから XML を取得しています。


$xml = simplexml_load_string($data);


これでプログラムで扱いやすい形に変換して、$xml に格納します。


あとは商品 Item 数だけループしているだけです。



$data = file_get_contents($file);


ここで一度 $data をファイルに書き出して、中身を見ながら弄ってみると分かりやすいですい。

◎質問者からの返答

この部分は、既に理解しております。


3 ● taroe
●27ポイント

一覧表示から詳細表示を作りたいということですね?

http://webservice.rakuten.co.jp/api/itemsearch/

APIリファレンスもよく見たほうがよいでしょう。

一覧表示で取得したときにデータをすべて持ってますので

PHPなら、セッション変数を用いて、次の画面で必要な情報をセットして

渡せばよいですよ。

http://c-brains.jp/blog/wsg/08/05/22-193020.php

詳細画面で再度APIで検索する方法もありますが、同じ商品を出せるような

キーがないですのであまりお勧めしないです。

◎質問者からの返答

上記の方と同じでセッション変数を学べば分かるかもしれないというご回答ですね。

ありがとうございました★

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ