商品を検索する

商品検索APIを利用し、キーワードやカテゴリIDによる商品検索を行うためのサンプル。

使用API

ショッピング 商品検索

構成環境 Apache-2.2.10 + PHP-5.2.5

ダウンロード

サンプルご利用の際は、利用規約をご覧ください。利用規約は、ダウンロードパッケージ内のLICENSE.txtファイルに記載されています。

コード解説

ダウンロードしたアーカイブファイルを展開すると下記のようになります。

`-- sample1
    |-- ItemSearchForm
    |   `-- ItemSearchForm.php
    |-- LICENSE.txt
    |-- README.txt
    |-- common
    |   `-- common.php
    `-- css
        |-- default.css
        `-- prototype.css

common.php

<?php

/** @mainpage
* Yahoo!ショッピングWeb APISDK共通関数
*/

/**
* @file
* @brief Yahoo!ショッピングWeb APISDK共通関数
*
* Yahoo!ショッピングWeb APISDKで、共通で使用する設定・関数を集めたファイルです。
*
* PHP version 5
*
*/

/**
* @brief Client ID(アプリケーションID)
*
* Yahoo! JAPANが提供するWeb APIを利用するアプリケーションには、Client ID(アプリケーションID)が必要です。
* Yahoo!デベロッパーネットワークで取得したClient ID(アプリケーションID)を設定してください。
* Client ID(アプリケーションID)の取得については
* http://e.developer.yahoo.co.jp/webservices/register_application
* をご覧ください。
*
* @var string
*/
$appid = "あなたのClient ID(アプリケーションID)";//取得したClient ID(アプリケーションID)を設定

/**
* @brief カテゴリーID一覧
*
* 商品カテゴリの一覧です。
* キーにカテゴリID、値にカテゴリ名が入っています。
* @var array
*/
$categories = array(
                 "1" => "すべてのカテゴリから",
                 "13457"=> "ファッション",
                 "2498"=> "食品",
                 "2500"=> "ダイエット、健康",
                 "2501"=> "コスメ、香水",
                 "2502"=> "パソコン、周辺機器",
                 "2504"=> "AV機器、カメラ",
                 "2505"=> "家電",
                 "2506"=> "家具、インテリア",
                 "2507"=> "花、ガーデニング",
                 "2508"=> "キッチン、生活雑貨、日用品",
                 "2503"=> "DIY、工具、文具",
                 "2509"=> "ペット用品、生き物",
                 "2510"=> "楽器、趣味、学習",
                 "2511"=> "ゲーム、おもちゃ",
                 "2497"=> "ベビー、キッズ、マタニティ",
                 "2512"=> "スポーツ",
                 "2513"=> "レジャー、アウトドア",
                 "2514"=> "自転車、車、バイク用品",
                 "2516"=> "CD、音楽ソフト",
                 "2517"=> "DVD、映像ソフト",
                 "10002"=> "本、雑誌、コミック"
                 );
/**
* @brief ソート方法一覧
*
* 検索結果のソート方法の一覧です。
* キーに検索用パラメータ、値にソート方法が入っています。
* @access private
* @var array
*
*/
$sortOrder = array(
                "-score" => "おすすめ順",
                "+price" => "商品価格が安い順",
                "-price" => "商品価格が高い順",
                "+name" => "ストア名昇順",
                "-name" => "ストア名降順",
                "-sold" => "売れ筋順"
                );

/**
* @brief 特殊文字を HTML エンティティに変換する
*
* これは、htmlspecialchars()を使いやすくするための関数です。
* htmlspecialchars() http://jp.php.net/htmlspecialcharsより
*   文字の中には HTML において特殊な意味を持つものがあり、
*   それらの本来の値を表示したければ HTML の表現形式に変換してやらなければなりません。
*   この関数は、これらの変換を行った結果の文字列を返します。
*
*   '&' (アンパサンド) は '&amp;' になります。
*   ENT_QUOTES が設定されている場合のみ、 ''' (シングルクオート) は '&#039;'になります。
*   '<' (小なり) は '&lt;' になります。
*   '>' (大なり) は '&gt;' になります。
*   ''' (シングルクオート) は '&#039;'になります。
*
* echo h("<>&'\""); //&lt;&gt;&amp;&#039;&quotと出力します。
*
* @param string $str 変換したい文字列
*
* @return string html用に変換した文字列
*
*/
function h($str)
{
 return htmlspecialchars($str, ENT_QUOTES);
}

?>

ItemSearchForm.php

<?php
/** @mainpage
*  商品検索フォームを表示
*/

/**
* @file
* @brief 商品検索フォームを表示
*
* 商品検索フォームを表示し、
* フォームから入力された値を条件に、検索APIを利用して、検索した結果をhtmlに埋め込んで表示します。
* 検索結果に対して、カテゴリーによる絞り込みと、並び順の変更ができます。
*
* PHP version 5
*/

require_once("../common/common.php");//共通ファイル読み込み(使用する前に、appidを指定してください。)

$hits = array();
$query = !empty($_GET["query"]) ? $_GET["query"] : "";
$sort =  !empty($_GET["sort"]) && array_key_exists($_GET["sort"], $sortOrder) ? $_GET["sort"] : "-score";
$category_id = ctype_digit($_GET["category_id"]) && array_key_exists($_GET["category_id"], $categories) ? $_GET["category_id"] : 1;

if ($query != "") {
 $query4url = rawurlencode($query);
 $sort4url = rawurlencode($sort);
 $url = "http://shopping.yahooapis.jp/ShoppingWebService/V1/itemSearch?appid=$appid&query=$query4url&category_id=$category_id&sort=$sort4url";
 $xml = simplexml_load_file($url);
 if ($xml["totalResultsReturned"] != 0) {//検索件数が0件でない場合,変数$hitsに検索結果を格納します。
     $hits = $xml->Result->Hit;
 }
}
?>
<html>
 <head>
     <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
     <title>ショッピングデモサイト - 商品を検索する</title>
     <link rel="stylesheet" type="text/css" href="../css/prototype.css"/>
 </head>
 <body>
     <h1><a href="./ItemSearchForm.php">ショッピングデモサイト - 商品を検索する</a></h1>
     <form action="./ItemSearchForm.php" class="Search">
     表示順序:
     <select name="sort">
     <?php foreach ($sortOrder as $key => $value) { ?>
     <option value="<?php echo h($key); ?>" <?php if($sort == $key) echo "selected=\"selected\""; ?>><?php echo h($value);?></option>
     <?php } ?>
     </select>
     キーワード検索:
     <select name="category_id">
     <?php foreach ($categories as $id => $name) { ?>
     <option value="<?php echo h($id); ?>" <?php if($category_id == $id) echo "selected=\"selected\""; ?>><?php echo h($name);?></option>
     <?php } ?>
     </select>
     <input type="text" name="query" value="<?php echo h($query); ?>"/>
     <input type="submit" value="Yahooショッピングで検索"/>
     </form>
     <?php foreach ($hits as $hit) { ?>
     <div class="Item">
         <h2><a href="<?php echo h($hit->Url); ?>"><?php echo h($hit->Name); ?></a></h2>
         <p><a href="<?php echo h($hit->Url); ?>"><img src="<?php echo h($hit->Image->Medium); ?>" /></a><?php echo h($hit->Description); ?></p>
     </div>
     <?php } ?>
<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet -->
<a href="http://developer.yahoo.co.jp/about">
<img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn2_105_17.gif" width="105" height="17" title="Webサービス by Yahoo! JAPAN" alt="Webサービス by Yahoo! JAPAN" border="0" style="margin:15px 15px 15px 15px"></a>
<!-- End Yahoo! JAPAN Web Services Attribution Snippet -->
 </body>
</html>

アプリケーションの管理

利用のルール

開発のヒント