欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

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

如何構建店面并顯示商品

developerWorks



級別: 中級

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

2005 年 12 月 19 日

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

開(kāi)始之前

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

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

關(guān)于本系列

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

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



回頁(yè)首


關(guān)于本教程

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

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

 

獲得內容

如何構建店面并顯示商品

developerWorks
第 2 頁(yè), 總 共 12 頁(yè)

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

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

樣例代碼


對本教程的評價(jià)

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


概述

Amazon ECS

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

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



回頁(yè)首


與 Amazon ECS 通信

我們將使用 PHP 和 Web 服務(wù),通過(guò) SOAP 與 Amazon 通信。Web 服務(wù)(例如 Amazon ECS)允許程序員訪(fǎng)問(wèn)服務(wù)。在這個(gè)示例中,我們將連接到 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 消息看起來(lái)就是這個(gè)樣子。在 PHP 和 Web 服務(wù) 一節中,將學(xué)習如何使用 SOAP 消息制作到 SOAP 服務(wù)器的請求和接收來(lái)自 SOAP 服務(wù)器的請求。



回頁(yè)首


店面

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


圖 1. 最后的應用程序
最后的應用程序


回頁(yè)首


分類(lèi)

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

可用的分類(lèi)如圖 2 所示。


圖 2. 可用的分類(lèi)
可用的分類(lèi)

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



回頁(yè)首


商品

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


圖 3. 最終應用程序在 Baby 分類(lèi)中顯示的商品
最終應用程序在 Baby 分類(lèi)中顯示的商品

圖 4. Amazon 上在 Baby 分類(lèi)中顯示的商品
Amazon 上在 Baby 分類(lèi)中顯示的商品

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

獲得內容

如何構建店面并顯示商品

developerWorks
第 3 頁(yè), 總 共 12 頁(yè)

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

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

樣例代碼


對本教程的評價(jià)

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


什么是 Amazon ECS?

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

請求類(lèi)型

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

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

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


回頁(yè)首


理解參數

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

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

下面是一些可用的響應組:

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


回頁(yè)首


SOAP 與 REST

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

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

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



回頁(yè)首


簡(jiǎn)單 REST 請求

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

服務(wù)的值是 AWSECommerceService,操作是 ItemSearchRequest,ResponseGroupSmall,SubscriptionId 是開(kāi)發(fā)人員令牌,AssociateTag 是 Amazon 合伙人 ID。通過(guò) Sporting Goods 分類(lèi)進(jìn)行搜索,所以 SearchIndex 是 SportingGoods,具體的搜索是高爾夫俱樂(lè )部,所以 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 現在會(huì )返回包含搜索的商品信息的 XML 文檔。



回頁(yè)首


REST 響應

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

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



回頁(yè)首


理解 Amazon 的 WSDL 文件

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

Amazon 的 WSDL 文件 描述了可用的命令以及可能的查詢(xún)和搜索語(yǔ)法。

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

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


清單 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 請求和響應以及 REST 響應的結構。(REST 請求就是帶有編碼過(guò)的參數的 URL。)請注意,清單 5 中名為 Request 的元素定義了可以產(chǎn)生的請求類(lèi)型,是 ItemSearchRequest 請求;而且清單 5 中包含的請求結構把 ItemSearch 請求和 ItemSearchRequest 操作連接在一起。在繼續閱讀本教程時(shí),或者在讀完這份教程并準備構建自己的應用程序時(shí),可以參考這個(gè)文件。

獲得內容

如何構建店面并顯示商品

developerWorks
第 4 頁(yè), 總 共 12 頁(yè)

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

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

樣例代碼


對本教程的評價(jià)

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


PHP 和 Web 服務(wù)

在這一節,將學(xué)習如何通過(guò) PHP 發(fā)送和接收簡(jiǎn)單 SOAP 請求,以及如何 PHP 從響應中提取數據。

創(chuàng )建 SOAP 請求

要創(chuàng )建 SOAP 請求,需要設置參數。因為 SOAP 比 REST 復雜,所以將從一個(gè)簡(jiǎn)單示例開(kāi)始:產(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 中看起來(lái)的樣子。它指定了一個(gè)帶有空 HeaderEnvelope。Body 包含要發(fā)送的參數。PHP 現在可以通過(guò) HTTP 向 SOAP 服務(wù)器發(fā)送這個(gè)請求。



回頁(yè)首


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

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


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

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



回頁(yè)首


用 PHP 傳遞 SOAP 請求

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


清單 7. 設置參數并發(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在轉到 SOAP 響應。



回頁(yè)首


SOAP 響應

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


清單 8. 產(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: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>

生成的數據結構在 InStockQuantity 中包含對請求的回答。下面,將用 PHP 接收和提取需要的數據。



回頁(yè)首


用 PHP 從響應中接收和提取數據

用清單 9 中的 PHP 代碼捕獲響應。


清單 9. 捕獲響應

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

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


清單 10. 提取答案

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

現在了解了如何傳輸和接收簡(jiǎn)單 SOAP 請求和響應。稍后,將制作帶有層次結構的更復雜的 SOAP 請求。



回頁(yè)首


處理故障

故障可能由于各種原因而發(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ā)生了問(wèn)題,SOAP 響應中就會(huì )返回故障,那么使用上面的代碼就可以得到通知。故障看起來(lái)就像正常的 SOAP 響應一樣。但是,變量 faultstring 包含故障發(fā)生的原因。

獲得內容

如何構建店面并顯示商品

developerWorks
第 5 頁(yè), 總 共 12 頁(yè)

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

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

樣例代碼


對本教程的評價(jià)

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


設計店面架構

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

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

既然已經(jīng)介紹了 Web 服務(wù),現在就開(kāi)始設計店面。為店面創(chuàng )建一個(gè)根目錄,并創(chuàng )建一個(gè)文件:storeFront.php。開(kāi)始編寫(xiě)它的代碼,如清單 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‘);
?>

上面的代碼介紹店面。隨后當選擇了某個(gè)分類(lèi)時(shí),就會(huì )調用方法與 Amazon ECS 連接,并顯示返回的分類(lèi)商品或與搜索條件對應的商品。



回頁(yè)首


主鏈接和標題

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


清單 13. 主鏈接和標題

					
<?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>");
}
...

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



回頁(yè)首


側面板:分類(lèi)

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


清單 14. 顯示分類(lèi)鏈接

					
...
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 )建的側面板將容納分類(lèi)鏈接。當客戶(hù)點(diǎn)擊其中一個(gè)分類(lèi)時(shí),會(huì )在 URL 中設置這個(gè)分類(lèi)和 displayCat(要求顯示當前分類(lèi)的值)。這樣,應用程序就能用 GET 數組處理變量并顯示適當的商品和信息。

圖 5 顯示了具有分類(lèi)鏈接的當前店面。


圖 5. 顯示分類(lèi)鏈接
顯示分類(lèi)鏈接

分類(lèi)鏈接顯示在左側面板中?,F在轉到對在分類(lèi)上點(diǎn)擊的處理。

processGETString 將把當前變量放在 GET 數組中,根據店面中的每次點(diǎn)擊添加變量的值。這很重要,這樣客戶(hù)每次在店面中點(diǎn)擊時(shí),他目前的數據就不會(huì )丟失。把這個(gè)函數放在 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;
}

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

請點(diǎn)擊 Baby 分類(lèi),注意 URL 中的當前分類(lèi)和 displayCat 值:


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

現在點(diǎn)擊 Computers 分類(lèi).


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

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



回頁(yè)首


側面板:搜索框

現在已經(jīng)設置了瀏覽分類(lèi)的功能。接下來(lái),要添加功能,創(chuàng )建一個(gè)搜索框,在當前分類(lèi)中進(jìn)行搜索,繼續使用 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 代碼會(huì )顯示一個(gè)搜索框。一旦按下了 Search 按鈕,就會(huì )提交輸入的關(guān)鍵字,同時(shí)當前 displayCat 和分類(lèi)變量也會(huì )作為隱含輸入提交。這將允許應用程序處理數據,并把適當的商品作為結果顯示出來(lái)。

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


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

搜索框在左側面板中顯示,有一個(gè)按鈕。在 搜索商品 一節中將介紹在分類(lèi)中搜索商品?,F在轉入主內容區域。



回頁(yè)首


主內容區域:設置和內容

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

現在,要設置主內容區域,稍后將在這里顯示從 Amazon 返回的商品。這部分代碼會(huì )結束側面板并開(kāi)始主內容區域:


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

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



回頁(yè)首


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

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


清單 17: 顯示站點(diǎ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>

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


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

店面現在應當包括標題、帶有分類(lèi)鏈接的側面板,右側是空的主內容區,頁(yè)腳顯示站點(diǎn)和版權信息。搜索框在這里不顯示,因為還沒(méi)有選擇分類(lèi)。

現在轉到有趣的部分,開(kāi)始從 Amazong 檢索內容。

獲得內容

如何構建店面并顯示商品

developerWorks
第 6 頁(yè), 總 共 12 頁(yè)

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

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

樣例代碼


對本教程的評價(jià)

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


瀏覽分類(lèi)

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

從 GET 數據中檢索當前分類(lèi)

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


清單 18. 處理從 GET 數組得到的分類(lèi)變量

					
...
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 數組中存在分類(lèi)變量,這告訴應用程序選擇了一個(gè)分類(lèi),應當調用 printCategoryItems()。要想看看清單 18 中的代碼的作用,可以創(chuàng )建一個(gè)空函數 printCategoryItems(),并把它放在 functions.php 文件中。



回頁(yè)首


檢驗選中的分類(lèi)

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


清單 19. 檢驗選中的分類(lèi)在店面中是否有效

					
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 的頂部包含這個(gè)文件。

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



回頁(yè)首


設置參數

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


清單 20. 在分類(lèi)中搜索商品的參數

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

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



回頁(yè)首


創(chuàng )建請求函數

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


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

					
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));
}

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



回頁(yè)首


使用請求函數

現在可以通過(guò)調用 callSOAPFunction 制作請求。請把如清單 22 所示的代碼添加到 printCategoryItems() 函數中。


清單 22. 調用 callSOAPFunction 并把結果保存在 $result 中

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

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

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



回頁(yè)首


商品顯示區

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


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

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

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

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


清單 24. 輸出商品區的標題并遍歷所有商品

					
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>");
}

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


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

					
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 的圖片。然后是商品名稱(chēng) $i->ItemAttributes->Title,后面跟著(zhù)的是價(jià)格 $i->OfferSummary->LowestNewPrice->FormattedPrice。顯示的每件商品實(shí)際上都是一個(gè)對象,擁有各種屬性,與 SOAP 響應返回的 XML 文件對應。

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


圖 8. 顯示 Sporting Goods 分類(lèi)的第一頁(yè)
顯示 Sporting Goods 分類(lèi)的第一頁(yè)

下面,需要導航鏈接,以便在分類(lèi)的頁(yè)面間進(jìn)行導航。



回頁(yè)首


顯示頁(yè)面導航鏈接

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


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

					
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 中的函數調用兩個(gè)子函數:processPrevPage()processNextPage()。這個(gè)函數接受兩個(gè)返回的鏈接,并顯示它們,這樣就允許客戶(hù)在頁(yè)面間游歷。它還顯示了一個(gè)免責聲明,表明 Web 站點(diǎn)的作者對于 Amazon 提供的信息不承擔責任。

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


清單 27. 計算前一頁(yè)鏈接

					
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. 計算下一頁(yè)鏈接

					
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;
}

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

現在介紹顯示導航鏈接的代碼。請參閱圖 9 中顯示導航鏈接的瀏覽器輸出示例。


圖 9. 在 Sporting Goods 分類(lèi)第一頁(yè)的底部顯示導航鏈接
在 Sporting Goods 分類(lèi)第一頁(yè)的底部顯示導航鏈接


回頁(yè)首


異常處理

既然已經(jīng)制作了請求,現在重要的是檢驗沒(méi)有發(fā)生錯誤。首先,創(chuàng )建函數 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);
}

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


清單 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è)部分需要查看。一個(gè)是檢查 $result->faultstring,如果沒(méi)有出現故障,那么就需要查看 $result->Items->Request->Errors,檢查是不是在請求中有錯誤。如果存在其中任何一種情況,都會(huì )顯示出錯信息;否則,代碼會(huì )繼續執行。

應用程序運行得很好!現在要轉到搜索框,以便客戶(hù)可以更好地縮小搜索范圍。

獲得內容

如何構建店面并顯示商品

developerWorks
第 7 頁(yè), 總 共 12 頁(yè)

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

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

樣例代碼


對本教程的評價(jià)

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


搜索商品

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



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

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




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

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


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

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

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



回頁(yè)首


確定搜索參數

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


清單 32. 確定用來(lái)構造發(fā)送給 Amazon 的請求的 $array 參數

					
...
    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);
...

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


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

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

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

這就是動(dòng)態(tài)地修改商品搜索請求輸入參數所要做的全部工作。請參閱圖 11 中在 Sporting Goods 分類(lèi)中搜索 golf clubs 的示例輸出。


圖 11. 在 Sporting Goods 分類(lèi)中搜索 golf clubs 的結果
在 Sporting Goods 分類(lèi)中搜索 golf clubs 的結果

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

結束語(yǔ)

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

下載

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

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

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久