2011/03/15

phpでAPI

php講習 3/15

今日は、認定日のため午前中ハローワークに行って来ました。

<2時間目>
最後に少しだけ出席、授業内容わからず、PCを起動して
eclipse、XAMPP、VMwareの環境を起動したことこでお昼。
楽天の何かをやってました。
(楽天て聞くと円天を思い出すのは考えすぎか)
今日は、出席者が少ないため、symfonyはやらないそうです。

<3時間目>
お昼休みに、Webの手順どおり(おまけ/API)と聞いたので、とりあえず
その通りにやってみる。
(1)楽天のデベロッパーIDとアフィリエイトIDを取得
(2)PEARライブラリの設置(パスは間違えないように)
(3)サンプルコードに取得したIDを入れ、ローカルで実行。
require_once 'Services/Rakuten.php';

$api = new Services_Rakuten('デベロッパーID', 'アフィリエイトID');
$api->doItemSearch("山", "101070", array('sort' => '-reviewCount','page' => 1,'imageFlag' => 1));
$data = $api->getResultData();

print_r($data);

実行結果画面で出力された$dataから、XMLデータを取得する。
Array
(
    [count] => 112959
    [page] => 1
    [first] => 1
    [last] => 30
    [hits] => 30
    [carrier] => 0
    [pageCount] => 100
    [Items] => Array
        (
            [Item] => Array
                (
                    [0] => Array
                        (
                            [itemName] => ★あす楽対応★★レビューを書いて2点以上ご注文
...
                            [itemCode] => vvv:10002539
                            [itemPrice] => 2079
...

サンプルのデータでキーワードは「山」、商品コード「101070」(スポーツ・アウトドア)
このデータから、商品の情報を取得するためのphpコードを作成。

ここまでは準備で、ここからが本題。
(4)XMLのデータ($data)から、商品一覧を表示するテーブルをHTMLで作成する。
使う項目は「mediumImageUrl」 「itemName」それとあとで「itemCode」
ただし、以下のコードはブログを保存すると壊れるので、一部コードを変更しています。
そのままコピーしてもつかえません。

<table border='1'>
<php
foreach ($data["Items"]["Item"] as $item) {
    print "tr" ;
    print "td" ;
    print "<img src=\"" . $item["mediumImageUrl"] . "\">";
    print "/td" ;
    print "td" ;
    print "商品 : " . $item["itemName"] ;
    print "<br />";
    print "価格 : " . $item["itemPrice"] ;
    print "/td" ;
    print "/tr" ;
}
>
<table>

さらににアフェリエイトのリンクも張った。
print "<td><a href=\"".$item["affiliateUrl"]. "\">" ;
 print "<img src=\"" . $item["mediumImageUrl"] . "\">";
 print "</a></td>" ;
<4時間目>
(5)一覧が出来たら、フォームで、キーワード、ジャンルを指定して検索できるようにする。
if (isset($_POST["keywd"])) {
$keywd = $_POST["keywd"] ;
} else {
$keywd = "山" ;
}
if (isset($_POST["genre"])) {
$genre = $_POST["genre"] ;
} else {
$genre = "101070" ;
}

$api = new Services_Rakuten('デベロッパーID', 'アフィリエイトID');
$api->doItemSearch($keywd, $genre, array('sort' => '-reviewCount','page' => 1,'imageFlag' => 1));
$data = $api->getResultData();

(6)一度入力した情報は、検索フォームに残すほうが親切。
キーワード:
<input type="text" name="keywd" size="30" value="<?php echo $keywd ?>"/>

(7)ジャンルはポップアップにする。
ポップアップのための配列データ取得は、「楽天ジャンル検索API」から取得する。
http://api.rakuten.co.jp/rws/3.0/rest?
developerId=[YOUR_developerID]
&operation=GenreSearch
&version=2007-04-11
&genreId=0

この実行結果から得られるXMLデータから、商品コードの配列を作成
<child>
<genreId>101070</genreId>
<genreName>スポーツ・アウトドア</genreName>
<genreLevel>1</genreLevel>
</child>

<child>
<genreId>100938</genreId>
<genreName>ダイエット・健康</genreName>
<genreLevel>1</genreLevel>
</child>
$data_array = array(
101070 => 'スポーツ・アウトドア' ,
100938 => 'ダイエット・健康' ,
); 
検索条件のjジャンルをフォームのセレクトにする。
商品:
 <select name="genre">
 <?php foreach ($data_array as $key1=>$value) { ?>
  <option value="<?php echo $key1 ?>" <?php if ($key1 == $genre ) { 
echo 'selected="selected"' ;} ?>><?php echo $value ?></option>

 <?php } ?>
 </select>
一覧表のカラムにadd.phpのリンクを追加し、add.phpで商品コードを受け取る。
print "<td>" ;
 print "<a href=\"add.php?itemCode=".$item["itemCode"] . "\">追加する</a>" ;
 print "</td>" ;

結果としてこちらになりました。

<5時間目>
add.phpの作成、コメントを入力できるようにする。
投稿結果をcommentテーブルに入れる。
そのとき、以下の項目も入れられるように、commentテーブルもカラム追加しておく。
ItemCode
など5項目ほどあり、ここはメモをPCに残して来たので詳細は木曜日に追記します。

<6時間目>
授業を始めようとしたことろで、停電のため中止。
みんなしぶしぶ帰宅。

これだと何をしているか判らないと思うので、
phpのコードと作業の詳細は、PCのpearの環境を作ってからもう少し整理して追記します。
明日は、お休みです。

0 件のコメント:

コメントを投稿