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


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

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

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

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

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/03/01 03:56:11
  • 終了:2011/03/01 12:34:57

ベストアンサー

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492011/03/01 04:56:53

ポイント72pt

楽天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件)

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492011/03/01 04:56:53ここでベストアンサー

ポイント72pt

楽天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にはセッション変数から取り出すためのキーだけを送るという手段を取ります(セッション変数について学ばれれば、言葉の意味が理解できるようになるはずですので、どこかに控えて置いてくださいね)

id:niwa-mikiho No.2

niwa-mikiho回答回数508ベストアンサー獲得回数382011/03/01 08:01:28

ポイント8pt

$data = file_get_contents($file);


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


$xml = simplexml_load_string($data);


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


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



$data = file_get_contents($file);


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

id:hiroponta

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

2011/03/01 12:33:23
id:taroe No.3

taroe回答回数1099ベストアンサー獲得回数1322011/03/01 08:36:59

ポイント27pt

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

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

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

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

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

渡せばよいですよ。

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

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

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

id:hiroponta

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

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

2011/03/01 12:34:06

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません