国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
用 PHP 創(chuàng)建 Amazon 店面,第 1 部分: 用 Amazon ECS 獲得內(nèi)容

如何構(gòu)建店面并顯示商品

developerWorks



級別: 中級

Tyler Anderson , 自由撰稿人, Stexar 公司

2005 年 12 月 19 日

這是使用 PHP 和 Amazon 電子商務(wù)服務(wù)(ECS)建設(shè) Amazon 店面的兩部分教程的第一部分。建設(shè)的店面允許購物者查看列表中顯示的商品,或者在商店中搜索特定商品。第 2 部分將介紹購物車、推薦服務(wù)以及建設(shè)專賣店。

開始之前

這個教程面向的是對于創(chuàng)建店面、自動連接 Amazon Web 服務(wù)并顯示結(jié)果有興趣的程序員。這個教程假設(shè)讀者熟悉基本的 PHP 概念,包括 forwhile 循環(huán),以及表單處理。如果對自己的 PHP 能力沒把握,有許多優(yōu)秀的教程可以幫助您達(dá)到要求(請參閱 參考資料)。

您應(yīng)當(dāng)熟悉 Amazon Web 服務(wù),在 developerWorks 的 “Boost application development with Amazon Web Service” 系列文章中介紹了它(請參閱 參考資料)。

關(guān)于本系列

在這個兩部分的系列中,我們要用 PHP 創(chuàng)建一個 Amazon 購物車。第 1 部分將討論店面的架構(gòu),通過商品搜索請求與 Amazon Web 服務(wù)通信,顯示選項并瀏覽商品分類。我們還將創(chuàng)建一個搜索框。

第 2 部分將討論購物車的創(chuàng)建、添加商品和修改,這個購物車將使用叫作購物車請求的技術(shù)完全保存在 Amazon 的服務(wù)器上。我們將介紹構(gòu)建藏品商店和向購物者提供瀏覽類似商品的能力。



回頁首


關(guān)于本教程

我們將構(gòu)建一個 Amazon 店面,包含分類鏈接和搜索框,允許購物者瀏覽商店中的商品目錄。與多數(shù) PHP 應(yīng)用程序不同,這個程序不需要本地數(shù)據(jù)庫,因為數(shù)據(jù)庫保存在 Amazon 的服務(wù)器上。所以,這個教程嚴(yán)重地依賴簡單對象訪問協(xié)議(SOAP),這個 Web 服務(wù)協(xié)議用 XML 組織信息。Web 服務(wù)是應(yīng)用程序(例如在這個教程中要構(gòu)建的 PHP 應(yīng)用程序)與中央服務(wù)器通信以獲取信息的一種方式。

通過 Amazon 電子商務(wù)服務(wù)(ECS),可以從購物者選擇的分類中獲得和顯示內(nèi)容。當(dāng)選中一個分類時,將創(chuàng)建參數(shù),指明這個分類,收集相關(guān)信息,并啟動 SOAP 客戶。SOAP 客戶會接受參數(shù),形成 XML 文檔,并把 XML 文檔轉(zhuǎn)交給 SOAP 服務(wù)器。Amazon 服務(wù)器訪問自己的數(shù)據(jù)庫,生成 XML 文檔,里面包含的商品與參數(shù)匹配。最后,服務(wù)器把 XML 文檔返回給 SOAP 客戶,SOAP 客戶再把文檔解析成數(shù)據(jù)結(jié)構(gòu),從數(shù)據(jù)結(jié)構(gòu)中可以提取出請求的數(shù)據(jù)。

 

獲得內(nèi)容

如何構(gòu)建店面并顯示商品

developerWorks
第 2 頁, 總 共 12 頁

文檔選項
將此頁作為電子郵件發(fā)送

將此頁作為電子郵件發(fā)送

樣例代碼


對本教程的評價

幫助我們改進(jìn)這些內(nèi)容


概述

Amazon ECS

Amazon 電子商務(wù)服務(wù)(ECS)允許任何人連接到它巨大的商品目錄,在 Web 站點(diǎn)上顯示商品,把購物者引導(dǎo)到 Amazon 進(jìn)行銷售,并得到銷售的傭金。任何人都可以做這件事。需要做的只是遵守 Amazon 的應(yīng)用程序編程接口(API)。就像 Amazon 說的“這就行了”。您的程序?qū)⒊蔀橐粋€Web 站點(diǎn),在一個或多個分類中為 Amazon 的產(chǎn)品做廣告、銷售它的產(chǎn)品,得到每筆介紹成交的傭金。您不需要屯積商品或處理訂單,唯一的責(zé)任就是維護(hù)好您的代碼。

在這篇教程中,除了通過 PHP 使用 Amazon ECS,還將設(shè)計店面的架構(gòu),并向它添加功能,允許在分類中進(jìn)行瀏覽和搜索特定商品。



回頁首


與 Amazon ECS 通信

我們將使用 PHP 和 Web 服務(wù),通過 SOAP 與 Amazon 通信。Web 服務(wù)(例如 Amazon ECS)允許程序員訪問服務(wù)。在這個示例中,我們將連接到 Amazon ECS 去獲取關(guān)于產(chǎn)品的信息。清單 1 顯示了一條示例 SOAP 消息。


清單 1. 示例 SOAP 消息

					

<soap-env:Envelope
    xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <soap-env:Header/>
  <soap-env:Body>
...
  </soap-env:Body>
</soap-env:Envelope>

SOAP 消息看起來就是這個樣子。在 PHP 和 Web 服務(wù) 一節(jié)中,將學(xué)習(xí)如何使用 SOAP 消息制作到 SOAP 服務(wù)器的請求和接收來自 SOAP 服務(wù)器的請求。



回頁首


店面

流行的店面擁有干凈、簡單的布局。在這份教程中,我們將設(shè)計一個基本的店面,在樣式上比較樸素,這樣就可以把精力集中在使店面運(yùn)行的機(jī)械部分了。完成的產(chǎn)品將有一個容納分類和搜索框的側(cè)面板,在右側(cè)的主內(nèi)容區(qū)顯示商品(請參閱圖 1)。


圖 1. 最后的應(yīng)用程序
最后的應(yīng)用程序


回頁首


分類

多數(shù)在線商店只有一個或很少的分類。這份教程的店面將包含較少幾個分類,但是在構(gòu)建自己的店面時,可以喜歡多少分類就建立多少。分類被作為向 Amazon ECS 發(fā)送的 SOAP 請求中的信息,ECS 會返回與選中的分類匹配的商品。

可用的分類如圖 2 所示。


圖 2. 可用的分類
可用的分類

上面顯示的分類是 SearchIndex 可能的值,我們將用它來搜索商品。



回頁首


商品

默認(rèn)情況下,Amazon 的分類包含充滿商品的數(shù)百頁。購物者需要縮小他們的搜索范圍,以便找到他們想要的東西。我們將要設(shè)計的商品搜索功能會在分類內(nèi)搜索商品,并把結(jié)果顯示給購物者,顯示的結(jié)果與 Amazon 上顯示的商品類似。請參閱圖 3 和圖 4。


圖 3. 最終應(yīng)用程序在 Baby 分類中顯示的商品
最終應(yīng)用程序在 Baby 分類中顯示的商品

圖 4. Amazon 上在 Baby 分類中顯示的商品
Amazon 上在 Baby 分類中顯示的商品

請注意在圖 4 中的前三項是相同的。不是所有商品都完全以同樣順序出現(xiàn)。但是,顯示的商品是一樣的。

獲得內(nèi)容

如何構(gòu)建店面并顯示商品

developerWorks
第 3 頁, 總 共 12 頁

文檔選項
將此頁作為電子郵件發(fā)送

將此頁作為電子郵件發(fā)送

樣例代碼


對本教程的評價

幫助我們改進(jìn)這些內(nèi)容


什么是 Amazon ECS?

Amazon 電子商務(wù)服務(wù)(ECS)允許得到 Amazon 信息的訪問權(quán),所有的信息與瀏覽 Amazon 時發(fā)現(xiàn)的信息一樣。這一節(jié)將研究從 Amazon 檢索信息的方法。

請求類型

搜索商品或其他內(nèi)容有多種方法。在這里,我們只集中在 ItemSearch 上。第 2 部分還會使用 ItemSearch,以及 ItemLookup、CartCreate、CartAdd、CartModifyCartClearCartGet。

下面是所有可能的請求的列表:

  • BrowseNodeLookup —— 返回 Amazon 特定產(chǎn)品區(qū)域的信息。
  • CartAdd —— 向購物車添加商品。
  • CartClear —— 刪除購物車的所有內(nèi)容。
  • CartCreate —— 創(chuàng)建時帶有一件指定的商品,這個請求創(chuàng)建一輛新購物車。
  • CartGet —— 檢索購物車的內(nèi)容。
  • CartModify —— 用來修改購物車中商品的數(shù)量。把數(shù)量設(shè)為 0 會把商品從購物車刪除。商品也可以移動到已經(jīng)保存的購物車或者從中移出。
  • CustomerContentLookup —— 用來檢索特定 Amazon 客戶編寫的可以公開得到的內(nèi)容。
  • CustomerContentSearch —— 允許按照姓名或電子郵件地址搜索 Amazon 客戶。
  • Help —— 用來檢索關(guān)于使用 Amazon ECS 進(jìn)行開發(fā)的信息。
  • ItemLookup —— 允許通過使用評論、相似性等信息檢索最多 10 件產(chǎn)品。
  • ItemSearch —— 用來根據(jù)分類和關(guān)鍵字來搜索產(chǎn)品。
  • ListLookup —— 允許從特定列表檢索所有商品。
  • ListSearch —— 允許搜索祝福列表、嬰兒庫或婚姻庫。
  • SellerListingLookup —— 允許查詢 Amazon Shops and Marketplace 的產(chǎn)品。
  • SellerListingSearch —— 允許搜索 Amazon Shops and Marketplace 的清單。
  • SellerLookup —— 允許檢索關(guān)于特定銷售人員的信息,包括客戶反饋評級、位置等等。
  • SimilarityLookup —— 允許檢索某個產(chǎn)品的類似商品。
  • TransactionLookup —— 允許檢索 Amazon 客戶所做交易狀態(tài)的有限信息。


回頁首


理解參數(shù)

每個請求都要求有合適的參數(shù),好讓 Amazon ECS 正確地處理請求。這個系列中使用的參數(shù)和它們的說明是:

  • Service —— 這個參數(shù)總是 AWSECommerceService。
  • SubscriptionId —— 來自 Amazon 的開發(fā)人員令牌。
  • AssociateTag —— 來自 Amazon 的合伙人 ID。
  • Operation —— 要執(zhí)行的操作或請求的類型。通常,只是把 Request 添加到每個請求類型。對于 ItemSearch 這個請求類型,操作將是 ItemSearchRequest。對于 ItemLookup,操作將是 ItemLookupRequest,如此類推。
  • ResponseGroup —— 這是個重要的參數(shù),因為它告訴 Amazon 需要多少信息:從 Small(少量)、Medium(中量)和 Large(大量)到可用的 XML 元素的特定部分。

下面是一些可用的響應(yīng)組:

  • Accessories —— 對于列表中有附件的產(chǎn)品,返回每件產(chǎn)品的附件商品列表。
  • Cart —— 返回購物車標(biāo)識符,以及特定于每件產(chǎn)品的信息。
  • Images —— 返回某件產(chǎn)品擁有的全部圖片的 URL。
  • Offers —— 返回列表中每件產(chǎn)品的供貨信息。
  • Small —— 為列表中的每件商品提供“少量”信息。
  • Medium —— 為列表中的每件商品提供“中量”信息。
  • Large —— 為列表中的每件商品提供“大量”信息。


回頁首


SOAP 與 REST

服務(wù)器為每個請求類型返回的數(shù)據(jù)都是相同的。但是,請求的設(shè)置和使用都有不同。REST 請求最簡單,因為它們只是長長的 URL,URL 中包含每個商品的變量和它們的值 —— 非常像 PHP 中的 GET 請求。

另一方面,SOAP 請求更復(fù)雜,因此也就更強(qiáng)大。它們是通過 HTTP 傳遞給 SOAP 服務(wù)器的 XML 文檔。SOAP 請求比 GET 請求更強(qiáng)大,因為它們能接受更多參數(shù),而且多個請求也可以綁定在一個 SOAP XML 文檔中,這樣就支持同時請求。而且,SOAP 請求擁有優(yōu)先級,這就增強(qiáng)了商店整體的響應(yīng)性。

在這份教程中將使用 REST 請求來研究服務(wù)器返回的數(shù)據(jù)。在最終應(yīng)用程序中(在第 2 部分中)使用 SOAP 請求,因為它們允許做的工作比簡單的 REST 請求多得多。



回頁首


簡單 REST 請求

在這里將執(zhí)行 REST 請求來研究返回的數(shù)據(jù)是什么。進(jìn)行 ItemSearch 查詢就是在這份教程后面要做的事。首先,需要設(shè)置參數(shù)。

服務(wù)的值是 AWSECommerceService,操作是 ItemSearchRequest,ResponseGroupSmall,SubscriptionId 是開發(fā)人員令牌,AssociateTag 是 Amazon 合伙人 ID。通過 Sporting Goods 分類進(jìn)行搜索,所以 SearchIndex 是 SportingGoods,具體的搜索是高爾夫俱樂部,所以 Keywords 是“golf clubs”。下面是使用的 URL,如清單 2 所示。


清單 2. REST 請求的 URL

					
http://webservices.amazon.com/onca/xml?Service=AWSECommerceService
    &SubscriptionId=01AJBKQ38K8HM2R33Q82&Operation=ItemSearch
    &ResponseGroup=Small&AssociateTag=scubanecessit-20
    &SearchIndex=SportingGoods&Keywords=golf%20clubs

Amazon ECS 現(xiàn)在會返回包含搜索的商品信息的 XML 文檔。



回頁首


REST 響應(yīng)

因為響應(yīng)太大,所以在這里只能顯示一部分。但是,自己可以把瀏覽器指向清單 2 中的 URL,查看完整的響應(yīng)。清單 3 顯示了 REST 響應(yīng)的一小段。

這就是商品數(shù)組開始的地方。它把搜索商品的內(nèi)容傳回發(fā)送者。第一個 <item> 元素開始的是 Amazon ECS 發(fā)送的響應(yīng)中第一個商品的信息。它顯示了 ASIN、商品 ID、URL(如果是由瀏覽器指向的),還會顯示產(chǎn)品的詳細(xì)信息。如果請求了小型 ResponseGroup,它還會顯示基本的屬性,例如商品的標(biāo)題。



回頁首


理解 Amazon 的 WSDL 文件

Web 服務(wù)描述語言(WSDL)文件定義了 Web 服務(wù)需要的信息以及它應(yīng)當(dāng)返回的信息。這樣,不需要去琢磨需要發(fā)送什么信息、向哪兒發(fā)送信息、從響應(yīng)中能得到什么,就可以構(gòu)建自己的應(yīng)用程序。

Amazon 的 WSDL 文件 描述了可用的命令以及可能的查詢和搜索語法。

請考慮上面文件中的 ItemSearch 項,如 清單 4 所示。

對于 REST 請求,清單 5 中顯示的元素只是被插入 ItemSearch 元素(清單 3)。AWSECommerceService 服務(wù)定義了應(yīng)當(dāng)在哪里進(jìn)行請求,它就是在 REST 響應(yīng)面板中的 GET 請求的 URL 中發(fā)送的內(nèi)容。


清單 5. ItemSearchRequest 項

					
<xs:complexType name="ItemSearchRequest">
<xs:sequence> 
<xs:element name="Keywords" type="xs:string" minOccurs="0" /> 
<xs:element name="ResponseGroup" type="xs:string" minOccurs="0" 
  maxOccurs="unbounded" /> 
<xs:element name="SearchIndex" type="xs:string" minOccurs="0" /> 
...
</xs:sequence>
</xs:complexType>

WSDL 文件定義了 SOAP 請求和響應(yīng)以及 REST 響應(yīng)的結(jié)構(gòu)。(REST 請求就是帶有編碼過的參數(shù)的 URL。)請注意,清單 5 中名為 Request 的元素定義了可以產(chǎn)生的請求類型,是 ItemSearchRequest 請求;而且清單 5 中包含的請求結(jié)構(gòu)把 ItemSearch 請求和 ItemSearchRequest 操作連接在一起。在繼續(xù)閱讀本教程時,或者在讀完這份教程并準(zhǔn)備構(gòu)建自己的應(yīng)用程序時,可以參考這個文件。

獲得內(nèi)容

如何構(gòu)建店面并顯示商品

developerWorks
第 4 頁, 總 共 12 頁

文檔選項
將此頁作為電子郵件發(fā)送

將此頁作為電子郵件發(fā)送

樣例代碼


對本教程的評價

幫助我們改進(jìn)這些內(nèi)容


PHP 和 Web 服務(wù)

在這一節(jié),將學(xué)習(xí)如何通過 PHP 發(fā)送和接收簡單 SOAP 請求,以及如何 PHP 從響應(yīng)中提取數(shù)據(jù)。

創(chuàng)建 SOAP 請求

要創(chuàng)建 SOAP 請求,需要設(shè)置參數(shù)。因為 SOAP 比 REST 復(fù)雜,所以將從一個簡單示例開始:產(chǎn)品庫存檢查器。XML 文檔如清單 6 所示。


清單 6. 產(chǎn)品庫存檢查器的 XML 格式的 SOAP 請求

					
<soap-env:Envelope
    xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <soap-env:Header/>
  <soap-env:Body>
    <tns:InStockQuantityRequest xmlns:tns="InStockByItemId"
       soap-env:encodingStyle=
           "http://schemas.xmlsoap.org/soap/encoding/">
      <ItemId
         xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
         xsi:type="xsd:string">UWHD0023</ItemId>
    </tns:InStockQuantityRequest>
  </soap-env:Body>
</soap-env:Envelope>

清單 6 中的代碼是 SOAP 請求在 XML 中看起來的樣子。它指定了一個帶有空 HeaderEnvelope。Body 包含要發(fā)送的參數(shù)。PHP 現(xiàn)在可以通過 HTTP 向 SOAP 服務(wù)器發(fā)送這個請求。



回頁首


用 PHP 創(chuàng)建 SOAP 客戶

要創(chuàng)建 SOAP 客戶,可以利用 PHP 內(nèi)置的 SOAP 功能:


<?php
$client = new
    SoapClient("http://webservices.example.com/services/example.wsdl");

然后,把請求傳遞給 SOAP 服務(wù)器。



回頁首


用 PHP 傳遞 SOAP 請求

現(xiàn)在已經(jīng)創(chuàng)建了客戶,需要設(shè)置 SOAP 參數(shù)并調(diào)用示例函數(shù) InStockCheck,如清單 7 所示。


清單 7. 設(shè)置參數(shù)并發(fā)送 SOAP 請求

					
<?php
$client = new
    SoapClient("http://webservices.example.com/services/example.wsdl");
$params = array( ‘ItemId‘ => UWHD0023);
$client->InStockCheck($params);
...
?>
				

以上代碼把 SOAP 請求發(fā)送到 WSDL 文件中指定的服務(wù)器,URL 就是 REST 請求中使用的 URL?,F(xiàn)在轉(zhuǎn)到 SOAP 響應(yīng)。



回頁首


SOAP 響應(yīng)

SOAP 響應(yīng)也是 XML 文檔 (請參閱清單 8)。


清單 8. 產(chǎn)品庫存檢查器的 XML 格式的 SOAP 響應(yīng)

					
<soap-env:Envelope
    xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <soap-env:Header/>
  <soap-env:Body>
    <tns:InStockQuantityResponse xmlns:tns=" InStockByItemId "
       soap-env:encodingStyle=
           "http://schemas.xmlsoap.org/soap/encoding/">
      <InStockQuantity
          xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
          xsi:type="xsd:string">15</InStockQuantity>
    </tns:InStockQuantityResponse>
  </soap-env:Body>
</soap-env:Envelope>

生成的數(shù)據(jù)結(jié)構(gòu)在 InStockQuantity 中包含對請求的回答。下面,將用 PHP 接收和提取需要的數(shù)據(jù)。



回頁首


用 PHP 從響應(yīng)中接收和提取數(shù)據(jù)

用清單 9 中的 PHP 代碼捕獲響應(yīng)。


清單 9. 捕獲響應(yīng)

					
...
$client-<InStockCheck($params);
$result = $client-<InStockCheck($params);
...
?>

只要把變量 $result 設(shè)置為 InStockCheck 的 SOAP 調(diào)用即可。要提取回答 InStockQuantity,請使用清單 10 中的代碼。


清單 10. 提取答案

					
...
$result = $client->lInStockCheck($params);
$answer = $result->lInStockQuantity;
?>

現(xiàn)在了解了如何傳輸和接收簡單 SOAP 請求和響應(yīng)。稍后,將制作帶有層次結(jié)構(gòu)的更復(fù)雜的 SOAP 請求。



回頁首


處理故障

故障可能由于各種原因而發(fā)生。要想自行捕捉故障而不使用異常,并把故障顯示到屏幕上,請使用以下 PHP 代碼。


清單 11. 處理 SOAP 故障

					
...
$result = $client->InStockCheck($params);
$client = new
    SoapClient("http://webservices.example.com/services/example.wsdl");
$result = $client->InStockCheck($params);
if(is_soap_fault($result)){
    print("A fault occurred: " . $result->faultstring);
}
else{
    $answer = $result->InStockQuantity;
}
?>

如果您這邊或服務(wù)器端發(fā)生了問題,SOAP 響應(yīng)中就會返回故障,那么使用上面的代碼就可以得到通知。故障看起來就像正常的 SOAP 響應(yīng)一樣。但是,變量 faultstring 包含故障發(fā)生的原因。

獲得內(nèi)容

如何構(gòu)建店面并顯示商品

developerWorks
第 5 頁, 總 共 12 頁

文檔選項
將此頁作為電子郵件發(fā)送

將此頁作為電子郵件發(fā)送

樣例代碼


對本教程的評價

幫助我們改進(jìn)這些內(nèi)容


設(shè)計店面架構(gòu)

這一節(jié)將討論店面架構(gòu)的設(shè)計。它將指導(dǎo) Web 站點(diǎn)模板的創(chuàng)建,模板包括:顯示的標(biāo)題,分類使用的側(cè)面板,在分類中進(jìn)行搜索的搜索框,以及頁面底部的頁腳。

處理點(diǎn):storeFront.php

既然已經(jīng)介紹了 Web 服務(wù),現(xiàn)在就開始設(shè)計店面。為店面創(chuàng)建一個根目錄,并創(chuàng)建一個文件:storeFront.php。開始編寫它的代碼,如清單 12 所示。


清單 12. 處理請求和顯示店面

					
<?php
...
$title="Welcome to TylerCo.";
require(‘header.php‘);
...
print("

<p>Welcome to TylerCo., where you 
will find great value and great service!
Guaranteed!<p> Please browse the 
products on our Web site by clicking 
on one of the categories to the left");
...

require(‘footer.php‘);
?>

上面的代碼介紹店面。隨后當(dāng)選擇了某個分類時,就會調(diào)用方法與 Amazon ECS 連接,并顯示返回的分類商品或與搜索條件對應(yīng)的商品。



回頁首


主鏈接和標(biāo)題

storeFront.php 這個文件用來轉(zhuǎn)發(fā)和接收應(yīng)用程序的所有請求,這是創(chuàng)建店面要顯示的余下內(nèi)容所需要的。創(chuàng)建名為 header.php 的文件,把它放到 storeFront.php 的同一目錄中。開始編寫它的代碼,如清單 13 所示。


清單 13. 主鏈接和標(biāo)題

					
<?php

print(‘
<html>
<title>‘.$title.‘</title>
<body>
<table width="750px" align="center" valign="top">
<tr><td colspan="2">
‘);

if(!isset($_GET[‘keyword‘]) && !isset($_GET[‘category‘])){
    print("Home");
}
else{
    print("<a href=‘storeFront.php");
    print("‘>Home</a>");
}
...

在這里輸出了標(biāo)題,而且如果需要的話,還會輸出主鏈接。如果 Web 瀏覽器被指向 storeFront.php,而不是某個關(guān)鍵字或分類,那么只會顯示 Home 這個文本。但是,如果正在瀏覽分類,那么會顯示這個鏈接,在鏈接上點(diǎn)擊,會清空 GET 字符串中的變量并回到主頁。



回頁首


側(cè)面板:分類

接下來,需要一些瀏覽用的分類。我們從五個分類開始:Baby、Computers、Outdoor Living、Software 和 Sporting Goods。繼續(xù)處理 header.php,添加如清單 14 所示的代碼。


清單 14. 顯示分類鏈接

					
...
print(‘
</td></tr>
<tr><td colspan="2">
<center><h1>‘.$title.‘</h1><
  /center></tr></td><tr><td height="100%">

<table width="135px" align="left" border="2px" 
  height="100%"><tr><td valign="top">
<table width="135px">
  <tr>
    <td><b>Categories</b></td>
  </tr>
  <tr>
    <td>
<a href="storeFront.php?category=Baby&displayCat=Baby‘.
          processGETString("cadikepa").‘">Baby</a><br />
<a href="storeFront.php?category=PCHardware&displayCat=Computers‘.
          processGETString("cadikepa").‘">Computers</a><br />
<a href="storeFront.php?category=OutdoorLiving&displayCat=Outdoor Living‘.
          processGETString("cadikepa").‘">Outdoor Living</a><br />
<a href="storeFront.php?category=Software&displayCat=Software‘.
          processGETString("cadikepa").‘">Software</a><br />
<a href="storeFront.php?category=SportingGoods&displayCat=Sporting Goods‘.
          processGETString("cadikepa").‘">Sporting Goods</a>
    </td>
  </tr>
  <tr>
    <td> </td>
  </tr>
</table>
‘);
...

清單 14 創(chuàng)建的側(cè)面板將容納分類鏈接。當(dāng)客戶點(diǎn)擊其中一個分類時,會在 URL 中設(shè)置這個分類和 displayCat(要求顯示當(dāng)前分類的值)。這樣,應(yīng)用程序就能用 GET 數(shù)組處理變量并顯示適當(dāng)?shù)纳唐泛托畔ⅰ?/p>

圖 5 顯示了具有分類鏈接的當(dāng)前店面。


圖 5. 顯示分類鏈接
顯示分類鏈接

分類鏈接顯示在左側(cè)面板中。現(xiàn)在轉(zhuǎn)到對在分類上點(diǎn)擊的處理。

processGETString 將把當(dāng)前變量放在 GET 數(shù)組中,根據(jù)店面中的每次點(diǎn)擊添加變量的值。這很重要,這樣客戶每次在店面中點(diǎn)擊時,他目前的數(shù)據(jù)就不會丟失。把這個函數(shù)放在 functions.php 中,如清單 15 所示。


清單 15. 處理和返回 URL 中編碼的變量

					
function processGETString($vetoString=‘‘){
    $string = ‘‘;
    if($_GET[‘pagenum‘] != ‘‘ && strstr($vetoString, ‘pa‘) == ‘‘)
        $string .= "&pagenum=".$_GET[‘pagenum‘];
    if($_GET[‘keyword‘] != ‘‘ && strstr($vetoString, ‘ke‘) == ‘‘)
        $string .= "&keyword=".$_GET[‘keyword‘];
    if($_GET[‘category‘] != ‘‘ && strstr($vetoString, ‘ca‘) == ‘‘)
        $string .= "&category=".$_GET[‘category‘];
    if($_GET[‘displayCat‘] != ‘‘ && strstr($vetoString, ‘di‘) == ‘‘)
        $string .= "&displayCat=".$_GET[‘displayCat‘];
    return $string;
}

這個函數(shù)把當(dāng)前的所有變量合并成一個變量,用來創(chuàng)建鏈接,這樣就可以把變量的值從一個鏈接傳遞到下一個鏈接。作為參數(shù)傳遞的 $vetoString 變量(值為 cadikepa)用作指示:如果這個變量存在,它的值就不被傳播。這在用戶想轉(zhuǎn)換分類時很重要。使用 displayCat 可以顯示新的分類。關(guān)鍵字和 pagenum 變量需要一起被丟棄。

請點(diǎn)擊 Baby 分類,注意 URL 中的當(dāng)前分類和 displayCat 值:


http://localhost.localdomain/amazon_ecs_part1/storeFront.php?
   category=Baby&displayCat=Baby

現(xiàn)在點(diǎn)擊 Computers 分類.


http://localhost.localdomain/amazon_ecs_part1/storeFront.php?
  category=PCHardware&displayCat=Computers

可以看到舊的分類和 displayCat 值沒有被傳播。這是因為通過傳遞 ‘ca‘ 取消分類并且傳遞 ‘di‘ 取消 displayCat,processGETString() 函數(shù)已經(jīng)取消了它們。



回頁首


側(cè)面板:搜索框

現(xiàn)在已經(jīng)設(shè)置了瀏覽分類的功能。接下來,要添加功能,創(chuàng)建一個搜索框,在當(dāng)前分類中進(jìn)行搜索,繼續(xù)使用 header.php,如清單 16 所示。


清單 16. 顯示搜索框

					
...
</table>
‘);

if(isset($_GET[‘category‘])){
    print(‘
<table width="135px">
  <tr>
    <td><b>Search within<br>this category</b></td>
  </tr>
  <tr>
    <td>
      <form name="search" action="storeFront.php" method="GET">
...
        <input type="hidden" name="displayCat" 
		         value="‘.$_GET[‘displayCat‘].‘" />
        <input type="hidden" name="category" 
		         value="‘.$_GET[‘category‘].‘" />‘);
    print(‘
        <input type="text" name="keyword" size="10" />
        <input type="submit" value="Search" />
      </form>
    </td>
  </tr>
  <tr>
    <td> </td>
  </tr>
</table>
‘);
...

清單 16 的 HTML 代碼會顯示一個搜索框。一旦按下了 Search 按鈕,就會提交輸入的關(guān)鍵字,同時當(dāng)前 displayCat 和分類變量也會作為隱含輸入提交。這將允許應(yīng)用程序處理數(shù)據(jù),并把適當(dāng)?shù)纳唐纷鳛榻Y(jié)果顯示出來。

請點(diǎn)擊某個分類鏈接,查看帶有搜索框的當(dāng)前店面,如圖 6 所示。


圖 6. 顯示搜索框
顯示搜索框

搜索框在左側(cè)面板中顯示,有一個按鈕。在 搜索商品 一節(jié)中將介紹在分類中搜索商品?,F(xiàn)在轉(zhuǎn)入主內(nèi)容區(qū)域。



回頁首


主內(nèi)容區(qū)域:設(shè)置和內(nèi)容

到了教程的這一部分,側(cè)面板即將完成。在第 2 部分中還會添加其他一些東西,所以請一定要閱讀那一部分。

現(xiàn)在,要設(shè)置主內(nèi)容區(qū)域,稍后將在這里顯示從 Amazon 返回的商品。這部分代碼會結(jié)束側(cè)面板并開始主內(nèi)容區(qū)域:


print(‘
</td></tr></table>
</td><td valign="top" width="100%">‘);

主內(nèi)容區(qū)域的內(nèi)容是用來顯示的。在做這件事之前,需要完成頁腳。



回頁首


頁腳:站點(diǎn)信息

頁腳是一個相當(dāng)簡單的文件,如果日后需要,可以做得更復(fù)雜。創(chuàng)建 footer.php 文件,并把它放在與 header.php 相同的目錄中。把以下示例代碼放在這個文件中,如清單 17 所示。


清單 17: 顯示站點(diǎn)和版權(quán)信息

					
</td></tr>
<tr><td align="center" colspan="2">
<font size="2px"><br>
<center>Copyright 2005, TylerCo.<br>Product/
information and pictures Copyright Amazon</center>
</font>
</td></tr></table>
</body></html>

可以為自己的應(yīng)用程序調(diào)整站點(diǎn)和版權(quán)信息。這就完成了店面。把瀏覽器指向 storeFront.php 后的示例輸出如圖 7 所示。


圖 7. 完整的店面
完整的店面

店面現(xiàn)在應(yīng)當(dāng)包括標(biāo)題、帶有分類鏈接的側(cè)面板,右側(cè)是空的主內(nèi)容區(qū),頁腳顯示站點(diǎn)和版權(quán)信息。搜索框在這里不顯示,因為還沒有選擇分類。

現(xiàn)在轉(zhuǎn)到有趣的部分,開始從 Amazong 檢索內(nèi)容。

獲得內(nèi)容

如何構(gòu)建店面并顯示商品

developerWorks
第 6 頁, 總 共 12 頁

文檔選項
將此頁作為電子郵件發(fā)送

將此頁作為電子郵件發(fā)送

樣例代碼


對本教程的評價

幫助我們改進(jìn)這些內(nèi)容


瀏覽分類

既然店面已經(jīng)設(shè)計完成,有了分類鏈接,現(xiàn)在是時候從 Amazon ECS 請求數(shù)據(jù)并顯示返回的商品供客戶瀏覽了。

從 GET 數(shù)據(jù)中檢索當(dāng)前分類

首先需要點(diǎn)擊一個分類。先從點(diǎn)擊 Sporting Goods 分類開始,然后在 storeFront.php 中處理,如清單 18 所示。


清單 18. 處理從 GET 數(shù)組得到的分類變量

					
...
require(‘header.php‘);

if($_GET[‘category‘] != ‘‘){
    printCategoryItems();
}
else{
    print("
<p>Welcome to TylerCo., where you will find 
great value and great service!
Guaranteed!<p> 
Please browse the products on our Web site by clicking 
on one of the categories to the left");
}

這次,不是介紹店面,GET 數(shù)組中存在分類變量,這告訴應(yīng)用程序選擇了一個分類,應(yīng)當(dāng)調(diào)用 printCategoryItems()。要想看看清單 18 中的代碼的作用,可以創(chuàng)建一個空函數(shù) printCategoryItems(),并把它放在 functions.php 文件中。



回頁首


檢驗選中的分類

已經(jīng)選擇一個分類后,需要做的是檢驗它是否店面中的有效分類。請在 functions.php 文件中創(chuàng)建以下函數(shù),并把這個文件放在店面根目錄中叫作 includes 的子目錄中,如清單 19 所示。


清單 19. 檢驗選中的分類在店面中是否有效

					
define(TOKEN, "YourDeveloperTokenHere");
define(ASSOCID, "YourAssociatesIdHere");

function printCategoryItems(){
...
    $category = $_GET[‘category‘];
    $displayCat = $_GET[‘displayCat‘];

    switch($category){
    case ‘Baby‘:
    case ‘PCHardware‘:
    case ‘OutdoorLiving‘:
    case ‘Software‘:
    case ‘SportingGoods‘:
        $innerTitle = "$displayCat";
        break;
    default:
        print("The $category category doesn‘t exist");
        return;
    }

    if(isset($_GET[‘pagenum‘])){
        $pagenum = $_GET[‘pagenum‘];
    }
    else{
        $pagenum = "1";
    }
...

請在 storeFront.php 的頂部包含這個文件。

前兩行定義了開發(fā)人員令牌和 Amazon 合伙人 ID。需要用從 Amazon 得到的實(shí)際值替換它們。如果分類無效,方法會返回,并通知客戶。但是,如果分類有效,主內(nèi)容區(qū)的標(biāo)題就會變成用來顯示分類的值,比起傳遞給 Amazon 的分類代碼,這個值更具可讀性。$pagenum 變量指示 Amazon 要返回哪頁結(jié)果顯示給客戶。



回頁首


設(shè)置參數(shù)

現(xiàn)在要設(shè)置發(fā)送給 Amazon ECS 的參數(shù)。在分類中搜索商品,要使用清單 20 所示的參數(shù)。


清單 20. 在分類中搜索商品的參數(shù)

					
...
    $pagenum = "1";
}
$array = array(‘Operation‘ => ‘ItemSearchRequest‘,
               ‘ItemPage‘ => $pagenum,
               ‘SearchIndex‘ => $category,
               ‘ResponseGroup‘ => ‘Medium‘,
               ‘Keywords‘ => $displayCat);
...

這個操作告訴 Amazon 要執(zhí)行的是 ItemSearchRequest 查詢,第一頁是 1(由 ItemPage 指示)。SearchIndex 指定要搜索哪個分類,ResponseGroup 告訴 Amazon 需要多少信息。把 $displayCat 作為 Keywords,表明將查詢整個分類。Keywords 參數(shù)是必需的,不能為空,所以包含分類顯示名稱的 $displayCat 變量將被用作關(guān)鍵字。



回頁首


創(chuàng)建請求函數(shù)

請在 functions.php 中創(chuàng)建另一個函數(shù),它將把我們的請求發(fā)送到 Amazon 并返回結(jié)果,如清單 21 所示。


清單 21. 向 Amazon ECS 發(fā)送請求并返回結(jié)果

					
function callSOAPFunction($function, $array){
    $params = array(‘Service‘ => ‘AWSECommerceService‘,
                    ‘AssociateTag‘ => ASSOCID,
                    ‘SubscriptionId‘ => TOKEN,
                    ‘Request‘ => array($array));

    $client = new
SoapClient("http://webservices.amazon.com/AWSECommerceService
                  /AWSECommerceService.wsdl",
                   array(‘exceptions‘ => 0));

    return $client->__soapCall($function, array($params));
}

這個函數(shù)獲得一個函數(shù)名(由 WSDL 文件決定)以及一個參數(shù)數(shù)組(是在前面的面板中創(chuàng)建的)。然后就創(chuàng)建一個新 SOAP 客戶,指向 Amazon 的 ECS WSDL 文件。參數(shù) ‘exceptions‘ => 0 表明要手工處理異常。最后,向 Amazon 發(fā)送請求,指明要使用 WSDL 文件的函數(shù) $function,以及參數(shù)數(shù)組 $params。如果有效,函數(shù)會返回一個數(shù)據(jù)結(jié)構(gòu),其中包含與搜索請求匹配的商品。



回頁首


使用請求函數(shù)

現(xiàn)在可以通過調(diào)用 callSOAPFunction 制作請求。請把如清單 22 所示的代碼添加到 printCategoryItems() 函數(shù)中。


清單 22. 調(diào)用 callSOAPFunction 并把結(jié)果保存在 $result 中

					
...
               ‘ResponseGroup‘ => ‘Medium‘,
               ‘Keywords‘ => $displayCat);

$result = callSOAPFunction("ItemSearch", $array);
...

結(jié)果現(xiàn)在保存在 $result 中,可以對它進(jìn)行處理。



回頁首


商品顯示區(qū)

如果請求有效,每件事都工作正常,那么可以為客戶顯示商品的信息了。異常處理會在這一節(jié)最后介紹。添加代碼到 printCategoryItems() 函數(shù)中,如清單 23 所示。


清單 23. 判斷請求是否返回了商品,顯示商品,以及頁面導(dǎo)航

					
...
    $result = callSOAPFunction("ItemSearch", $array);
    $items = $result->Items->Item;
    if($items){
        printItemsSection($innerTitle, $items);
        printPrevNextPage($result->Items->TotalPages, $pagenum);
    }
}
<><>>>>>>>>>

首先,需要從返回的 SOAP 構(gòu)造中檢索商品數(shù)組:$items = $result->Items->Item。然后,如果 $items 存在,printItemsSection() 就輸出所有商品,而 printPrevNextPage() 則會輸出頁面導(dǎo)航鏈接。

現(xiàn)在,需要遍歷 $items 數(shù)組(如果它是數(shù)組的話)中的所有商品,或者打印出 $items(如果它不是數(shù)組的話)中唯一的商品。請參閱清單 24 中的代碼,并把這個函數(shù)放在 functions.php 中。


清單 24. 輸出商品區(qū)的標(biāo)題并遍歷所有商品

					
function printItemsSection($title, $items){
    print("<center><h3>$title</h3></center>");
    print("
        <table width=‘100%‘ border=‘0‘ cellspacing=‘5‘ cellpadding=‘0‘>");
    if(is_array($items)){
        foreach($items as $i){
            printItem($i);
        }
    }
    else{
        printItem($items);
    }
    print("</table>");
}

對于每個商品元素,都調(diào)用 printItem() 函數(shù)。在這里把每個商品的 HTML 發(fā)送到 Web 瀏覽器。請把清單 25 所示的函數(shù)添加到 functions.php 中。


清單 25. 通過從 $i 變量檢索商品數(shù)據(jù),輸出一件商品的信息

					
function printItem($i){
    print("<tr><td align=‘center‘ valign=‘top‘ rowspan=‘3‘>");
    print("<img border=‘0‘ src=‘".$i->SmallImage->URL."‘>");
    print("</td><td><font size=‘-1‘> ");
    print("<b>".$i->ItemAttributes->Title."</b><
	   /font></td> </tr> ");

    $price = $i->OfferSummary->LowestNewPrice->FormattedPrice;

    print("<tr> <td align=‘left‘ valign=‘top‘>");
    print("<font size=‘-1‘>Price: $price</font></td> </tr>");
    print("<tr><td colspan=2> </td> </tr> ");
}

首先,顯示 URL 為 $i->SmallImage->URL 的圖片。然后是商品名稱 $i->ItemAttributes->Title,后面跟著的是價格 $i->OfferSummary->LowestNewPrice->FormattedPrice。顯示的每件商品實(shí)際上都是一個對象,擁有各種屬性,與 SOAP 響應(yīng)返回的 XML 文件對應(yīng)。

圖 8 顯示了目前為止應(yīng)用程序的瀏覽器輸出示例。


圖 8. 顯示 Sporting Goods 分類的第一頁
顯示 Sporting Goods 分類的第一頁

下面,需要導(dǎo)航鏈接,以便在分類的頁面間進(jìn)行導(dǎo)航。



回頁首


顯示頁面導(dǎo)航鏈接

清單 23 中,有一個對 printPrevNextPage() 函數(shù)的引用。請把這個函數(shù)添加到 functions.php 中,如清單 26 所示。


清單 26. 為前一頁和下一頁鏈接檢索數(shù)據(jù),并顯示它們

					
function printPrevNextPage($totalPages, $pagenum){
    $previousPage = processPrevPage();
    $nextPage = processNextPage($totalPages);
    
    print("<table width=‘100%‘><tr><td width=‘33%‘ 
	              align=‘left‘>");
    print("$previousPage</td>");
    print("<td width=‘33%‘ align=‘center‘>Page ".$pagenum);
    print(" of $totalPages</td>");
    print("<td width=‘33%‘ align=‘right‘>$nextPage
	         </td></tr></table>");
    print("<font size=‘0‘><br><center>The 
	         above information came from ");
    print("Amazon.com. We make no guarantees to the accuracy of the above ");
    print("information.</center></font>");
}

清單 26 中的函數(shù)調(diào)用兩個子函數(shù):processPrevPage()processNextPage()。這個函數(shù)接受兩個返回的鏈接,并顯示它們,這樣就允許客戶在頁面間游歷。它還顯示了一個免責(zé)聲明,表明 Web 站點(diǎn)的作者對于 Amazon 提供的信息不承擔(dān)責(zé)任。

添加函數(shù) processPrevPage()processNextPage() 的代碼到 functions.php 中,如清單 27 和清單 28 所示。


清單 27. 計算前一頁鏈接

					
function processPrevPage($pagenum){
    if($pagenum > 1){
        $previousPage = "<a href=‘storeFront.php?pagenum=".
            ($pagenum-1).
            processGETString("pa");
        $previousPage .= "‘>Previous Page</a>";
    }
    else{
        $previousPage = "Previous Page";
    }
    return $previousPage;
}


清單 28. 計算下一頁鏈接

					
function processNextPage($totalPages, $pagenum){
    if($pagenum < 300 && ($pagenum+1) <= $totalPages){
        $nextPage = "<a href=‘storeFront.php?pagenum=".($pagenum+1).
            processGETString("pa");
        $nextPage .= "‘>Next Page</a>";
    }
    else{
        $nextPage = "Next Page";
    }
    return $nextPage;
}

這兩個清單中的代碼處理前一頁和下一頁鏈接。請注意,processGETString() 的取消字符串會作為 pa 發(fā)送,從而確保當(dāng)前的 pagenum 變量不會被傳播。

現(xiàn)在介紹顯示導(dǎo)航鏈接的代碼。請參閱圖 9 中顯示導(dǎo)航鏈接的瀏覽器輸出示例。


圖 9. 在 Sporting Goods 分類第一頁的底部顯示導(dǎo)航鏈接
在 Sporting Goods 分類第一頁的底部顯示導(dǎo)航鏈接


回頁首


異常處理

既然已經(jīng)制作了請求,現(xiàn)在重要的是檢驗沒有發(fā)生錯誤。首先,創(chuàng)建函數(shù) error(),如清單 29 所示。


清單 29. 顯示出錯信息

					
function error($msg, $err, $result){
    print($msg);
    if(is_array($err)){
        $msg2 = $err[0]->Message;
    }
    else{
        $msg2 = $err->Message;
    }
    print($msg2);
    print_r($result->faultstring);
    print("<br><br>");
    print_r($result);
}

這個函數(shù)將顯示出錯信息,表示發(fā)生了錯誤。請修改 printCategoryItems(),如清單 30 所示。這個代碼檢查是否出錯,并使用 error() 函數(shù)。


清單 30. 測試 $result 判斷是否出錯,如果為真就顯示出錯信息

					
...
$result = callSOAPFunction("ItemSearch", $array);

if($result->faultstring || $result->Items->Request->Errors){
    error("Your search return 0 results, or perhaps there was an 
	  error processing your request. The returned XML file with 
	  additional error information is as follows:<br><br>",
          $result->Items->Request->Errors->Error, $result);
}
else{
    $items = $result->Items->Item;
    if($items){
        printItemsSection($innerTitle, $items);
        printPrevNextPage($result->Items->TotalPages, $pagenum);
    }
}

...

在返回的 SOAP 構(gòu)造中,有兩個部分需要查看。一個是檢查 $result->faultstring,如果沒有出現(xiàn)故障,那么就需要查看 $result->Items->Request->Errors,檢查是不是在請求中有錯誤。如果存在其中任何一種情況,都會顯示出錯信息;否則,代碼會繼續(xù)執(zhí)行。

應(yīng)用程序運(yùn)行得很好!現(xiàn)在要轉(zhuǎn)到搜索框,以便客戶可以更好地縮小搜索范圍。

獲得內(nèi)容

如何構(gòu)建店面并顯示商品

developerWorks
第 7 頁, 總 共 12 頁

文檔選項
將此頁作為電子郵件發(fā)送

將此頁作為電子郵件發(fā)送

樣例代碼


對本教程的評價

幫助我們改進(jìn)這些內(nèi)容


搜索商品

在這一節(jié),將學(xué)習(xí)如何用搜索框設(shè)置正確的 SOAP 請求并在分類中檢索特定商品,這樣客戶就可以把他們的搜索集中于少量商品。這一節(jié)會重用 瀏覽分類 一節(jié)中的許多代碼,所以這一節(jié)的目標(biāo)是展示如何動態(tài)地設(shè)置 Amazon 的商品搜索請求的參數(shù)。



檢索搜索框提交的關(guān)鍵字

在檢索提交的關(guān)鍵字之前,需要在搜索框中輸入一些關(guān)鍵字。請在搜索框中輸入“golf clubs”,如圖 10 所示。




圖 10. 在搜索框中輸入關(guān)鍵字“golf clubs”
輸入關(guān)鍵字 golf clubs

現(xiàn)在按下回車或點(diǎn)擊 Search 按鈕?,F(xiàn)在可以添加 printCategoryItems() 函數(shù),并用 GET 提交的關(guān)鍵字變量確定它的參數(shù)(請參閱清單 31)。


清單 31. 從 GET 數(shù)組檢索關(guān)鍵字變量

					
function printCategoryItems(){
    if(isset($_GET[‘keyword‘])){
        $keyword = $_GET[‘keyword‘];
        $innerTitle = "Results for ‘$keyword‘ ";
    }
    $category = $_GET[‘category‘];
...

這將可以確定發(fā)送到 Amazon 的請求的參數(shù)。



回頁首


確定搜索參數(shù)

要確定 $array 構(gòu)造中創(chuàng)建的搜索參數(shù),請參閱清單 32。


清單 32. 確定用來構(gòu)造發(fā)送給 Amazon 的請求的 $array 參數(shù)

					
...
    print("The $category category doesn‘t exist");
    return;
}

$array = array(‘Operation‘ => ‘ItemSearchRequest‘,
               ‘ItemPage‘ => $pagenum,
               ‘SearchIndex‘ => $category,
               ‘ResponseGroup‘ => ‘Medium‘,
               ‘Keywords‘ => getKeyword($keyword, $displayCat));

$result = callSOAPFunction("ItemSearch", $array);
...

通過 getKeyword(),可以動態(tài)地修改傳遞給商品搜索請求的關(guān)鍵字。創(chuàng)建函數(shù) getKeyword() 并把它放在 functions.php 文件中(請參閱清單 33)。


清單 33. 根據(jù)是否設(shè)置了 $keyword,返回需要的關(guān)鍵字

					
function getKeyword(){
    if($_GET[‘keyword‘] == ‘‘){
        return $_GET[‘displayCat‘];
    }
    else{
        return $_GET[‘keyword‘];
    }
}

這樣,如果設(shè)置了 keyword,就意味著客戶使用搜索框進(jìn)行搜索,那么關(guān)鍵字會通過清單 33 中的函數(shù)返回,并用作請求的 Keywords 的輸入,這樣就可以動態(tài)地修改請求的輸入。

這就是動態(tài)地修改商品搜索請求輸入?yún)?shù)所要做的全部工作。請參閱圖 11 中在 Sporting Goods 分類中搜索 golf clubs 的示例輸出。


圖 11. 在 Sporting Goods 分類中搜索 golf clubs 的結(jié)果
在 Sporting Goods 分類中搜索 golf clubs 的結(jié)果

請注意,搜索的結(jié)果與搜索框中輸入的內(nèi)容匹配!現(xiàn)在有了一個可以工作的 Web 站點(diǎn),用戶可以瀏覽 Amazon 特定分類中的商品,還可以在這些分類中搜索商品。

結(jié)束語

在這篇教程中,用 PHP 創(chuàng)建了 Amazon 店面,允許客戶瀏覽分類,在這些分類中搜索特定商品。應(yīng)用程序成功地向 Amazon ECS 提交請求并從 Amazon ECS 接收請求,允許在這個 Web 站點(diǎn)上顯示產(chǎn)品。在這個系列的第 2 部分中,將為應(yīng)用程序創(chuàng)建購物車,允許客戶在 Amazon 上安全地購買商品 —— 并為您提供傭金。

下載

描述 文件名稱 文件大小  下載方法
Source code for the Amazon store, Part 1 os-amazonphpstore1.zip 3.5 KB  FTP

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ecshop 蜘蛛爬行記錄的實(shí)現(xiàn)
仿淘寶商品詳細(xì)頁加入購物車效果
使用 PHP 開發(fā)基于 Web 服務(wù)的應(yīng)用程序
ECshop破解授權(quán)
ecshop中為什么要定義'IN_ECS'
ECS
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服