程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP技巧 >> 在ASP中實現購物小車

在ASP中實現購物小車

編輯:ASP技巧

為了講解方便,突出重點,本文用數組實現要顯示的商品信息。但在實際的系統開發中,這些商品信息的數據應該來自後台數據庫。

  在程序中,我們定義了一個sp數組並對其賦值,然後用一個循環實現其數據顯示及對下一個程序的數據傳遞。程序部分代碼如下:

  <% i=1

  do while (i<=5) %>

  <tr > <td><%=sp(i)%></td>

  <td><a href=“cart.ASP?spid=<%=sp(i)%>”>訂購</a></td> </tr>

  <% i=i+1

  loop %>

  構建購物小車

  為處理用戶訂購商品的操作,我們自定義了兩個Session的屬性,分別是“spid”(用來保存商品名稱)和“num”(用來保存相應商品的訂購數量)。當用戶訂購了一種商品後,我們分三種情況對Session進行處理:

  ●購物小車為空,即Session(“spid")=“",直接將spid與num加入Session;

  ●購物小車非空且當前訂購的商品是購物小車中沒有的,則處理方法同上;

  ●購物小車非空但當前訂購的商品是購物小車中已有的,Session保持不變。

  程序實現的要點是如何判別當前訂購的商品在購物小車中是否存在,因此,首先要將Session變量的內容拆分並存入數組:

  array1=split(Session(“spid”),“:”)

  然後用循環語句判別array1中是否有元素與傳遞來的spid相同並將結果存入變量ifbuy:

  for i=0 to ubound(array1)-1

  if array1(i)= Request.QueryString(“spid”) then

  ifbuy=true

  exit for

  end if

  next

  將新增的商品信息加入Session:

  Session(“spid”)=Session(“spid”)& Request.

  QueryString(“spid”)&“:”

  Session對象的另一個自定義屬性num的處理同spid相同。

  購物小車的顯示

  顯示用戶已經購買的商品信息,即是顯示Session變量的內容。只要將Session變量的內容拆分,存入數組中,再顯示數組的內容即可。購物小車的顯示界面如圖1所示,其中“數量”欄的類型為“text",“取消本商品”欄的類型為“checkbox”。這兩欄的數據是可以變動的,在“取消本商品”欄中打“√”,再按“重新計算”,將在購物小車中取消該商品。

   

  圖1

  “重新計算”和“繼續購買”兩個命令按鈕用Javascript實現:

  <scriptlanguage=“Javascript">

  <!--

  functiononback(theForm)

  {window.history.back()}

  functionrecal(theForm)

  {theform.action=“modifycart.ASP"}

  -->

  </script>

  實現顯示購物小車的代碼如下:

  <%

  dimk

  array1=split(Session(“spid”),“:”)

  array2=split(Session(“num”),“:”)

  k=0

  dowhilek<ubound(array1)%>

  <tr>

  <td><palign=“center”><%=array1(k)%>

  </p></td>

  <td><p><inputtype=“text”name=“t1”size=“10”value=“<%=array2(k)%>”></p></td>

  <td><p><inputtype=“checkbox”name=

  “ifcancel”value=<%=k%>></p></td></tr>

  <%k=k+1

  loop%>

  <tr>

  <tdalign=centerheight=“42”colspan=“2”>

  <inputtype=“submit”name=“submit”value=“重新計算”

  onclick=“returnrecal(this.form)”></td>

  <tdalign=centerheight=“42”colspan=“3”>

  <inputtype=“submit”name=“Submit”value=“繼續購買”

  onclick=“returnonback(this.form)”></td>

  </tr>

  購物小車的修改

  在用戶點擊“重新計算”按鈕後,需要對購物小車的內容進行修改,包括對數量的修改和將被取消的商品從Session中刪除。

  對於數量的修改,只要將文本框中被變動過的數據重新存入Session中即可:

  <%

  ’首先將保存在Session變量中的訂購數量提取出來

  array=split(Session(“num”),“:”)

  ’將文本框t1中商品的數量提取出來,存入array數組中

  ifRequest.Form(“t1”)<>“”then

  Session(“num”)=“”

  j=0

  foreachiteminRequest.Form(“t1”)

  array(j)=item

  j=j+1

  next

  ’將提交後的商品數量放入Session變量中

  fori=0toubound(array)-1

  Session(“num”)=Session(“num”)&array(i)&“:”

  next

  endif%>

  要從Session中刪除被選中的商品,首先要取得“checkbox”的返回值,它用來定位被取消的商品在Session變量中的位置。“checkbox”的返回值k是一個循環變量,是商品所在行的行數,其實也就是被選中商品在Session中的位置。如果不加返回值定義的話,“checkbox”的返回值是按自然數順序排列的。例如,在圖1所示的情況下,如果“電視機”和“書籍”兩行被選中,若是“checkbox”不加返回值定義,它的返回值將分別為1和2,這樣就會導致把“電視機”和“鋼筆”從Session中刪除的錯誤。

  <%dimarray1,array2,ifcancel(20),m1,m2,i,j

  array1=split(Session(“spid”),“:”)

  array2=split(Session(“num”),“:”)

  m1=ubound(array1)-1

  m2=ubound(array2)-1

  ’保存復選框checkbox的值

  fori=1toRequest.Form(“ifcancel”).Count

  ifcancel(i)=Request.Form(“ifcancel”)(i)

  next

  fori=1toRequest.Form(“ifcancel”).Count

  ’將checkbox選中的spid和num從Session中去掉

  forj=ifcancel(j)tom1-1

  array1(j)=array1(j+1)

  array2(j)=array2(j+1)

  next

  ’將總數減1,並將後面的checkbox的值減1

  m1=m1-1

  forp=itoRequest.Form(“ifcancel”).Count

  ifcancel(p)=ifcancel(p)-1

  next

  ’將處理後的spid和num放回Session

  Session(“spid”)=“”

  Session(“num”)=“”

  forj=0tom1

  Session(“spid”)=Session(“spid”)&array1(j)&“:”

  Session(“num”)=Session(“num”)&array2(j)&“:”

  next

  next%>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved