<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns="http://purl.org/rss/1.0/"
>

<channel rdf:about="http://rakuten.pgtop.net/">
<title>楽天ウェブサービス初心者入門講座</title>
<link>http://rakuten.pgtop.net/</link>
<description>楽天ウェブサービスを使うと、楽天の膨大な商品情報を利用したアプリケーションが作れるようになります。つまりオリジナルのネットショップが作れるということです。楽天ウェブサービスでは様々なAPIが公開されています。楽天ウェブサービス初心者入門講座では、楽天ウェブサービスを初心者向けに基礎から解説します。</description>
<dc:language>ja</dc:language>
<admin:errorReportsTo rdf:resource="mailto:info@seesaa.jp" />
<admin:generatorAgent rdf:resource="http://blog.seesaa.jp/" />
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/96928769.html" />
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/96918899.html" />
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/96461718.html" />
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/96388023.html" />
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/96047740.html" />
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/96030995.html" />
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/95942597.html" />
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/95822388.html" />
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/95748648.html" />
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/95729619.html" />
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/95647034.html" />
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/95533608.html" />
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/95504968.html" />
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/92583914.html" />
<rdf:li rdf:resource="http://rakuten.pgtop.net/article/87384952.html" />
</rdf:Seq>
</items>
</channel>

<item rdf:about="http://rakuten.pgtop.net/article/96928769.html">
<title>楽天ウェブサービス sample005の解説について。</title>
<link>http://rakuten.pgtop.net/article/96928769.html</link>
<description>楽天ウェブサービス に対して、動的にパラメータを渡すプログラムは簡単です。要領は検索キーワードの時とほとんど同じです。実際に動作を確認しながら解説を読むと理解しやすいです。http://ws.bzen.net/pgtop/rakuten/sample005/html側で選択リストボックスを設定している部分が複雑に見えます。しかしよく見ると単純な繰り返しだということがわかります。■index.html側(1)検索キーワードに value で初期値を設定するようにしました。&amp;lt...</description>
<dc:subject>Step19・sample005の解説</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-05-16T16:50:39+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> に対して、動的にパラメータを渡すプログラムは簡単です。要領は検索キーワードの時とほとんど同じです。<br /><br />実際に動作を確認しながら解説を読むと理解しやすいです。<br /><a href="http://ws.bzen.net/pgtop/rakuten/sample005/" target="_blank">http://ws.bzen.net/pgtop/rakuten/sample005/</a><br /><br />html側で選択リストボックスを設定している部分が複雑に見えます。しかしよく見ると単純な繰り返しだということがわかります。<br /><br /><br />■index.html側<br /><br />(1)検索キーワードに value で初期値を設定するようにしました。<br /><br />&lt;input type="text" id="txtWord" size="30" /&gt;<br />↓<br />&lt;input type="text" id="txtWord" size="30" value="キーワードを入力してください。" /&gt;<br /><br /><br />(2)取得件数、取得ページのテキストボックスを設定している部分です。<br /><br />取得件数&lt;input type="text" id="txtHits" size="3" value="10" /&gt;　<br />取得ページ&lt;input type="text" id="txtPage" size="3" value="1" /&gt;　<br /><br />こちらでも初期値を設定しています。<br /><br /><br />(3)ソートの選択リストボックスを指定している部分です。<br /><br />ソート&lt;select id="slctSort"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="+affiliateRate"&gt;アフィリエイト料率順（昇順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="-affiliateRate"&gt;アフィリエイト料率順（降順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="+reviewCount"&gt;レビュー件数順（昇順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="-reviewCount"&gt;レビュー件数順（降順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="+itemPrice" selected&gt;価格順（昇順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="-itemPrice"&gt;価格順（降順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="+updateTimestamp"&gt;商品更新日時順（昇順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="-updateTimestamp"&gt;商品更新日時順（降順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="random"&gt;ランダム順&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/select&gt;　<br /><br />selectedで初期値を選択しています。リセットした時はこの値に戻ります。<br /><br /><br />(4)商品画像有無の選択リストボックスを指定している部分です。<br /><br />商品画像&lt;select id="slctImg"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="0"&gt;すべての商品&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="1" selected&gt;商品画像ありのみ&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/select&gt;<br /><br /><br />■index.js側<br /><br />(1)リセットをクリックした時の設定を簡潔にしました。<br /><br />$('fm').onreset = function (){clearDisp();}<br />↓<br />$('fm').onreset = clearDisp;<br /><br /><br />■item.js側<br /><br />(1)それぞれの項目の値を、入力フォームから取得するようにしました。<br /><br />paramList += "&amp;hits=" + $F('txtHits');<br />paramList += "&amp;page=" + $F('txtPage');<br />paramList += "&amp;sort=" + encodeURIComponent($F('slctSort'));<br />paramList += "&amp;imageFlag=" + $F('slctImg');<br /><br /><br />【解説】<br />(1)選択リストボックスは Ajax を使って動的に作成することもできますが、あまり変化のある項目ではないため、html側に直接埋め込みました。<br /><br /><br />(2)アフィリエイト料率順はユーザーが選択するものではないため、実際には不要です。今回は学習目的なので、わざと使っています。
]]></content:encoded>
</item>
<item rdf:about="http://rakuten.pgtop.net/article/96918899.html">
<title>楽天 様々な検索項目を設定できるようにする方法。</title>
<link>http://rakuten.pgtop.net/article/96918899.html</link>
<description>楽天ウェブサービス には、検索キーワード以外にも様々なパラメータが用意されています。今回はユーザーが、 1ページあたりの取得件数、取得ページ、ソート、商品画像有無などの項目を自由に設定して、検索できるように改良してみましょう。これから作るシステムです。実際に動かしてみてください。http://ws.bzen.net/pgtop/rakuten/sample005/＊数字は半角で入力してください。取得件数(hits) 1~30の範囲で取得ページ(page) 1~100の範囲で前...</description>
<dc:subject>Step18・様々な検索項目を設定する</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-05-16T14:42:52+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> には、検索キーワード以外にも様々なパラメータが用意されています。<br /><br />今回はユーザーが、 1ページあたりの取得件数、取得ページ、ソート、商品画像有無などの項目を自由に設定して、検索できるように改良してみましょう。<br /><br />これから作るシステムです。実際に動かしてみてください。<br /><a href="http://ws.bzen.net/pgtop/rakuten/sample005/" target="_blank">http://ws.bzen.net/pgtop/rakuten/sample005/</a><br /><br />＊数字は半角で入力してください。<br />取得件数(hits) 1～30の範囲で<br />取得ページ(page) 1～100の範囲で<br /><br />前回までのプログラムより、詳細な条件で検索できることがわかります。<br /><br />それでは実際に作ってみましょう。<br /><br />【1】sample004 をコピーして、 sample005 フォルダを作成します。<br /><br />＊「\」はWindowsでは円記号のことです。<br />保存先　C:\phpdev\www\rakuten<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-92.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-92-thumbnail2.gif" alt="rakuten-92.gif" width="150" height="107" border="0" /></a><br /><br /><br />【2】「index.html」、「index.js」、「item.js」を一部変更します。<br /><br />＊ファイルは UTF-8 形式で保存してください。<br />＊index.css は変更無し。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-93.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-93-thumbnail2.gif" alt="rakuten-93.gif" width="150" height="98" border="0" /></a><br /><br />保存先　C:\phpdev\www\rakuten\sample005<br />ファイル名　index.html<br /><div class="pg"><br />&lt;html&gt;<br />&nbsp;&nbsp;&lt;head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="../lib/prototype.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="index.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="item.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;link href="index.css" rel="stylesheet" type="text/css"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;rakuten&lt;/title&gt;<br />&nbsp;&nbsp;&lt;/head&gt;<br />&nbsp;&nbsp;&lt;body&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;form id="fm"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" id="txtWord" size="30" value="キーワードを入力してください。" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="submit" value="検索する" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="reset" value="リセット" /&gt;&lt;br /&gt;&lt;br /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得件数&lt;input type="text" id="txtHits" size="3" value="10" /&gt;　<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得ページ&lt;input type="text" id="txtPage" size="3" value="1" /&gt;　<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ソート&lt;select id="slctSort"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="+affiliateRate"&gt;アフィリエイト料率順（昇順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="-affiliateRate"&gt;アフィリエイト料率順（降順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="+reviewCount"&gt;レビュー件数順（昇順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="-reviewCount"&gt;レビュー件数順（降順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="+itemPrice" selected&gt;価格順（昇順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="-itemPrice"&gt;価格順（降順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="+updateTimestamp"&gt;商品更新日時順（昇順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="-updateTimestamp"&gt;商品更新日時順（降順）&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="random"&gt;ランダム順&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/select&gt;　<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;商品画像&lt;select id="slctImg"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="0"&gt;すべての商品&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="1" selected&gt;商品画像ありのみ&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/select&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="state"&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="result"&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&lt;/body&gt;<br />&lt;/html&gt;<br /></div><br /><br />保存先　C:\phpdev\www\rakuten\sample005<br />ファイル名　index.js<br /><div class="pg"><br />onload = init;<br />var state;<br />var result;<br /><br />function init() {<br />&nbsp;&nbsp;$('fm').onsubmit = function (){return ( itemDisp() );}<br />&nbsp;&nbsp;$('fm').onreset = clearDisp;<br />&nbsp;&nbsp;state = $('state');<br />&nbsp;&nbsp;result = $('result');<br />}<br /><br /><br />function getValue(xmlData, tagName) {<br />&nbsp;&nbsp;var tmp = xmlData.getElementsByTagName(tagName);<br />&nbsp;&nbsp;var tmpValue;<br /><br />&nbsp;&nbsp;//子要素を取得<br />&nbsp;&nbsp;var cn = tmp[0].childNodes;<br /><br />&nbsp;&nbsp;//値がある場合は取得<br />&nbsp;&nbsp;if(cn.length &gt;= 1) {<br />&nbsp;&nbsp;&nbsp;&nbsp;tmpValue = tmp[0].firstChild.nodeValue;<br />&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;tmpValue = "";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;return tmpValue;<br />}<br /><br /><br />function clearDisp() {<br />&nbsp;&nbsp;state.innerHTML = "";<br />&nbsp;&nbsp;result.innerHTML = "";<br />}<br /></div><br /><br />保存先　C:\phpdev\www\rakuten\sample005<br />ファイル名　item.js<br /><div class="pg"><br />function itemDisp() {<br />&nbsp;&nbsp;result.innerHTML = "";<br />&nbsp;&nbsp;state.innerHTML = "処理中です・・・&lt;br /&gt;\n";<br /><br />&nbsp;&nbsp;var url = "../lib/ItemSearch.php";<br /><br />&nbsp;&nbsp;var paramList = "keyword=" + encodeURIComponent($F('txtWord'));<br />&nbsp;&nbsp;paramList += "&amp;hits=" + $F('txtHits');<br />&nbsp;&nbsp;paramList += "&amp;page=" + $F('txtPage');<br />&nbsp;&nbsp;paramList += "&amp;sort=" + encodeURIComponent($F('slctSort'));<br />&nbsp;&nbsp;paramList += "&amp;imageFlag=" + $F('slctImg');<br /><br />&nbsp;&nbsp;new Ajax.Request(url,<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method: 'get',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccess: getData,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onFailure: showErrMsg,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: paramList<br />&nbsp;&nbsp;});<br /><br />&nbsp;&nbsp;function getData(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;var response = data.responseXML.getElementsByTagName('Response');<br />&nbsp;&nbsp;&nbsp;&nbsp;var status = getValue(response[0], 'Status');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(!(status == "Success")){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データが見つかりませんでした。";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;var item = response[0].getElementsByTagName('Item');<br />&nbsp;&nbsp;&nbsp;&nbsp;var tmpHtml = "";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i = 0; i &lt; item.length; i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//値を取得<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemNameValue = getValue(item[i], 'itemName');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemPriceValue = getValue(item[i], 'itemPrice');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var affiliateUrlValue = getValue(item[i], 'affiliateUrl');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var mediumImageUrlValue = getValue(item[i], 'mediumImageUrl');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemCaptionValue = getValue(item[i], 'itemCaption');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//HTML作成<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;p&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;a href='" + affiliateUrlValue + "'&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += itemNameValue + "&lt;/a&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;b&gt;" + itemPriceValue + "円&lt;/b&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(mediumImageUrlValue != ""){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;a href='" + affiliateUrlValue + "'&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;img src='"+ mediumImageUrlValue + "'&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;/a&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "商品画像なし";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(itemCaptionValue.length &gt;= 200){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += itemCaptionValue.substring(0, 200);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += itemCaptionValue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;/p&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;hr /&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//結果を表示<br />&nbsp;&nbsp;&nbsp;&nbsp;result.innerHTML = tmpHtml;<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得しました。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;function showErrMsg(){<br />&nbsp;&nbsp;&nbsp;&nbsp;clearDisp();<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得できませんでした。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;return false;<br />}<br /></div><br /><br /><br />プログラムの準備ができたら実行してみましょう。<br /><br />【3】C:\phpdev フォルダ内にある「2K-NT-XP-phpdev_start.bat」をダブルクリックして、phpdev を起動します。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-57.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-57-thumbnail2.gif" alt="rakuten-57.gif" width="150" height="65" border="0" /></a><br /><br /><br />【4】Webブラウザを起動して、 sample005 の動作を確認します。<br /><br /><a href="http://localhost/rakuten/sample005/" target="_blank">http://localhost/rakuten/sample005/</a><br /><br />・Internet Explorer の場合<br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-94.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-94-thumbnail2.gif" alt="rakuten-94.gif" width="150" height="71" border="0" /></a><br /><br /><br />【5】好きな検索キーワードを入力し、他の条件も変えてみてください。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-95.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-95-thumbnail2.gif" alt="rakuten-95.gif" width="150" height="71" border="0" /></a><br /><br />＊取得件数、取得ページは必ず半角数字で入力します。<br /><br /><br />【6】「検索する」ボタンをクリックします。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-96.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-96-thumbnail2.gif" alt="rakuten-96.gif" width="150" height="71" border="0" /></a><br /><br /><br />【7】検索結果が表示されました。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-97.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-97-thumbnail2.gif" alt="rakuten-97.gif" width="150" height="95" border="0" /></a><br /><br />取得件数など、設定した条件通りの商品データが表示されているでしょうか？<br /><br /><br />【8】いろいろ条件を変えて、検索してみてください。<br /><br /><br />【9】「リセット」ボタンをクリックします。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-98.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-98-thumbnail2.gif" alt="rakuten-98.gif" width="150" height="95" border="0" /></a><br /><br /><br />【10】画面が初期の状態に、リセットされました。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-99.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-99-thumbnail2.gif" alt="rakuten-99.gif" width="150" height="69" border="0" /></a><br /><br /><br />【11】Firefox でも同じように動作を確認してください。<br /><br /><br />これでより詳細な設定で、商品データを取得できるようになりました。<br /><br /><br />【ワンポイント】<br />実は楽天ウェブサービスには、もっと多くの項目が用意されています。必要に応じて加えていけばよいでしょう。詳細は楽天ウェブサービスのオンラインドキュメントをご覧ください。<br /><br /><a href="http://webservice.rakuten.co.jp/api/itemsearch/" target="_blank">http://webservice.rakuten.co.jp/api/itemsearch/</a><br /><br />入力パラメーターのフィールド名を参考にしてください。中継スクリプトへ追加することも忘れずに。
]]></content:encoded>
</item>
<item rdf:about="http://rakuten.pgtop.net/article/96461718.html">
<title>楽天ウェブサービス sample004の解説について。</title>
<link>http://rakuten.pgtop.net/article/96461718.html</link>
<description>楽天ウェブサービス から、検索キーワードを使って商品データを取得するためのプログラムは、追加するソースコードはそれほど多くありません。実際に動作を確認しながら、じっくりプログラムを追うと、必ず理解できるようになります。http://ws.bzen.net/pgtop/rakuten/sample004/■index.html側(1)ユーザーが操作を行なうための入力フォームを設置している部分です。&amp;lt;form id="fm"&amp;gt;&amp;nbsp;&amp;nbsp;&amp;lt;input...</description>
<dc:subject>Step17・sample004の解説</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-05-12T14:15:13+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> から、検索キーワードを使って商品データを取得するためのプログラムは、追加するソースコードはそれほど多くありません。<br /><br />実際に動作を確認しながら、じっくりプログラムを追うと、必ず理解できるようになります。<br /><br /><a href="http://ws.bzen.net/pgtop/rakuten/sample004/" target="_blank">http://ws.bzen.net/pgtop/rakuten/sample004/</a><br /><br /><br />■index.html側<br /><br />(1)ユーザーが操作を行なうための入力フォームを設置している部分です。<br /><br />&lt;form id="fm"&gt;<br />&nbsp;&nbsp;&lt;input type="text" id="txtWord" size="30" /&gt;<br />&nbsp;&nbsp;&lt;input type="submit" value="検索する" /&gt;<br />&nbsp;&nbsp;&lt;input type="reset" value="リセット" /&gt;<br />&lt;/form&gt;<br /><br />＊フォームとテキストボックスには id名 を付けています。<br /><br /><br />(2)フォーム上に設置できるボタンの種類には、サブミット(submit)とリセット(reset)の他に、汎用ボタン(button)があります。<br /><br />汎用ボタンを使うこともできますが、今回はあえてサブミットとリセットを使いました。これらのボタンがもともと持つ機能を使いたいからです。<br /><br /><br />(3)通常、サブミットをクリックした時は、method 属性で指定した転送方法(GET または POST)で、action 属性で指定した動作を呼び出します。<br /><br />&lt;form name="fm" method="POST" action="xxx.php"&gt;<br /><br />action 属性には、データを渡すプログラムを指定することが多いです。この方法では画面遷移がともないます。<br /><br />しかし今回は Ajax を使って非同期通信を行なうので、method 属性や action 属性は不要です。また prototype.js の $F() を使いたいので、 name ではなく id を使います。両方書いても大丈夫です。<br /><br />&lt;form id="fm"&gt;<br /><br /><br />■index.js側<br /><br />(1)サブミットとリセットをクリックした時のイベントハンドラを設定し、無名関数 function () の中で、さらに関数を呼び出している部分です。<br /><br />function init() {<br />&nbsp;&nbsp;$('fm').onsubmit = function (){return ( itemDisp() );}<br />&nbsp;&nbsp;$('fm').onreset = function (){clearDisp();}<br />&nbsp;&nbsp;省略<br />}<br /><br />サブミットとリセットでは、無名関数の中に少し違いがあることに気付きましたか？<br /><br /><br />(2)サブミットをクリックした時は、呼び出した関数 itemDisp() が処理を行なった後、最後に false を返すようにしています。そのため最終的にはサブミットをキャンセルします。(return が必要)<br /><br />= function (){return ( false );}　となるイメージ<br />処理が行なわれた後にキャンセルされることがポイントです。<br /><br /><br />(3)リセットをクリックした時は、呼び出した関数 clearDisp() が処理を行なった後、リセット本来のフォームを初期状態に戻す処理を行ないます。(return は不要)<br /><br />$('fm').onreset = clearDisp;<br />と書いても同じです。<br /><br /><br />(4)リセットをクリックした時に呼び出す関数を定義している部分です。<br /><br />function clearDisp() {<br />&nbsp;&nbsp;state.innerHTML = "";<br />&nbsp;&nbsp;result.innerHTML = "";<br />}<br /><br />メッセージを表示する部分と、商品データを表示する部分をクリアしています。リセットはフォーム上の部品だけしかクリアしないため、このような処理が必要です。<br /><br /><br />■item.js側<br /><br />(1)非同期通信を行なう前に、商品データをクリアする処理を加えました。<br /><br />result.innerHTML = "";<br /><br /><br />(2)フォームのテキストボックスから値を取得して、エンコードしている部分です。<br /><br />var paramList = "keyword=" + encodeURIComponent($F('txtWord'));<br /><br />$F()は prototype.js により拡張された機能です。フォーム上の部品から簡単に値を取得できます。<br /><br />＊id名を指定します。<br /><br /><br />(3)関数 itemDisp() は、最後に false を返すようにしています。<br /><br />function itemDisp() {<br />&nbsp;&nbsp;省略<br />&nbsp;&nbsp;return false;<br />}<br /><br />＊サブミットをキャンセルします。<br /><br /><br />【ワンポイント】<br />もし汎用ボタンを使うなら、フォーム上の部品をクリアする処理と、検索キーワードを入力して「Enterキー」を押した時の処理を加えなければなりません。<br /><br />そのためサブミットとリセットを使ったほうが、簡単というわけです。
]]></content:encoded>
</item>
<item rdf:about="http://rakuten.pgtop.net/article/96388023.html">
<title>楽天 検索キーワードを入力できるようにする方法。</title>
<link>http://rakuten.pgtop.net/article/96388023.html</link>
<description>楽天ウェブサービス では、楽天市場の2000万点を超える商品データを取得することができます。前回までのサンプルプログラムでは、ソースコードに直接キーワードを埋め込んでいました。これでは自由自在に商品を表示するには不十分です。そこで今回は、検索キーワードをユーザーがフォームから入力し、商品を検索できるように改良してみましょう。これから作るシステムです。実際に動かしてみてください。http://ws.bzen.net/pgtop/rakuten/sample004/【1】samp...</description>
<dc:subject>Step16・検索キーワードを入力する</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-05-11T20:09:56+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> では、楽天市場の2000万点を超える商品データを取得することができます。<br /><br />前回までのサンプルプログラムでは、ソースコードに直接キーワードを埋め込んでいました。これでは自由自在に商品を表示するには不十分です。<br /><br />そこで今回は、検索キーワードをユーザーがフォームから入力し、商品を検索できるように改良してみましょう。<br /><br />これから作るシステムです。実際に動かしてみてください。<br /><a href="http://ws.bzen.net/pgtop/rakuten/sample004/" target="_blank">http://ws.bzen.net/pgtop/rakuten/sample004/</a><br /><br /><br />【1】sample003 をコピーして、 sample004 フォルダを作成します。<br /><br />＊「\」はWindowsでは円記号のことです。<br />保存先　C:\phpdev\www\rakuten<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-83.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-83-thumbnail2.gif" alt="rakuten-83.gif" width="150" height="99" border="0" /></a><br /><br /><br />【2】「index.html」、「index.js」、「item.js」を一部変更します。<br /><br />＊ファイルは UTF-8 形式で保存してください。<br />＊index.css は変更無し。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-84.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-84-thumbnail2.gif" alt="rakuten-84.gif" width="150" height="90" border="0" /></a><br /><br />保存先　C:\phpdev\www\rakuten\sample004<br />ファイル名　index.html<br /><div class="pg"><br />&lt;html&gt;<br />&nbsp;&nbsp;&lt;head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="../lib/prototype.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="index.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="item.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;link href="index.css" rel="stylesheet" type="text/css"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;rakuten&lt;/title&gt;<br />&nbsp;&nbsp;&lt;/head&gt;<br />&nbsp;&nbsp;&lt;body&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;form id="fm"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" id="txtWord" size="30" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="submit" value="検索する" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="reset" value="リセット" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="state"&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="result"&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&lt;/body&gt;<br />&lt;/html&gt;<br /></div><br /><br />保存先　C:\phpdev\www\rakuten\sample004<br />ファイル名　index.js<br /><div class="pg"><br />onload = init;<br />var state;<br />var result;<br /><br />function init() {<br />&nbsp;&nbsp;$('fm').onsubmit = function (){return ( itemDisp() );}<br />&nbsp;&nbsp;$('fm').onreset = function (){clearDisp();}<br />&nbsp;&nbsp;state = $('state');<br />&nbsp;&nbsp;result = $('result');<br />}<br /><br /><br />function getValue(xmlData, tagName) {<br />&nbsp;&nbsp;var tmp = xmlData.getElementsByTagName(tagName);<br />&nbsp;&nbsp;var tmpValue;<br /><br />&nbsp;&nbsp;//子要素を取得<br />&nbsp;&nbsp;var cn = tmp[0].childNodes;<br /><br />&nbsp;&nbsp;//値がある場合は取得<br />&nbsp;&nbsp;if(cn.length &gt;= 1) {<br />&nbsp;&nbsp;&nbsp;&nbsp;tmpValue = tmp[0].firstChild.nodeValue;<br />&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;tmpValue = "";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;return tmpValue;<br />}<br /><br /><br />function clearDisp() {<br />&nbsp;&nbsp;state.innerHTML = "";<br />&nbsp;&nbsp;result.innerHTML = "";<br />}<br /></div><br /><br />保存先　C:\phpdev\www\rakuten\sample004<br />ファイル名　item.js<br /><div class="pg"><br />function itemDisp() {<br />&nbsp;&nbsp;result.innerHTML = "";<br />&nbsp;&nbsp;state.innerHTML = "処理中です・・・&lt;br /&gt;\n";<br /><br />&nbsp;&nbsp;var url = "../lib/ItemSearch.php";<br /><br />&nbsp;&nbsp;var paramList = "keyword=" + encodeURIComponent($F('txtWord'));<br />&nbsp;&nbsp;paramList += "&amp;hits=10";<br />&nbsp;&nbsp;paramList += "&amp;page=1";<br />&nbsp;&nbsp;paramList += "&amp;sort=" + encodeURIComponent("+itemPrice");<br />&nbsp;&nbsp;paramList += "&amp;imageFlag=1";<br /><br /><br />&nbsp;&nbsp;new Ajax.Request(url,<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method: 'get',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccess: getData,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onFailure: showErrMsg,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: paramList<br />&nbsp;&nbsp;});<br /><br />&nbsp;&nbsp;function getData(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;var response = data.responseXML.getElementsByTagName('Response');<br />&nbsp;&nbsp;&nbsp;&nbsp;var status = getValue(response[0], 'Status');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(!(status == "Success")){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データが見つかりませんでした。";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;var item = response[0].getElementsByTagName('Item');<br />&nbsp;&nbsp;&nbsp;&nbsp;var tmpHtml = "";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i = 0; i &lt; item.length; i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//値を取得<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemNameValue = getValue(item[i], 'itemName');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemPriceValue = getValue(item[i], 'itemPrice');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var affiliateUrlValue = getValue(item[i], 'affiliateUrl');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var mediumImageUrlValue = getValue(item[i], 'mediumImageUrl');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemCaptionValue = getValue(item[i], 'itemCaption');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//HTML作成<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;p&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;a href='" + affiliateUrlValue + "'&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += itemNameValue + "&lt;/a&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;b&gt;" + itemPriceValue + "円&lt;/b&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;a href='" + affiliateUrlValue + "'&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;img src='"+ mediumImageUrlValue + "'&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;/a&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(itemCaptionValue.length &gt;= 200){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += itemCaptionValue.substring(0, 200);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += itemCaptionValue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;/p&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;hr /&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//結果を表示<br />&nbsp;&nbsp;&nbsp;&nbsp;result.innerHTML = tmpHtml;<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得しました。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;function showErrMsg(){<br />&nbsp;&nbsp;&nbsp;&nbsp;clearDisp();<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得できませんでした。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;return false;<br />}<br /></div><br /><br /><br />プログラムの準備ができたら実行してみましょう。<br /><br />【3】C:\phpdev フォルダ内にある「2K-NT-XP-phpdev_start.bat」をダブルクリックして、phpdev を起動します。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-57.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-57-thumbnail2.gif" alt="rakuten-57.gif" width="150" height="65" border="0" /></a><br /><br /><br />【4】Webブラウザを起動して、 sample004 の動作を確認します。<br /><br /><a href="http://localhost/rakuten/sample004/" target="_blank">http://localhost/rakuten/sample004/</a><br /><br />・Internet Explorer の場合<br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-85.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-85-thumbnail2.gif" alt="rakuten-85.gif" width="150" height="92" border="0" /></a><br /><br /><br />【5】好きな検索キーワードを入力し、「検索する」ボタンをクリックします。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-86.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-86-thumbnail2.gif" alt="rakuten-86.gif" width="150" height="90" border="0" /></a><br /><br /><br />【6】検索結果が表示されました。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-87.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-87-thumbnail2.gif" alt="rakuten-87.gif" width="150" height="138" border="0" /></a><br /><br /><br />【7】次は「リセット」ボタンをクリックしてみましょう。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-88.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-88-thumbnail2.gif" alt="rakuten-88.gif" width="150" height="149" border="0" /></a><br /><br /><br />【8】画面が初期の状態に、リセットされました。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-89.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-89-thumbnail2.gif" alt="rakuten-89.gif" width="150" height="97" border="0" /></a><br /><br /><br />【9】わざと無さそうな検索キーワードを入力してみると、「データが見つかりませんでした」というメッセージが表示されます。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-90.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-90-thumbnail2.gif" alt="rakuten-90.gif" width="150" height="99" border="0" /></a><br /><br /><br />【10】Firefox でも同じように動作を確認してください。<br /><br /> <a href="http://rakutenweb.up.seesaa.net/image/rakuten-91.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-91-thumbnail2.gif" alt="rakuten-91.gif" width="147" height="150" border="0" /></a><br /><br /><br />以上で楽天ウェブサービスの膨大なデータに、検索キーワードを使ってアクセスできるようになりました。<br /><br />あとは 1ページあたりの取得件数、取得ページ、ソート、商品画像有無なども変更できると便利ですね。
]]></content:encoded>
</item>
<item rdf:about="http://rakuten.pgtop.net/article/96047740.html">
<title>楽天ウェブサービス sample003の解説について。</title>
<link>http://rakuten.pgtop.net/article/96047740.html</link>
<description>楽天ウェブサービス にリクエストを送り、返ってくる XML のタグに、空の値が含まれる場合にも対応できるように、値を取得する部分を関数にしました。複雑な処理を関数としてまとめることで、重複したコードが無くなり、プログラムがシンプルになります。■index.js側(1)関数 getValue() を新たに定義しました。この関数は、 XML の一部分とタグ名を引数として受け取ります。子要素がある場合は値があることになるので取り出し、値が無い場合は空文字を代入しています。最後に値を...</description>
<dc:subject>Step15・sample003の解説</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-05-08T15:10:17+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> にリクエストを送り、返ってくる XML のタグに、空の値が含まれる場合にも対応できるように、値を取得する部分を関数にしました。<br /><br />複雑な処理を関数としてまとめることで、重複したコードが無くなり、プログラムがシンプルになります。<br /><br /><br />■index.js側<br /><br />(1)関数 getValue() を新たに定義しました。<br /><br />この関数は、 XML の一部分とタグ名を引数として受け取ります。子要素がある場合は値があることになるので取り出し、値が無い場合は空文字を代入しています。最後に値を返します。<br /><br />function getValue(xmlData, tagName) {<br />&nbsp;&nbsp;var tmp = xmlData.getElementsByTagName(tagName);<br />&nbsp;&nbsp;var tmpValue;<br /><br />&nbsp;&nbsp;//子要素を取得<br />&nbsp;&nbsp;var cn = tmp[0].childNodes;<br /><br />&nbsp;&nbsp;//値がある場合は取得<br />&nbsp;&nbsp;if(cn.length &gt;= 1) {<br />&nbsp;&nbsp;&nbsp;&nbsp;tmpValue = tmp[0].firstChild.nodeValue;<br />&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;tmpValue = "";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;return tmpValue;<br />}<br /><br /><br />(2)以下のように try-catch文 を使って、簡単に書くこともできます。<br /><br />function getValue(xmlData, tagName) {<br />&nbsp;&nbsp;var tmp = xmlData.getElementsByTagName(tagName);<br />&nbsp;&nbsp;var tmpValue;<br /><br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;&nbsp;tmpValue = tmp[0].firstChild.nodeValue;<br />&nbsp;&nbsp;} catch (e) {<br />&nbsp;&nbsp;&nbsp;&nbsp;tmpValue = "";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;return tmpValue;<br />}<br /><br />空の場合に値を取り出そうとすると、エラーが発生します。わざとエラーを出して捕捉するという仕組みです。こちらのほうが単純ですね。<br /><br /><br />■item.js側<br /><br />(1)独自に定義した関数 getValue() を使うと、値を取得するプログラムが短く書けます。<br /><br />この関数は XML の一部分とタグ名を引数として呼び出すと、値が返ってくるように作っています。<br /><br />前<br />var status = response[0].getElementsByTagName('Status')[0].firstChild.nodeValue;<br />↓<br />後<br />var status = getValue(response[0], 'Status');<br /><br />かなり短くなりましたね。<br /><br /><br />(2)商品データを取得するプログラムも短くなりました。<br /><br />var itemNameValue = getValue(item[i], 'itemName');<br />var itemPriceValue = getValue(item[i], 'itemPrice');<br />var affiliateUrlValue = getValue(item[i], 'affiliateUrl');<br />var mediumImageUrlValue = getValue(item[i], 'mediumImageUrl');<br />var itemCaptionValue = getValue(item[i], 'itemCaption');<br /><br /><br />(3)HTMLタグを作成している部分を、短く区切って見やすくしました。<br /><br />tmpHtml += "&lt;p&gt;";<br /><br />tmpHtml += "&lt;a href='" + affiliateUrlValue + "'&gt;";<br />tmpHtml += itemNameValue + "&lt;/a&gt;";<br />tmpHtml += "&lt;br /&gt;";<br /><br />tmpHtml += "&lt;b&gt;" + itemPriceValue + "円&lt;/b&gt;";<br />tmpHtml += "&lt;br /&gt;";<br /><br />tmpHtml += "&lt;a href='" + affiliateUrlValue + "'&gt;";<br />tmpHtml += "&lt;img src='"+ mediumImageUrlValue + "'&gt;";<br />tmpHtml += "&lt;/a&gt;";<br />tmpHtml += "&lt;br /&gt;";<br /><br />if(itemCaptionValue.length &gt;= 200){<br />&nbsp;&nbsp;tmpHtml += itemCaptionValue.substring(0, 200);<br />&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br />}else{<br />&nbsp;&nbsp;tmpHtml += itemCaptionValue;<br />&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br />}<br /><br />tmpHtml += "&lt;/p&gt;";<br />tmpHtml += "&lt;hr /&gt;";<br /><br />プログラムは横に長くなると見難くなるので、適当な部分で改行するようにしたほうがわかりやすいです。<br /><br />sample002 のプログラムと比べると、全体的にだいぶシンプルになったと思います。<br /><br /><br />【ワンポイント】<br />関数 getValue() は index.js 側に書いていますが、item.js 側に書いても動きます。しかし今後も共通して使う機能なので、index.js 側に書いておいたほうがよいでしょう。<br /><br />または lib フォルダに、別ファイルとして配置しておくという手もあります。
]]></content:encoded>
</item>
<item rdf:about="http://rakuten.pgtop.net/article/96030995.html">
<title>楽天 XMLの値が空でも対応できるように、プログラムを改良する方法。</title>
<link>http://rakuten.pgtop.net/article/96030995.html</link>
<description>楽天ウェブサービス で提供されている XML データは、タグの種類によっては値が空の場合があることが、前回の検証で分かりました。原因が分かれば、あとはプログラムを修正するだけです。値が空の場合を想定したプログラムに改良してみましょう。ネットショップで商品名や商品価格が空のことは無いと思いますが、念のため全ての項目をチェックすることにします。また値を取り出す処理が重複しているので、関数としてまとめることにしました。ついでにHTML作成部分を見やすくします。今回の改良点をまとめる...</description>
<dc:subject>Step14・XMLの値が空でも対応する方法</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-05-08T11:15:35+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> で提供されている XML データは、タグの種類によっては値が空の場合があることが、前回の検証で分かりました。<br /><br />原因が分かれば、あとはプログラムを修正するだけです。値が空の場合を想定したプログラムに改良してみましょう。<br /><br />ネットショップで商品名や商品価格が空のことは無いと思いますが、念のため全ての項目をチェックすることにします。<br /><br />また値を取り出す処理が重複しているので、関数としてまとめることにしました。ついでにHTML作成部分を見やすくします。<br /><br />今回の改良点をまとめると、以下のようになります。<br /><br />・XMLの値が空の場合に対応する<br />・値を取得する部分を関数にする<br />・HTMLタグ作成部分を短く区切る<br /><br /><br />【1】sample002 をコピーして、 sample003 フォルダを作成します。<br /><br />＊「\」はWindowsでは円記号のことです。<br />保存先　C:\phpdev\www\rakuten<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-73.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-73-thumbnail2.gif" alt="rakuten-73.gif" width="150" height="88" border="0" /></a><br /><br /><br />【2】「index.js」と「item.js」を一部変更します。<br /><br />＊ファイルは UTF-8 形式で保存してください。<br />＊index.html、index.css は変更無し。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-74.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-74-thumbnail2.gif" alt="rakuten-74.gif" width="150" height="89" border="0" /></a><br /><br />保存先　C:\phpdev\www\rakuten\sample003<br />ファイル名　index.js<br /><div class="pg"><br />onload = init;<br />var state;<br />var result;<br /><br />function init() {<br />&nbsp;&nbsp;state = $('state');<br />&nbsp;&nbsp;result = $('result');<br />&nbsp;&nbsp;itemDisp();<br />}<br /><br /><br />function getValue(xmlData, tagName) {<br />&nbsp;&nbsp;var tmp = xmlData.getElementsByTagName(tagName);<br />&nbsp;&nbsp;var tmpValue;<br /><br />&nbsp;&nbsp;//子要素を取得<br />&nbsp;&nbsp;var cn = tmp[0].childNodes;<br /><br />&nbsp;&nbsp;//値がある場合は取得<br />&nbsp;&nbsp;if(cn.length &gt;= 1) {<br />&nbsp;&nbsp;&nbsp;&nbsp;tmpValue = tmp[0].firstChild.nodeValue;<br />&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;tmpValue = "";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;return tmpValue;<br />}<br /></div><br /><br />保存先　C:\phpdev\www\rakuten\sample003<br />ファイル名　item.js<br /><div class="pg"><br />function itemDisp() {<br />&nbsp;&nbsp;state.innerHTML = "処理中です・・・&lt;br /&gt;\n";<br /><br />&nbsp;&nbsp;var url = "../lib/ItemSearch.php";<br /><br />&nbsp;&nbsp;var paramList = "keyword=" + encodeURIComponent("ヨーグルト");<br />&nbsp;&nbsp;paramList += "&amp;hits=10";<br />&nbsp;&nbsp;paramList += "&amp;page=1";<br />&nbsp;&nbsp;paramList += "&amp;sort=" + encodeURIComponent("+itemPrice");<br />&nbsp;&nbsp;paramList += "&amp;imageFlag=1";<br /><br /><br />&nbsp;&nbsp;new Ajax.Request(url,<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method: 'get',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccess: getData,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onFailure: showErrMsg,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: paramList<br />&nbsp;&nbsp;});<br /><br />&nbsp;&nbsp;function getData(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;var response = data.responseXML.getElementsByTagName('Response');<br />&nbsp;&nbsp;&nbsp;&nbsp;var status = getValue(response[0], 'Status');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(!(status == "Success")){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データが見つかりませんでした。";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;var item = response[0].getElementsByTagName('Item');<br />&nbsp;&nbsp;&nbsp;&nbsp;var tmpHtml = "";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i = 0; i &lt; item.length; i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//値を取得<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemNameValue = getValue(item[i], 'itemName');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemPriceValue = getValue(item[i], 'itemPrice');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var affiliateUrlValue = getValue(item[i], 'affiliateUrl');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var mediumImageUrlValue = getValue(item[i], 'mediumImageUrl');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemCaptionValue = getValue(item[i], 'itemCaption');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//HTML作成<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;p&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;a href='" + affiliateUrlValue + "'&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += itemNameValue + "&lt;/a&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;b&gt;" + itemPriceValue + "円&lt;/b&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;a href='" + affiliateUrlValue + "'&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;img src='"+ mediumImageUrlValue + "'&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;/a&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(itemCaptionValue.length &gt;= 200){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += itemCaptionValue.substring(0, 200);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += itemCaptionValue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;/p&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;hr /&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//結果を表示<br />&nbsp;&nbsp;&nbsp;&nbsp;result.innerHTML = tmpHtml;<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得しました。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;function showErrMsg(){<br />&nbsp;&nbsp;&nbsp;&nbsp;clearDisp();<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得できませんでした。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />}<br /></div><br /><br /><br />プログラムの準備ができたら実行してみましょう。<br /><br />【3】C:\phpdev フォルダ内にある「2K-NT-XP-phpdev_start.bat」をダブルクリックして、phpdev を起動します。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-57.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-57-thumbnail2.gif" alt="rakuten-57.gif" width="150" height="65" border="0" /></a><br /><br /><br />【4】Webブラウザを起動して、 sample003 の動作を確認します。<br /><br /><a href="http://localhost/rakuten/sample003/" target="_blank">http://localhost/rakuten/sample003/</a><br /><br />・Internet Explorer の場合<br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-81.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-81-thumbnail2.gif" alt="rakuten-81.gif" width="150" height="118" border="0" /></a><br /><br /><br />【5】問題点だった商品も表示できました。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-82.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-82-thumbnail2.gif" alt="rakuten-82.gif" width="141" height="150" border="0" /></a><br /><br />検索キーワードが「ヨーグルト」で、1ページ目の4番目のデータは、商品説明文が無いのですが、きちんと動作していることがわかります。<br /><br /><br />【6】Firefox でも動作確認してください。
]]></content:encoded>
</item>
<item rdf:about="http://rakuten.pgtop.net/article/95942597.html">
<title>楽天 プログラムの問題点を特定し、解決する方法について。</title>
<link>http://rakuten.pgtop.net/article/95942597.html</link>
<description>楽天ウェブサービス の使い方の概略が、そろそろ分かりはじめた頃だと思いますが、実は前回までのプログラムには、改良しなければならない課題があります。もう既に気付いた読者の人もいるかもしれませんが、sample001 や sample002 のプログラムでは、検索キーワードによって、商品データが表示されないことがあります。少し具体的に言うと、同じ検索キーワードでも、表示されるページと表示されないページがあるのです。下の答えを見る前に、ちょっとだけ原因を考えてみてください。・表示さ...</description>
<dc:subject>Step13・問題点を特定し解決する方法</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-05-07T15:24:15+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> の使い方の概略が、そろそろ分かりはじめた頃だと思いますが、実は前回までのプログラムには、改良しなければならない課題があります。<br /><br />もう既に気付いた読者の人もいるかもしれませんが、sample001 や sample002 のプログラムでは、検索キーワードによって、商品データが表示されないことがあります。<br /><br />少し具体的に言うと、同じ検索キーワードでも、表示されるページと表示されないページがあるのです。<br /><br />下の答えを見る前に、ちょっとだけ原因を考えてみてください。<br /><br />・表示されない時がある<br />・でも正常に動く時もある<br /><br />原因が推測できましたか？<br /><br /><br />では回答です。まずは実際に現象を再現してみましょう。<br /><br />ただし楽天ウェブサービスのデータベースが更新されると、同じ手順では現象を確認できないことがあります。その場合はあなたのケースに置き換えて読んでください。<br /><br /><br />＊2008年5月7日時点のケース<br /><br />【1】例えば sample002 で、検索キーワードを「ヨーグルト」にすると、プログラムが処理中のまま動かなくなってしまいます。<br /><br />var paramList = "keyword=" + encodeURIComponent("ヨーグルト");<br />paramList += "&amp;hits=10";<br />paramList += "&amp;page=1";<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-75.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-75-thumbnail2.gif" alt="rakuten-75.gif" width="150" height="89" border="0" /></a><br /><br /><br />【2】そこで Firefox の Firebug を使ってプログラムを追うと、どうやら4つ目の item で、商品説明文の値を取得する部分に問題がありそうだ、ということが分かります。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-77.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-77-thumbnail2.gif" alt="rakuten-77.gif" width="150" height="67" border="0" /></a><br /><br /><br />【3】検証のため、検索キーワードは「ヨーグルト」で、取得ページを2ページ目にすると、正常に表示されました。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-76.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-76-thumbnail2.gif" alt="rakuten-76.gif" width="150" height="124" border="0" /></a><br /><br />var paramList = "keyword=" + encodeURIComponent("ヨーグルト");<br />paramList += "&amp;hits=10";<br />paramList += "&amp;page=2";<br /><br />1ページ目のデータに問題がありそうです。<br /><br /><br />【4】1ページ目でも、1ページあたりの取得件数を「3」にすると正常に表示されました。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-78.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-78-thumbnail2.gif" alt="rakuten-78.gif" width="148" height="150" border="0" /></a><br /><br />var paramList = "keyword=" + encodeURIComponent("ヨーグルト");<br />paramList += "&amp;hits=3";<br />paramList += "&amp;page=1";<br /><br /><br />【5】1ページ目で、取得件数を「4」にすると表示されません。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-79.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-79-thumbnail2.gif" alt="rakuten-79.gif" width="150" height="102" border="0" /></a><br /><br />var paramList = "keyword=" + encodeURIComponent("ヨーグルト");<br />paramList += "&amp;hits=4";<br />paramList += "&amp;page=1";<br /><br />ということは、やはり1ページ目の4件目のデータに、何か問題があると推測できます。<br /><br />では原因を調べてみましょう。<br /><br /><br />【6】Webブラウザの URL にパラメータを指定して、中継スクリプトを直接表示します。<br /><br />例<br /><a href="http://localhost/rakuten/lib/ItemSearch.php?&keyword=%E3%83%A8%E3%83%BC%E3%82%B0%E3%83%AB%E3%83%88&hits=10&page=1&sort=%2BitemPrice&imageFlag=1" target="_blank">http://localhost/rakuten/lib/ItemSearch.php?&keyword=%E3%83%A8%E3%83%BC%E3%82%B0%E3%83%AB%E3%83%88&hits=10&page=1&sort=%2BitemPrice&imageFlag=1</a><br /><br />検索キーワードとソートのエンコードはこちらで<br />・<a href="http://ws.bzen.net/ende/" target="_blank">エンコード・デコード</a><br /><br /><br />【7】4件目の itemCaption タグが、空だったことが原因だとわかりました。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-80.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-80-thumbnail2.gif" alt="rakuten-80.gif" width="150" height="89" border="0" /></a><br /><br />以前に XML を手動で表示する練習をしておいたことが、こんな時に役立つわけです。<br /><br />楽天ウェブサービスは、ネットショップのデータなので、商品名や商品価格が空のことは無いと思いますが、商品説明文などは空のケースがあるということです。<br /><br />したがって、値が空の場合を想定したプログラムに改良する必要があります。<br /><br /><br />【ワンポイント】<br />このように問題が起こったら、現象を再現し、プログラムを追い、仮説を立て、一つ一つ検証していくと原因が特定できます。<br /><br />原因が分かれば、あとはプログラムを修正するだけです。
]]></content:encoded>
</item>
<item rdf:about="http://rakuten.pgtop.net/article/95822388.html">
<title>楽天ウェブサービス sample002の解説について。</title>
<link>http://rakuten.pgtop.net/article/95822388.html</link>
<description>楽天ウェブサービス から取得したデータを、好みの HTML にカスタマイズするには、ちょっとコツが必要です。前回作成した sample002 のプログラムについて解説します。JavaScript のプログラム内では、文字列は「"」ダブルクォーテーションでくくることになっています。"あいう"「'」シングルクォーテーションでくくることもできますが、シングルクォーテーションはダブルクォーテーションの中で、単に文字として扱いたい場合もあるので、ダブルクォーテーションを使ったほうがわか...</description>
<dc:subject>Step12・sample002の解説</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-05-06T13:37:08+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> から取得したデータを、好みの HTML にカスタマイズするには、ちょっとコツが必要です。前回作成した sample002 のプログラムについて解説します。<br /><br />JavaScript のプログラム内では、文字列は「"」ダブルクォーテーションでくくることになっています。<br /><br />"あいう"<br /><br />「'」シングルクォーテーションでくくることもできますが、シングルクォーテーションはダブルクォーテーションの中で、単に文字として扱いたい場合もあるので、ダブルクォーテーションを使ったほうがわかりやすいです。<br /><br />"&lt;a href='" + affiliateUrlValue + "'&gt;"<br /><br />また HTML タグも文字列として扱いますので注意してください。変数は文字列ではないので、ダブルクォーテーションの外に出します。<br /><br />このダブルクォーテーションの中に入れたり、出したりという感覚が掴めれば、簡単にプログラミングができるようになります。<br /><br /><br />■item.js側<br /><br />(1)pタグ開始の部分です。<br /><br />tmpHtml += "&lt;p&gt;";<br /><br /><br />(2)商品名をアフィリエイトリンクにする部分です。<br /><br />tmpHtml += "&lt;a href='" + affiliateUrlValue + "'&gt;" + itemNameValue + "&lt;/a&gt;&lt;br /&gt;";<br /><br /><br />(3)商品価格を太字にして、「円」の文字を付ける部分です。<br /><br />tmpHtml += "&lt;b&gt;" + itemPriceValue + "円&lt;/b&gt;&lt;br /&gt;";<br /><br /><br />(4)商品画像をアフィリエイトリンクにする部分です。<br /><br />tmpHtml += "&lt;a href='" + affiliateUrlValue + "'&gt;&lt;img src='"+ mediumImageUrlValue + "'&gt;&lt;/a&gt;&lt;br /&gt;";<br /><br /><br />(5)商品説明文を200文字以内にする部分です。<br /><br />if(itemCaptionValue.length &gt;= 200){<br />&nbsp;&nbsp;tmpHtml += itemCaptionValue.substring(0, 200) + "&lt;br /&gt;";<br />}else{<br />&nbsp;&nbsp;tmpHtml += itemCaptionValue + "&lt;br /&gt;";<br />}<br /><br />「itemCaptionValue.length」で商品説明文の文字数を調べ、200文字以上なら1文字目から200文字目までを取り出し、200文字未満ならそのまま表示しています。<br /><br />ポイントは最初の文字を 0番目 と数えることと、最後の文字 -1 までになることです。<br /><br />例<br />"abcdefghij".substring(3, 6);　"def" になる<br /><br />"あいうえおかきくけこ".substring(3, 6);　"えおか" になる<br /><br />"aあbいcうdえeお".substring(3, 6);　"いcう" になる<br /><br />"aあb い/c　うd".substring(3, 6);　"い/" になる<br /><br />0番目から数えるので 3 は実際には4文字目、6は実際には7文字目なのですが -1 するので、そのまま6文字目までということになります。ちょっとややこしいですね。<br /><br />したがって1文字目から200文字目までを取り出すには、以下のようになります。<br />itemCaptionValue.substring(0, 200)<br /><br />全角、半角、全角空白、半角空白も1文字として数えます。実際にはいろんな記号も入ってくるので、思ったような文字数にならないことがあるかもしれません。<br /><br /><br />(6)pタグ終了の部分です。<br /><br />tmpHtml += "&lt;/p&gt;";<br /><br /><br />(7)水平タグの部分です。<br /><br />tmpHtml += "&lt;hr /&gt;";<br /><br /><br />当講座のWebサイト上では、幅が狭いのでわかり難いと思いますが、プログラムは「;」セミコロンまでが1行(文)です。コピーしてテキストエディタに貼り付けるとよくわかります。<br /><br /><br />【ワンポイント】<br /><br />今回はわかりやすいように、わざと1行にしましたが、プログラムは長いと見難いので、文字列を連結するコツを掴んだら、適当な長さで改行するようにしてください。<br /><br />例<br />tmpHtml += "&lt;a href='" + affiliateUrlValue + "'&gt;";<br />tmpHtml += itemNameValue + "&lt;/a&gt;&lt;br /&gt;";<br /><br />もっと細かく分けてもかまいません。<br /><br /><br />ここまで来ると、楽天ウェブサービスの商品データを使って、いろんなWebページが作れるようになります。いろいろ試してみてください。
]]></content:encoded>
</item>
<item rdf:about="http://rakuten.pgtop.net/article/95748648.html">
<title>楽天 商品を出力するHTML部分を、カスタマイズする方法について。</title>
<link>http://rakuten.pgtop.net/article/95748648.html</link>
<description>楽天ウェブサービス から商品データを取得できたら、あとは HTML を組み立てる部分を工夫するだけで、いろいろな表現ができます。今回は以下のことを実現してみましょう。・商品名をアフィリエイトリンクにする・商品価格を太字にして、「円」の文字を付ける・商品画像をアフィリエイトリンクにする・商品説明文を200文字以内にするこのへんはプログラミングというより、HTMLタグの知識が必要な部分です。【1】sample001 をフォルダごとコピーして、 sample002 を作成します。＊...</description>
<dc:subject>Step11・HTML部分をカスタマイズする</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-05-05T20:28:21+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> から商品データを取得できたら、あとは HTML を組み立てる部分を工夫するだけで、いろいろな表現ができます。<br /><br />今回は以下のことを実現してみましょう。<br /><br />・商品名をアフィリエイトリンクにする<br />・商品価格を太字にして、「円」の文字を付ける<br />・商品画像をアフィリエイトリンクにする<br />・商品説明文を200文字以内にする<br /><br />このへんはプログラミングというより、HTMLタグの知識が必要な部分です。<br /><br /><br />【1】sample001 をフォルダごとコピーして、 sample002 を作成します。<br /><br />＊「\」はWindowsでは円記号のことです。<br />保存先　C:\phpdev\www\rakuten<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-70.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-70-thumbnail2.gif" alt="rakuten-70.gif" width="150" height="89" border="0" /></a><br /><br /><br />【2】コピーなので sample001 とまったく同じですが、「item.js」だけを一部変更します。<br /><br />＊ファイルは UTF-8 形式で保存してください。<br />＊index.html、index.js、index.css は変更無し。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-71.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-71-thumbnail2.gif" alt="rakuten-71.gif" width="150" height="90" border="0" /></a><br /><br />保存先　C:\phpdev\www\rakuten\sample002<br />ファイル名　item.js<br /><div class="pg"><br />function itemDisp() {<br />&nbsp;&nbsp;state.innerHTML = "処理中です・・・&lt;br /&gt;\n";<br /><br />&nbsp;&nbsp;var url = "../lib/ItemSearch.php";<br /><br />&nbsp;&nbsp;var paramList = "keyword=" + encodeURIComponent("カニ");<br />&nbsp;&nbsp;paramList += "&amp;hits=10";<br />&nbsp;&nbsp;paramList += "&amp;page=1";<br />&nbsp;&nbsp;paramList += "&amp;sort=" + encodeURIComponent("+itemPrice");<br />&nbsp;&nbsp;paramList += "&amp;imageFlag=1";<br /><br /><br />&nbsp;&nbsp;new Ajax.Request(url,<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method: 'get',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccess: getData,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onFailure: showErrMsg,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: paramList<br />&nbsp;&nbsp;});<br /><br />&nbsp;&nbsp;function getData(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;var response = data.responseXML.getElementsByTagName('Response');<br />&nbsp;&nbsp;&nbsp;&nbsp;var status = response[0].getElementsByTagName('Status')[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(!(status == "Success")){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データが見つかりませんでした。";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;var item = response[0].getElementsByTagName('Item');<br />&nbsp;&nbsp;&nbsp;&nbsp;var tmpHtml = "";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i = 0; i &lt; item.length; i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//値を取得<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemName = item[i].getElementsByTagName('itemName');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemNameValue = itemName[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemPrice = item[i].getElementsByTagName('itemPrice');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemPriceValue = itemPrice[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var affiliateUrl = item[i].getElementsByTagName('affiliateUrl');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var affiliateUrlValue = affiliateUrl[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var mediumImageUrl = item[i].getElementsByTagName('mediumImageUrl');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var mediumImageUrlValue = mediumImageUrl[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemCaption = item[i].getElementsByTagName('itemCaption');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemCaptionValue = itemCaption[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//HTML作成<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;p&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;a href='" + affiliateUrlValue + "'&gt;" + itemNameValue + "&lt;/a&gt;&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;b&gt;" + itemPriceValue + "円&lt;/b&gt;&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;a href='" + affiliateUrlValue + "'&gt;&lt;img src='"+ mediumImageUrlValue + "'&gt;&lt;/a&gt;&lt;br /&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(itemCaptionValue.length &gt;= 200){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += itemCaptionValue.substring(0, 200) + "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += itemCaptionValue + "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;/p&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;hr /&gt;";<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//結果を表示<br />&nbsp;&nbsp;&nbsp;&nbsp;result.innerHTML = tmpHtml;<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得しました。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;function showErrMsg(){<br />&nbsp;&nbsp;&nbsp;&nbsp;clearDisp();<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得できませんでした。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />}<br /></div><br /><br /><br />プログラムの準備ができたら実行してみましょう。<br /><br />【3】C:\phpdev フォルダ内にある「2K-NT-XP-phpdev_start.bat」をダブルクリックして、phpdev を起動します。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-57.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-57-thumbnail2.gif" alt="rakuten-57.gif" width="150" height="65" border="0" /></a><br /><br /><br />【4】Webブラウザを起動して、動作を確認します。<br /><br /><a href="http://localhost/rakuten/sample002/" target="_blank">http://localhost/rakuten/sample002/</a><br /><br />・Internet Explorer の場合<br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-68.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-68-thumbnail2.gif" alt="rakuten-68.gif" width="150" height="80" border="0" /></a><br /><br />・Firefox の場合<br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-69.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-69-thumbnail2.gif" alt="rakuten-69.gif" width="150" height="81" border="0" /></a><br /><br /><br />【5】商品名か商品画像をクリックすると、楽天の該当する商品ページが開きます。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-72.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-72-thumbnail2.gif" alt="rakuten-72.gif" width="150" height="113" border="0" /></a><br /><br /><br />【6】検索キーワードなどの値を変えて、いろいろ商品データを取得してみてください。<br /><br /><br />これである程度カタチになってきましたね。<br /><br /><br />【ワンポイント】<br />検索キーワードを工夫すると、より適切な商品が絞り込まれます。<br /><br />・「カニ」を「蟹」、「タラバガニ」、「ズワイガニ」など具体的なキーワードにする<br />・「旬 カニ」のように、2語以上の複合キーワードにする<br />・除外キーワード(NGKeyword)をパラメータとして含める<br /><br />＊除外キーワードを使う場合は、中継プログラムの ItemSearch.php 側で受け取れるようにする必要があります。
]]></content:encoded>
</item>
<item rdf:about="http://rakuten.pgtop.net/article/95729619.html">
<title>楽天ウェブサービス sample001の解説について。</title>
<link>http://rakuten.pgtop.net/article/95729619.html</link>
<description>楽天ウェブサービス から商品データを取得できたので、 sample001 のプログラムについて、要点を解説します。sample001 で使ったプログラムは Ajax初心者入門講座 を先に学習していれば、ほとんど説明なしでもわかると思います。Ajaxプログラムの詳細については、説明が重複するので Ajax初心者入門講座 をご覧ください。今回は、重要な部分だけに絞って説明します。■index.html側(1)JavaScript や CSS を外部ファイルとして読み込んでいる部分...</description>
<dc:subject>Step10・sample001の解説</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-05-05T16:39:16+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> から商品データを取得できたので、 sample001 のプログラムについて、要点を解説します。<br /><br />sample001 で使ったプログラムは <a href="http://ajax.pgtop.net/" target="_blank">Ajax初心者入門講座</a> を先に学習していれば、ほとんど説明なしでもわかると思います。<br /><br />Ajaxプログラムの詳細については、説明が重複するので Ajax初心者入門講座 をご覧ください。今回は、重要な部分だけに絞って説明します。<br /><br /><br />■index.html側<br /><br />(1)JavaScript や CSS を外部ファイルとして読み込んでいる部分です。<br /><br />&lt;script type="text/javascript" src="../lib/prototype.js"&gt;&lt;/script&gt;<br />&lt;script type="text/javascript" src="index.js"&gt;&lt;/script&gt;<br />&lt;script type="text/javascript" src="item.js"&gt;&lt;/script&gt;<br />&lt;link href="index.css" rel="stylesheet" type="text/css"&gt;<br /><br />＊libフォルダにあるファイルは相対パスで指定しています。<br />＊他は同一フォルダ内なので、ファイル名だけでかまいません。<br /><br /><br />(2)商品データやメッセージを表示する場所に id 名を付けている部分です。<br /><br />&lt;div id="state"&gt;&lt;/div&gt;<br />&lt;div id="result"&gt;&lt;/div&gt;<br /><br /><br />■index.js側<br /><br />(1)ページが読込まれた時に呼び出す関数を指定している部分です。<br /><br />onload = init;<br />＊関数名の後ろに()カッコは付けません。<br /><br /><br />(2)ページが読込まれた時には、関数 init() が実行されます。この関数の中でさらに itemDisp() という関数を呼び出しています。<br /><br />function init() {<br />&nbsp;&nbsp;省略<br />&nbsp;&nbsp;itemDisp();<br />}<br /><br />＊関数内から関数を呼び出す場合は、関数名の後ろに()カッコを付けます。<br /><br /><br />■item.js側<br /><br />(1)中継プログラムを指定している部分です。<br />var url = "../lib/ItemSearch.php";<br /><br />＊libフォルダにあるファイルは相対パスで指定しています。<br /><br /><br />(2)中継プログラムに送るパラメーターを組み立てている部分です。<br /><br />var paramList = "keyword=" + encodeURIComponent("カニ");<br />paramList += "&amp;hits=10";<br />paramList += "&amp;page=1";<br />paramList += "&amp;sort=" + encodeURIComponent("+itemPrice");<br />paramList += "&amp;imageFlag=1";<br /><br />＊検索キーワードとソートはエンコードしています。<br /><br /><br />(3)受信した XML 全体を、変数で参照できるようにしている部分です。<br /><br />var response = data.responseXML.getElementsByTagName('Response');<br /><br /><br />(4)楽天ウェブサービスは、リクエストが成功すると、レスポンスの XML 内の Status タグに「Success」と表示されます。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-67.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-67-thumbnail2.gif" alt="rakuten-67.gif" width="150" height="74" border="0" /></a><br /><br />その Status タグの文字列を取得している部分です。<br />var status = response[0].getElementsByTagName('Status')[0].firstChild.nodeValue;<br /><br />↑これは2行に分けて書くこともできますが、こういう書き方もできます。<br /><br /><br />(5)if文で、もし成功していない場合は、メッセージを表示して、処理を終了します。<br /><br />if(!(status == "Success")){<br />&nbsp;&nbsp;state.innerHTML = "データが見つかりませんでした。";<br />&nbsp;&nbsp;return;<br />}<br /><br />＊ return で処理を終了すると、関数を呼び出した場所に戻ります。<br /><br /><br />(6)XML中に複数ある Item タグを変数に代入している部分です。itemは配列になります。<br /><br />var item = response[0].getElementsByTagName('Item');<br /><br /><br />(7)HTMLを組み立てるための変数を初期化している部分です。<br /><br />var tmpHtml = "";<br /><br /><br />(8)for文で item の要素数分だけ処理を繰り返します。<br /><br />for(i = 0; i &lt; item.length; i++){<br />&nbsp;&nbsp;省略<br />}<br /><br /><br />(9)フィールドごとに値を取り出している部分です。<br /><br />var itemName = item[i].getElementsByTagName('itemName');<br />var itemNameValue = itemName[0].firstChild.nodeValue;<br /><br />var itemPrice = item[i].getElementsByTagName('itemPrice');<br />var itemPriceValue = itemPrice[0].firstChild.nodeValue;<br /><br />var affiliateUrl = item[i].getElementsByTagName('affiliateUrl');<br />var affiliateUrlValue = affiliateUrl[0].firstChild.nodeValue;<br /><br />var mediumImageUrl = item[i].getElementsByTagName('mediumImageUrl');<br />var mediumImageUrlValue = mediumImageUrl[0].firstChild.nodeValue;<br /><br />var itemCaption = item[i].getElementsByTagName('itemCaption');<br />var itemCaptionValue = itemCaption[0].firstChild.nodeValue;<br /><br />＊長くなりますが (4) のように1行で書くこともできます。<br />＊もっと必要なフィールドがある場合は、この部分を増やせばよいだけです。<br /><br /><br />(10)取り出した値を使って、HTMLを組み立てている部分です。<br /><br />tmpHtml += "&lt;p&gt;";<br />tmpHtml += itemNameValue + "&lt;br /&gt;";<br />tmpHtml += itemPriceValue + "&lt;br /&gt;";<br />tmpHtml += affiliateUrlValue + "&lt;br /&gt;";<br />tmpHtml += mediumImageUrlValue + "&lt;br /&gt;";<br />tmpHtml += itemCaptionValue + "&lt;br /&gt;";<br />tmpHtml += "&lt;/p&gt;";<br />tmpHtml += "&lt;hr /&gt;";<br /><br /><br />(11)組み立てた HTML を実際に画面に表示して、メッセージを表示している部分です。<br /><br />result.innerHTML = tmpHtml;<br />state.innerHTML = "データを取得しました。&lt;br /&gt;\n";<br /><br /><br />■index.css側<br /><br />(1)商品データを表示する result の横幅を指定している部分です。<br /><br />width:800px;<br /><br /><br />【ワンポイント】<br /><br />どんなフィールドが取り出せるかは、楽天ウェブサービスのオンラインドキュメントに詳しく書かれています。出力パラメーターのフィールド名を参考にしてください。<br /><br /><a href="http://webservice.rakuten.co.jp/api/itemsearch/" target="_blank">http://webservice.rakuten.co.jp/api/itemsearch/</a>
]]></content:encoded>
</item>
<item rdf:about="http://rakuten.pgtop.net/article/95647034.html">
<title>楽天ウェブサービスから、商品データを取得する方法について。</title>
<link>http://rakuten.pgtop.net/article/95647034.html</link>
<description>楽天ウェブサービス から Ajax の非同期通信を使って、商品データを取得してみましょう。プログラムは Ajax初心者入門講座 で学んだものが、ほとんどそのままで動作します。今回は最も基本的なプログラムなので、パラメーターは直接プログラムの中に書くことにしました。取得した商品データも特に加工することなく、そのまま表示しています。【1】sample001 フォルダを作成します。＊「\」はWindowsでは円記号のことです。保存先 C:\phpdev\www\rakuten【2】...</description>
<dc:subject>Step9・楽天から商品データを取得する</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-05-04T20:54:05+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> から Ajax の非同期通信を使って、商品データを取得してみましょう。<br /><br />プログラムは <a href="http://ajax.pgtop.net/" target="_blank">Ajax初心者入門講座</a> で学んだものが、ほとんどそのままで動作します。<br /><br />今回は最も基本的なプログラムなので、パラメーターは直接プログラムの中に書くことにしました。取得した商品データも特に加工することなく、そのまま表示しています。<br /><br /><br />【1】sample001 フォルダを作成します。<br /><br />＊「\」はWindowsでは円記号のことです。<br /><br />保存先　C:\phpdev\www\rakuten<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-62.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-62-thumbnail2.gif" alt="rakuten-62.gif" width="150" height="86" border="0" /></a><br /><br /><br />【2】今回は以下のように、4つのファイルを配置します。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-63.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-63-thumbnail2.gif" alt="rakuten-63.gif" width="150" height="96" border="0" /></a><br /><br />＊ファイルは UTF-8 形式で保存してください。<br /><br />保存先　C:\phpdev\www\rakuten\sample001<br />ファイル名　index.html<br /><div class="pg"><br />&lt;html&gt;<br />&nbsp;&nbsp;&lt;head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="../lib/prototype.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="index.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="item.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;link href="index.css" rel="stylesheet" type="text/css"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;rakuten&lt;/title&gt;<br />&nbsp;&nbsp;&lt;/head&gt;<br />&nbsp;&nbsp;&lt;body&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="state"&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="result"&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&lt;/body&gt;<br />&lt;/html&gt;<br /></div><br /><br />保存先　C:\phpdev\www\rakuten\sample001<br />ファイル名　index.js<br /><div class="pg"><br />onload = init;<br />var state;<br />var result;<br /><br />function init() {<br />&nbsp;&nbsp;state = $('state');<br />&nbsp;&nbsp;result = $('result');<br />&nbsp;&nbsp;itemDisp();<br />}<br /></div><br /><br />保存先　C:\phpdev\www\rakuten\sample001<br />ファイル名　item.js<br /><div class="pg"><br />function itemDisp() {<br />&nbsp;&nbsp;state.innerHTML = "処理中です・・・&lt;br /&gt;\n";<br /><br />&nbsp;&nbsp;var url = "../lib/ItemSearch.php";<br /><br />&nbsp;&nbsp;var paramList = "keyword=" + encodeURIComponent("カニ");<br />&nbsp;&nbsp;paramList += "&amp;hits=10";<br />&nbsp;&nbsp;paramList += "&amp;page=1";<br />&nbsp;&nbsp;paramList += "&amp;sort=" + encodeURIComponent("+itemPrice");<br />&nbsp;&nbsp;paramList += "&amp;imageFlag=1";<br /><br /><br />&nbsp;&nbsp;new Ajax.Request(url,<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method: 'get',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccess: getData,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onFailure: showErrMsg,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: paramList<br />&nbsp;&nbsp;});<br /><br />&nbsp;&nbsp;function getData(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;var response = data.responseXML.getElementsByTagName('Response');<br />&nbsp;&nbsp;&nbsp;&nbsp;var status = response[0].getElementsByTagName('Status')[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(!(status == "Success")){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データが見つかりませんでした。";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;var item = response[0].getElementsByTagName('Item');<br />&nbsp;&nbsp;&nbsp;&nbsp;var tmpHtml = "";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i = 0; i &lt; item.length; i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//値を取得<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemName = item[i].getElementsByTagName('itemName');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemNameValue = itemName[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemPrice = item[i].getElementsByTagName('itemPrice');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemPriceValue = itemPrice[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var affiliateUrl = item[i].getElementsByTagName('affiliateUrl');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var affiliateUrlValue = affiliateUrl[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var mediumImageUrl = item[i].getElementsByTagName('mediumImageUrl');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var mediumImageUrlValue = mediumImageUrl[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemCaption = item[i].getElementsByTagName('itemCaption');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var itemCaptionValue = itemCaption[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//HTML作成<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;p&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += itemNameValue + "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += itemPriceValue + "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += affiliateUrlValue + "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += mediumImageUrlValue + "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += itemCaptionValue + "&lt;br /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;/p&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;hr /&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//結果を表示<br />&nbsp;&nbsp;&nbsp;&nbsp;result.innerHTML = tmpHtml;<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得しました。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;function showErrMsg(){<br />&nbsp;&nbsp;&nbsp;&nbsp;clearDisp();<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得できませんでした。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />}<br /></div><br /><br />保存先　C:\phpdev\www\rakuten\sample001<br />ファイル名　index.css<br /><div class="pg"><br />#state {<br />&nbsp;&nbsp;font-size:16px;<br />&nbsp;&nbsp;color:#0000cc;<br />&nbsp;&nbsp;margin-top:10px;<br />&nbsp;&nbsp;margin-bottom:10px;<br />}<br /><br />#result {<br />&nbsp;&nbsp;width:800px;<br />&nbsp;&nbsp;font-size:14px;<br />&nbsp;&nbsp;color:#000000;<br />}<br /></div><br /><br /><br />プログラムの準備ができたら実行してみましょう。<br /><br />【3】C:\phpdev フォルダ内にある「2K-NT-XP-phpdev_start.bat」をダブルクリックして、phpdev を起動します。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-57.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-57-thumbnail2.gif" alt="rakuten-57.gif" width="150" height="65" border="0" /></a><br /><br /><br />【4】Webブラウザを起動して、動作を確認します。<br /><br /><a href="http://localhost/rakuten/sample001/" target="_blank">http://localhost/rakuten/sample001/</a><br /><br />・Internet Explorer の場合<br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-66.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-66-thumbnail2.gif" alt="rakuten-66.gif" width="150" height="119" border="0" /></a><br /><br />・Firefox の場合<br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-65.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-65-thumbnail2.gif" alt="rakuten-65.gif" width="150" height="126" border="0" /></a><br /><br />商品データごとに水平線で区切るようにしました。<br /><br />商品データには、たくさんの項目が含まれていますが、その中から商品名、商品価格、アフィリエイトURL、商品画像URL(128x128)、商品説明文を表示しています。<br /><br /><br />【5】プログラム中の値をいろいろ変えて、商品データを取得してみてください。<br /><br />・検索キーワード<br />var paramList = "keyword=" + encodeURIComponent("カニ");<br /><br />・1ページあたりの取得件数<br />paramList += "&hits=10";<br /><br />・取得ページ<br />paramList += "&page=1";<br /><br />・ソート<br />paramList += "&sort=" + encodeURIComponent("+itemPrice");<br /><br />・商品画像有無フラグ<br />paramList += "&imageFlag=1";<br /><br />検索キーワードとソートは、関数で自動的にエンコードするので、そのまま指定できます。<br /><br />またソートにどんな値が指定できるかは、楽天ウェブサービスのオンラインドキュメントに詳しく書かれています。<br /><br /><a href="http://webservice.rakuten.co.jp/api/itemsearch/" target="_blank">http://webservice.rakuten.co.jp/api/itemsearch/</a><br /><br /><br />【ワンポイント】<br />もし商品データが変わらないときは、Webブラウザのキャッシュが表示されている可能性があります。その場合は「ツール → インターネット オプション」でキャッシュを消去してください。<br /><br /><br />プログラムの詳しい解説は次回に行ないます。
]]></content:encoded>
</item>
<item rdf:about="http://rakuten.pgtop.net/article/95533608.html">
<title>楽天ウェブサービスの中継プログラムを作成する方法について。</title>
<link>http://rakuten.pgtop.net/article/95533608.html</link>
<description>楽天ウェブサービス を、あなたのWebサイトに配置したプログラムから利用するには、中継プログラム(スクリプト)が必要です。なぜなら Ajax での通信は、同一ドメイン内のファイルにしかアクセスできないようになっているためです。これまで使ってみた楽天ウェブサービスのプログラムは、あなたのWebサイトとは別のドメインなので、JavaScriptで直接利用することができないのです。そのため今回は中継プログラムを作って、楽天ウェブサービスを間接的に利用する方法について説明します。中継...</description>
<dc:subject>Step8・中継プログラムを作成する</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-05-03T21:25:07+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> を、あなたのWebサイトに配置したプログラムから利用するには、中継プログラム(スクリプト)が必要です。<br /><br />なぜなら Ajax での通信は、同一ドメイン内のファイルにしかアクセスできないようになっているためです。<br /><br />これまで使ってみた楽天ウェブサービスのプログラムは、あなたのWebサイトとは別のドメインなので、JavaScriptで直接利用することができないのです。<br /><br />そのため今回は中継プログラムを作って、楽天ウェブサービスを間接的に利用する方法について説明します。<br /><br />中継プログラムには、サーバーサイドで動くプログラミング言語が使われます。一番簡単なのは、多くのレンタルサーバーで動作する PHP を使う方法です。<br /><br />中継プログラムを作るだけなら、PHPの知識は最小限で済みます。とても簡単なので、実際に作ってみましょう。<br /><br /><br />【1】今回は最終的に、以下のようにファイルを配置します。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-56.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-56-thumbnail2.gif" alt="rakuten-56.gif" width="150" height="77" border="0" /></a><br /><br />＊ItemSearch.php は SHIFT-JIS 形式で保存してください。<br />＊「\」はWindowsでは円記号のことです。<br /><br />保存先　C:\phpdev\www\rakuten\lib<br />ファイル名　ItemSearch.php<br /><div class="pg"><br />&lt;?php<br />&nbsp;&nbsp;extract($_GET);<br /><br />&nbsp;&nbsp;//固定のフィールド<br />&nbsp;&nbsp;$url = "<a href="http://api.rakuten.co.jp/rws/1.9/rest?" target="_blank">http://api.rakuten.co.jp/rws/1.9/rest?</a>";<br />&nbsp;&nbsp;$url .= "developerId=あなたのdeveloperId";<br />&nbsp;&nbsp;$url .= "&amp;affiliateId=あなたのaffiliateId";<br />&nbsp;&nbsp;$url .= "&amp;operation=ItemSearch";<br />&nbsp;&nbsp;$url .= "&amp;version=2007-10-25";<br /><br />&nbsp;&nbsp;//変化するフィールド<br />&nbsp;&nbsp;$url .= "&amp;keyword=".rawurlencode($keyword);<br />&nbsp;&nbsp;$url .= "&amp;hits=".$hits;<br />&nbsp;&nbsp;$url .= "&amp;page=".$page;<br />&nbsp;&nbsp;$url .= "&amp;sort=".rawurlencode($sort);<br />&nbsp;&nbsp;$url .= "&amp;imageFlag=".$imageFlag;<br /><br />&nbsp;&nbsp;header("Content-type: application/xml");<br />&nbsp;&nbsp;readfile($url);<br />?&gt;<br /></div><br /><br /><br />プログラムの準備ができたら実行してみましょう。<br /><br />【2】C:\phpdev フォルダ内にある「2K-NT-XP-phpdev_start.bat」をダブルクリックして、phpdev を起動します。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-57.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-57-thumbnail2.gif" alt="rakuten-57.gif" width="150" height="65" border="0" /></a><br /><br /><br />【3】この段階で Apache、PHP、MySQL が使えるようになっています。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-58.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-58-thumbnail2.gif" alt="rakuten-58.gif" width="150" height="75" border="0" /></a><br /><br /><br />【4】Webブラウザを起動して、「localhost」にアクセスすると、以下のような画面が表示されます。<br /><br /><a href="http://localhost/" target="_blank">http://localhost/</a><br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-59.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-59-thumbnail2.gif" alt="rakuten-59.gif" width="150" height="95" border="0" /></a><br /><br />この画面が表示できれば、Webサーバーがちゃんと使える状態です。<br /><br /><br />【5】次は作成した中継プログラムにアクセスしてみます。<br /><br /><a href="http://localhost/rakuten/lib/ItemSearch.php?" target="_blank">http://localhost/rakuten/lib/ItemSearch.php?</a><br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-60.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-60-thumbnail2.gif" alt="rakuten-60.gif" width="150" height="132" border="0" /></a><br /><br />まだ URLにパラメーターを指定していないので、商品データは取得できませんが、楽天ウェブサービスに間接的にアクセスできていることがわかります。<br /><br /><br />【6】今度はパラメーターを含めてアクセスしてみましょう。<br /><br />・例<br />検索キーワードは「カニ」、1ページあたりデータを10件取得して、その1ページ目を表示、価格が安い順に並べ替えて、商品画像ありの商品だけを対象とするという意味<br /><br /><div class="pg"><br /><a href="http://localhost/rakuten/lib/ItemSearch.php?" target="_blank">http://localhost/rakuten/lib/ItemSearch.php?</a><br />&keyword=%E3%82%AB%E3%83%8B<br />&hits=10<br />&page=1<br />&sort=%2BitemPrice<br />&imageFlag=1<br /></div><br /><br />＊実際に入力する時は改行しないで1行にしてください。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-61.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-61-thumbnail2.gif" alt="rakuten-61.gif" width="150" height="147" border="0" /></a><br /><br />今度はちゃんとデータを取得できましたね。パラメーターとして渡した値も表示されています。<br /><br /><br />【7】条件をいろいろ変えて、データを取得する練習をしてください。<br /><br />keyword　検索キーワード<br />hits　1ページあたりの取得件数<br />page　取得ページ<br />sort　ソート<br />imageFlag　商品画像有無フラグ<br /><br />検索キーワードとソートは以下のリンクでエンコードしてから使います。<br />・<a href="http://ws.bzen.net/ende/" target="_blank">エンコード・デコード</a><br /><br /><br />【解説】<br /><br />(1)中継プログラム ItemSearch.php は、楽天ウェブサービスを間接的に利用するために、URLで指定したパラメーターを受け取って、再度組み立てています。<br /><br />実際にデータを表示しているのは1行だけです。<br />readfile($url);<br /><br />詳しくは <a href="http://ajax.pgtop.net/" target="_blank">Ajax初心者入門講座</a> で解説しています。<br /><br /><br />(2)今回の中継プログラムには、最低限のパラメーターしか書いていませんが、必要に応じてパラメーターを増やしてください。<br /><br />どんなパラメーターが使えるかは、楽天ウェブサービスのオンラインドキュメントに詳しく書かれています。必須項目と指定しなかったときにデフォルト値がある点がポイントです。<br /><br /><a href="http://webservice.rakuten.co.jp/api/itemsearch/" target="_blank">http://webservice.rakuten.co.jp/api/itemsearch/</a><br /><br /><br />(3)中継プログラム側で受け取るパラメータを増やした場合は、必ずURLにパラメータを含めないとエラーになります。PHPのプログラムで回避することはできますが、ここでは省略します。<br /><br /><br />(4)developerId、affiliateId、operation、version のパラメーターは、あまり変わることがありません。そのため中継プログラムの中に直接書くようにしたので、URLに含めなくてもよくなりました。
]]></content:encoded>
</item>
<item rdf:about="http://rakuten.pgtop.net/article/95504968.html">
<title>楽天ウェブサービスの学習用に、phpdev内にフォルダを作成する。</title>
<link>http://rakuten.pgtop.net/article/95504968.html</link>
<description>楽天ウェブサービス を利用したシステムを、ローカル環境で開発するため用意を整えましょう。学習を始める前に、あらかじめ phpdev 内にいくつかフォルダを作成します。【1】phpdev のインストールがまだの場合は、以下のリンクを参考に、インストールしてください。・PHP phpdevで一発インストールhttp://php5.seesaa.net/category/1632821-1.html以降は phpdev がインストールされている前提で説明します。＊「\」はWindo...</description>
<dc:subject>Step7・phpdev内にフォルダを作成する</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-05-03T15:25:48+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> を利用したシステムを、ローカル環境で開発するため用意を整えましょう。<br /><br />学習を始める前に、あらかじめ phpdev 内にいくつかフォルダを作成します。<br /><br /><br />【1】phpdev のインストールがまだの場合は、以下のリンクを参考に、インストールしてください。<br /><br />・PHP phpdevで一発インストール<br /><a href="http://php5.seesaa.net/category/1632821-1.html" target="_blank">http://php5.seesaa.net/category/1632821-1.html</a><br /><br /><br />以降は phpdev がインストールされている前提で説明します。<br />＊「\」はWindowsでは円記号のことです。<br /><br /><br />【2】「C:\phpdev\www」の中に、「rakuten」というフォルダを新規作成します。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-53.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-53-thumbnail2.gif" alt="rakuten-53.gif" width="150" height="80" border="0" /></a><br /><br />＊実際には最初から用意されているフォルダがたくさんあります。<br /><br /><br />【3】「C:\phpdev\www\rakuten」の中に、「lib」というフォルダを新規作成します。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-54.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-54-thumbnail2.gif" alt="rakuten-54.gif" width="150" height="80" border="0" /></a><br /><br />＊libには共通で使うプログラムを配置することになります。<br /><br /><br />【4】「C:\phpdev\www\rakuten\lib」の中に、「prototype.js」を配置します。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-55.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-55-thumbnail2.gif" alt="rakuten-55.gif" width="150" height="87" border="0" /></a><br /><br />prototype.js の入手方法は、以下のリンクを参考にしてください。<br /><br />・Ajax prototype.jsを入手する方法。<br /><a href="http://ajax.pgtop.net/category/4347435-1.html" target="_blank">http://ajax.pgtop.net/category/4347435-1.html</a><br /><br /><br />【解説】<br /><br />(1)ローカル環境で開発する時、URLは「 <a href="http://localhost/" target="_blank">http://localhost/</a> 」が基点となります。<br /><br />そして localhost は、phpdevでは「C:\phpdev\www」のフォルダに対応しています。<br /><br />つまり www 以下にフォルダやファイルを配置すると、Webブラウザから localhost でアクセスできることになります。<br /><br /><br />(2)prototype.js は Ajax フレームワークの一つで、JavaScript言語の機能を拡張してくれます。例えばWebブラウザ間の違いを吸収したり、フォーム上の部品に簡単にアクセスできるようになります。
]]></content:encoded>
</item>
<item rdf:about="http://rakuten.pgtop.net/article/92583914.html">
<title>楽天ウェブサービスの開発環境を構築する方法について。</title>
<link>http://rakuten.pgtop.net/article/92583914.html</link>
<description>楽天ウェブサービス を利用するには、サーバーサイドのプログラミング言語と、Webブラウザ上で動作するプログラミング言語の知識が必要です。一番よく利用されている組み合わせは、PHP と JavaScript です。楽天ウェブサービスを利用したプログラムは、レンタルサーバーで公開するのが一般的です。しかもこの講座は入門者向けなので、自前でサーバーを構築する人は少ないと思われます。したがって開発はローカル環境で行い、完成したらレンタルサーバーにアップロードすることを想定しています。...</description>
<dc:subject>Step6・開発環境を準備する</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-04-07T22:09:06+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> を利用するには、サーバーサイドのプログラミング言語と、Webブラウザ上で動作するプログラミング言語の知識が必要です。一番よく利用されている組み合わせは、PHP と JavaScript です。<br /><br />楽天ウェブサービスを利用したプログラムは、レンタルサーバーで公開するのが一般的です。しかもこの講座は入門者向けなので、自前でサーバーを構築する人は少ないと思われます。<br /><br />したがって開発はローカル環境で行い、完成したらレンタルサーバーにアップロードすることを想定しています。<br /><br />楽天ウェブサービスを利用するには、PHPで中継プログラム(スクリプト)を作る必要がありますが、最低限のソースコードで済みます。メインは JavaScript でのプログラミングですが、JavaScriptはWebブラウザがあれば動作します。<br /><br />そのため最新の開発環境を準備する必要はないので、phpdevを使うことにします。phpdevを使うと、短時間で Apache、PHP、MySQL をインストールできます。<br /><br />楽天ウェブサービスを利用する前に、必要なことをまとめると、以下の通りです。<br /><br />・ローカルの開発環境を準備する(phpdevで一括)<br />・最低限のPHPの知識<br />・JavaScriptの知識<br /><br />これらについては <a href="http://ajax.pgtop.net/" target="_blank">Ajax初心者入門講座</a> で詳しく解説していますので、先にそちらからご覧ください。<br /><br />この楽天ウェブサービス初心者入門講座は、Ajax初心者入門講座の続編という位置付けなので、やはり先に学習されることをおすすめします。<br /><br />今後ソースコードの解説も、Ajax初心者入門講座を理解しているものとして進めていきます。<br /><br />【ワンポイント】<br />phpdev のように開発環境を一括インストールできるソフトに、「XAMPP」があります。XAMPPは Apache Friends によって提供されています。<br /><br /><a href="http://www.apachefriends.org/en/index.html" target="_blank">http://www.apachefriends.org/en/index.html</a><br /><br />XAMPPはPHP4とPHP5の切り替えができるし、使える関数も多いので phpdev より高機能です。PHPを本格的に学びたいが、環境構築が面倒だという場合にはピッタリなソフトです。<br /><br />しかしこの講座では phpdev を使うため、XAMPPについては解説しません。
]]></content:encoded>
</item>
<item rdf:about="http://rakuten.pgtop.net/article/87384952.html">
<title>楽天 URLエンコード、デコードする方法について。</title>
<link>http://rakuten.pgtop.net/article/87384952.html</link>
<description>楽天ウェブサービス のリクエストURLに使う検索キーワードは、UTF-8形式で URLエンコード することになっています。&amp;keyword=%E7%A6%8F%E8%A2%8BURLエンコードは特別な事ではなく、多くのWebサイトでも使われています。検索サイトでよく見かける長いURLがそうです。URLに使える文字の種類は限られているため、日本語は使えません。そこで URL に使える文字に変換しているのです。通常はプログラムで自動的にエンコードされるため、ウェブサイトの利用者が...</description>
<dc:subject>Step5・URLエンコードする方法</dc:subject>
<dc:creator>mslab</dc:creator>
<dc:date>2008-02-27T17:15:48+09:00</dc:date>
<content:encoded><![CDATA[
<strong>楽天ウェブサービス</strong> のリクエストURLに使う検索キーワードは、UTF-8形式で URLエンコード することになっています。<br /><br />&keyword=%E7%A6%8F%E8%A2%8B<br /><br />URLエンコードは特別な事ではなく、多くのWebサイトでも使われています。検索サイトでよく見かける長いURLがそうです。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-51.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-51-thumbnail2.gif" alt="rakuten-51.gif" width="150" height="78" border="0" /></a><br /><br />URLに使える文字の種類は限られているため、日本語は使えません。そこで URL に使える文字に変換しているのです。<br /><br />通常はプログラムで自動的にエンコードされるため、ウェブサイトの利用者が意識する事はありません。しかしシステムを作る時には必要になってきます。<br /><br />今回はキーワードをエンコードして、楽天ウェブサービスで様々な商品の XML を表示してみましょう。私のほうでエンコードを行なう簡単な Webアプリケーションを用意しました。<br /><br /><br />【1】以下のサイトにアクセスします。<br /><br />・<a href="http://ws.bzen.net/ende/" target="_blank">エンコード・デコード</a><br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-41.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-41-thumbnail2.gif" alt="rakuten-41.gif" width="150" height="109" border="0" /></a><br /><br /><br />【2】「エンコード」を選択し、キーワードとして「福袋」と入力したら、「変換」ボタンをクリックします。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-42.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-42-thumbnail2.gif" alt="rakuten-42.gif" width="150" height="107" border="0" /></a><br /><br /><br />【3】入力した文字列が URLエンコード されました。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-43.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-43-thumbnail2.gif" alt="rakuten-43.gif" width="150" height="115" border="0" /></a><br /><br />入力パラメーターとエンコードしたものを比べると、同じですね。<br /><br />&keyword=%E7%A6%8F%E8%A2%8B<br />%E7%A6%8F%E8%A2%8B<br /><br /><br />【4】エンコードした文字列をコピーします。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-44.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-44-thumbnail2.gif" alt="rakuten-44.gif" width="150" height="122" border="0" /></a><br /><br /><br />【5】「クリア」ボタンをクリックします。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-45.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-45-thumbnail2.gif" alt="rakuten-45.gif" width="150" height="114" border="0" /></a><br /><br /><br />【6】フォームがクリアされました。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-46.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-46-thumbnail2.gif" alt="rakuten-46.gif" width="150" height="104" border="0" /></a><br /><br /><br />【7】今度は「デコード」を選択し、キーワードにコピーした文字列を貼り付けたら、「変換」ボタンをクリックします。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-47.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-47-thumbnail2.gif" alt="rakuten-47.gif" width="150" height="104" border="0" /></a><br /><br /><br />【8】文字列が デコード され、元のキーワード(福袋)に戻りました。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-48.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-48-thumbnail2.gif" alt="rakuten-48.gif" width="150" height="110" border="0" /></a><br /><br /><br />【9】この Webアプリケーションを使って、入力パラメーターのキーワードを変えて、楽天ウェブサービスのリクエストURLで、様々な商品の XML を表示してみてください。<br /><br />・例 「カニ」<br /><div class="pg"><br /><a href="http://api.rakuten.co.jp/rws/1.11/rest?" target="_blank">http://api.rakuten.co.jp/rws/1.11/rest?</a><br />developerId=[YOUR_developerID]<br />&operation=ItemSearch<br />&version=2007-10-25<br />&keyword=%E3%82%AB%E3%83%8B<br />&sort=%2BitemPrice<br /></div><br /><br /><br />今回は URLエンコード、デコードを手動で行ないましたが、実際に動的なネットショップなどを作る時には、JavaScript のようなプログラムで自動的に行なうようにします。<br /><br /><br />【ワンポイント】<br /><br />URLエンコードした文字列を使うと、以下のようなこともできます。<br /><br />(1)適当なキーワードをエンコードします。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-49.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-49-thumbnail2.gif" alt="rakuten-49.gif" width="150" height="114" border="0" /></a><br /><br /><br />(2)以下のURLのパラメーターに、エンコードした文字列を加えてアクセスします。<br /><br />例 「英語」<br /><a href="http://ws.bzen.net/rakutenkw/index.php?keyword=%E8%8B%B1%E4%BC%9A%E8%A9%B1" target="_blank">http://ws.bzen.net/rakutenkw/index.php?keyword=%E8%8B%B1%E4%BC%9A%E8%A9%B1</a><br /><br /><br />(3)キーワードで検索された状態で、商品が表示されました。<br /><br /><a href="http://rakutenweb.up.seesaa.net/image/rakuten-50.gif" target="_blank"><img src="http://rakutenweb.up.seesaa.net/image/rakuten-50-thumbnail2.gif" alt="rakuten-50.gif" width="150" height="138" border="0" /></a><br /><br />パラメーターを変えると、商品が変わります。面白いので試してみてください。
]]></content:encoded>
</item>
</rdf:RDF>
