在InterDev中實現網上購物推車

來源:互聯網
上載者:User
interdev   本文將介紹在InterDev中實現網上商店購物車功能的方法,具體步驟如下:

  一、 資料庫結構:

  產品資料表(Products): 存放產品資訊

產品名 ProductName
產品編號 ProductID
單價 Price
分類編號 CategoryID

   Cart:購物車資料表,臨時存放客戶的訂單

產品編號 ProductID
產品名 ProductName
價格 Price
客戶Session標號 SessionID
訂購數量 Quantity

  Orders:訂單,當使用者確認訂單後,訂貨資料將由Cart錶轉存入此表

產品編號 ProductID
客戶Session編號 SessionID
訂購數量 Quantity
   

  Customers:客戶,實現客戶登入時將使用該表

  二、 建立資料庫連接:

  1、 添加資料來源:在控制台中選擇:管理工具/ODBC資料來源,單擊添加,選擇資料庫驅動程式為Microsoft Access Driver,單擊"完成",在彈出的對話方塊中為資料來源命名為"Store",單擊選擇,找到建立好的.mdb檔案,然後單擊確定

  2、 建立串連:在InterDev中的Project Exlporer中右擊選擇Add Data Connection,選擇資料來源,命名為Con,串連建立後的所有資料存取都將基於此串連。

  三、 購物車要實現的準系統和對應的檔案:

產品瀏覽和選購 Products.asp
放入購物車 AddtoCart.asp
瀏覽購物車 ViewCart.asp
刪除一個產品 DeleteItem.asp
更新購物車 UpdateCart.asp
確認訂單 SaveOrder.asp
  四、 Products.asp

  本頁以表格顯示客戶所選的產品分類中的所有商品,每一個商品後都有一個"添加到購物車"按鈕,指向AddtoCart.asp。

  1、 添加prodRec控制項,設定記錄源為Products表。

  2、 添加Grid控制項,設定其資料來源為prodRec

  3、 添加"選購此產品"連結

  在Grid的屬性頁面中單擊Add Unbound Column,在Header中輸入:"選購此產品",在Field/expression中輸入:="<A href=AddtoCart.asp?ProductID="+[ProductID]+">選購"+"</A>"。此語句的作用是,將當前選定的產品的產品編號存放在變數ProductID中傳遞給AddtoCart.asp,在AddtoCart.asp中將根據此產品編號為購物車添加記錄。

  五、 AddtoCart.asp

  本頁提供使用者所選商品的詳細資料,使用者在此頁可以修改訂購數量。

  1、 添加一個記錄集,命名為prodRec,設定記錄源為SQL statement,輸入:SELECT * FROM Products。在<Head>區中輸入如下代碼:

<Script Language=Javascript Runat=Server>
 function prodRec_onbeforeopen(){
 newSQL="Select * From Products Where ProductID="+Request("ProductID");
 prodRec.setSQLText(newSQL);
}
</Script>

  此段代碼在記錄集開啟之前執行,根據Products.asp傳遞來的ProductID參數,過濾記錄集,獲得使用者選擇的商品。

  2、 再添加一個記錄集,命名為cartRec,該記錄集的作用是根據使用者的Session編號和選定的產品編號,確定所選商品是否已經在購物車中,如果已經在購物車中,則提取Cart表中的記錄,提示使用者該商品已選購,並讓使用者更改選購數量:

<Script Language=Javascript Runat=Server>
 Var Incart; //是否在購物車中
 Var QtyinCart; //使用者已經選購的數量
 function cartRec_onbeforeopen(){
  newSQL="Select * From Cart Where (SessionID="+'Session.SessionID'+")
       and (ProductID="+Request("ProductID")+")";
  cartRec.setSQLText(newSQL);
 }
 function cartRec_ondatasetcomplete(){
  if(cartRecrdset.getCount()==1)
   //過濾後記錄集不為空白,使用者已選購了該商品
  {
   Incart=true;
   QtyinCart=cartRec.fields.getValue("Quantity");
   //取出使用者已經選購的數量
   }
</Script>

  3、 <Body>中的代碼:

<Form Action="UpdateCart.asp" Method="Post">
您選定的商品為:
<%=prodRecorset.fields.getValue("ProductNAME")%>
<%If Incart=true Then%>
您的購物車中已有
<%=QtyinCart%>件此商品,請更新您選購的數量:
<Input Type="Text" Name="OrderQty" Value="<%=QtyinCart%>">
<%Else%>
請輸入您的選購數量:
<Input Type="Text" Name="OrderQty" Value="1">
<%End If%>
<Input Name="prodID" Type="hidden" Value="<%=prodRec.fields.getValue("ProductID")%>">
//使用一個隱藏的編輯框,存放使用者選定的產品編號,供UpdateCart.asp使用。
<Input Name="prodName" Type="hidden" Value="<%=prodRec.fields.getValue("ProductName")%>">
<Input Name="prodPrice" Type="hidden" Value="<%=prodRec.fields.getValue("Price")%>">
//使用三個隱含編輯框,向UpdataCart.asp傳遞產品編號、名稱和價格。
<Input Type="Submit" Value="添加至購物車">
</Form>
  六、 UpdateCart.asp

   接收AddtoCart.asp傳遞來的prodID、prodName、prodPrice和OrderQty,加上客戶的Session編號,存入Cart表中。

  1、 添加記錄集cartRec,設定資料來源為Select * From Cart

  2、 添加更新資料的代碼:

<Script Language=Javascript Runat=Server>
function cartRec_onbeforeopen(){
if(Request("InCart")==0)
{
newSQL="Select * From Cart";
}//不在購物車中,取出所有資料
else
{
newSQL="Select * From Cart Where SessionID="+Session.SessionID;
}//已經在購物車中,取出唯一的資料,準備修改資料
cartRec.setSQLText(newSQL);
}
function cartRec_ondatasetcomplete(){
if(Request("InCart")==0) //如果不在購物車中,添加新紀錄
{
fields=new Array("ProductID","ProductName"Quantity","SessionID");
values=new Array(Request("prodID"),Request("prodName"),Request("OrderQty"),Session.SessionID);
cartRec.AddImmeidate(fields,values);
}
else//如果已經在購物車中,更新購買數量
{
cartRec.fields.setValue("Quantity",Request("OrderQty"));
}
Response.Redirect("ViewCart.asp");
</Script>


  七、 ViewCart.asp

  1、 添加記錄集,命名為cartRec,設定資料來源為Select * From Cart

  2、 添加Grid控制項,設定資料來源為cartRec,顯示三個欄位:ProductName、Quantity、Price。添加兩個Unbounded Column:

   1) 顯示總價格,Field/Expression為:=[Quantity]*[Price]。

   2) 編輯/刪除按鈕,Field/Expression為:="<A Href=AddtoCart.asp?ProductID="+[ProductID]+"編輯/A>/<AHref=DeleteItem.asp?ProductID="+[ProductID]+">刪除</A>"。這兩個超連結分別將ProductID傳遞給AddtoCart.asp和DeleteItem.asp。

  3、 添加指向SaveOrder.asp的連結

   <A href="SaveOrder.asp">確認訂單</A>

  八、 DeleteItem.asp刪除使用者選定的一條購物車記錄

   1、 添加記錄集cartRec,設定資料來源為Select * From Cart

   2、 添加代碼:

<Script Language=Javascript Runat=Server>
function cartRec_onbeforeopen()
{
newSQL="Select * from Cart Where (SessionID="+'Session.SessionID'+")

And (ProductID="+Request("ProductID")+")";
cartRec.setSQLText(newSQL);
}//過濾記錄集得到目前使用者選定要刪除的購物車記錄
function cartRec_ondatasetcomplete()
{
cartRec.deleteRecord();
Response.Redirect("ViewCart.asp");
}//刪除客戶選定的購物車記錄,然後轉向ViewCart.asp


  十、SaveOrder.asp儲存購物車中的臨時資料至Order表

  1、 添加記錄集cartRec,設定資料來源為Select * From Cart,在onbeforeopen()中過濾用Select * From Cart Wher SessionID=Session.SessionID過濾記錄集,得到目前使用者的所有未儲存購物車記錄

  2、 添加記錄集orderRec,設定資料來源為表Order

  3、 捕獲cartRec的ondatasetcomplete()事件,輸入代碼:

function cartRec_ondatasetcomplete()
{
 while(!cartRec.EOF)
 {
  fields=new Array("ProductID","SessionID","Quantity");
  values=new Array(cartRec.fields.getValue("ProductID"),
  carRec.fields.getValue("SessionID"),
  carRec.fields.getValue("Quantity"));
  orderRec.Addimediate(fields,values);//向Order表中添加新記錄
  cartRec.deleteRecord();//刪除購物車中的一條記錄
  cartRec.Movenext();//繼續處理下一條記錄
 }
 Response.Redirect("ViewCart.asp");
}



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.