<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      在電子商務中完成購物車的方法

      [摘要]手推車”功能的實現  “手推車”是在線購物網站(零售)中一項重要的功能。本文將要探討用ASP程序實現“手推車”功能的技巧。要想在網站上實現“手推車”功能,有好幾種方法,比如用Cookie、Session或者隱藏幀等。這幾種方法各有優缺點,這里著重討論用Cookie來實現“手推車”功能! ∮肅oo...

      手推車”功能的實現

        “手推車”是在線購物網站(零售)中一項重要的功能。本文將要探討用ASP程序實現“手推車”功能的技巧。要想在網站上實現“手推車”功能,有好幾種方法,比如用Cookie、Session或者隱藏幀等。這幾種方法各有優缺點,這里著重討論用Cookie來實現“手推車”功能。

        用Cookie實現 “手推車”功能的優缺點

        Cookie是通過服務器端CGI、腳本或者客戶端腳本把信息保存在客戶機上的,以便為服務器或客戶機再次使用這些信息提供方便。在JavaScript中有一些專門用來對Cookie進行操作的函數,如設置Cookie值的Setcookie(name,value),刪除Cookie的Deletecookie(name)等(詳細見源碼)。使用Cookie來保存“手推車”信息的優點是,即使當用戶不小心關閉了瀏覽器窗口,“手推車”中的信息也不會丟失,并且它占用很少的服務器端資源,缺點是必須要求用戶端瀏覽器支持Cookie并且打開它。

        “手推車”包含的功能子項

        1.把商品添加到“手推車”,就是訂購。

        2.從“手推車”中刪掉已訂購的商品。

        3.修改“手推車”中某一商品的數量。

        4.清空“手推車”。

        5.顯示,統計“手推車”中的商品。

        往“手推車”中 添加商品

        非常簡單,就是把某一商品的信息(名稱、價格、數量、折扣等)寫入Cookie即可。這里不必把商品的所有信息都寫入Cookie,只要記下商品在數據庫中編號或ID(這里用catid表示)與商品的數量就行。在顯示“手推車”信息時,根據catid可以從商品數據庫中查詢出這種商品的所有具體信息。往“手推車”中添加商品的實現方法如下:

        function Addcat(catid,number){ //把商品添加到“手推車”函數

        if (number<=0)DeleteCookie(″mycat″+catid); //如果商品的數量少于或等于0,則刪除該商品

        else   SetCookie(″mycat″+catid,catid+″,″+number); //把商品ID與數量寫入Cookie

        var cat=window.open(″showcat.asp″,″cat″,″toolbar=no,menubar=no,location=no,status=no,width=420,height=280″); //打開一個新窗口來顯示統計的商品信息,即顯示“手推車”}

        從“手推車”中 刪掉商品

        也就是把Cookie中的該商品信息刪除掉,調用Deletecat(catid)即可。

        function Deletecat(catid){

        DeleteCookie(″mycat″+catid); //從Cookie中刪除

        var cat=window.open(″showcat.asp″,″cat″,″toolbar=no,menubar=no,location=no,status=no,width=420,height=280″); //在CAT窗口顯示統計的商品信息,即刷新顯示“手推車”   }

        修改“手推車”中 商品的數量

        原理跟往“手推車”中添加商品是一樣的,只不過把商品的數量修改成現在所要的數量。

        顯示與統計 “手推車”中的商品信息

        顯示的效果由Showcat.asp實現。這里使用了ASP中Request.Cookies集合。Request.Cookies用來檢索客戶中Cookie值。我們通過遍歷 Cookies 集合中的所有 Cookie 值取出我們的“手推車”的信息,然后從中分離出商品ID與商品數量。這里使用了VBscript中的SPLIT函數,SPLIT函數返回基于 0 的一維數組,其中包含指定數目的子字符串。

        取出商品ID與商品數量后再根據商品ID從商品數據庫中查詢出該商品的具體信息,最后輸出商品的名稱、單價、折扣、數量和小計等,并累計商品總件數與商品總金額。  

      源代碼如下:

      Showcat.asp

      <html><head><title>Cat</title></head>

      <body>

      <form name=cat>

      <table border="1" width="360" cellspacing="0" cellpadding="3" bordercolorlight="#FFFFFF" bordercolor="#008000">

      <tr>

      <td width="100%" colspan="5" align="center"><b>您的手推車信息</b></td>

      </tr>

      <tr>

      <td width="45">名稱</td>

      <td width="45">單價</td>

      <td width="45">折扣</td>

      <td width="45">數量</td>

      <td width="45">小計</td>

      <td width="135"> </td>

      </tr>


      [page_break]

      <% dim conn,rs,sqlstr,cook,catid,number,sum,allnum,i

      i=0

      set conn=server.createobject("ADODB.CONNECTION") '建立數據庫ADO連接實例

      conn.open "DSN","USERID","PWD" '打開數據庫連接

      set rs=Server.CreateObject("ADODB.Recordset") '建立數據庫ADO記錄集連接實例

      for each cook in request.cookies '遍歷 Cookies 集合

      if instr(cook,"mycat") then '判斷是否“手推車”信息

      catid=split(request.cookies(cook),",")[0] '分離出商品ID

      number=split(request.cookies(cook),",")[1] '分離出商品數量

      sqlstr="select * from cat where id="&catid&"" 'SQL查詢語句

      rs.open conn,sql,1,3 '執行查詢,產生記錄集

      xiaoji=rs("單價")*rs("折扣")*number '計算小計

      response.write "<tr><td width=45 ><font size=2 color=#800080>"&rs("名稱")&"</font></td>"

      response.write "<td width=45 ><font size=2 color=#800080>"&rs("單價")&"</font></td>"

      response.write "<td width=45 ><font size=2 color=#800080>"&rs("折扣")&"</font></td>"

      response.write "<td width=45 ><input type=text name=number"&i&" value="&number&" size=4></td>"

      response.write "<td width=45 ><font size=2 color=#800080>"&xiaoji&"</font></td>"

      response.write "<td width=135><input type=button value=更新 onclick=Addcat("&rs("ID")&",document.cat.number"&i&".value)> <input type=button value=刪除 onclick=Deletecat("&rs("ID")&")></td></tr>

      allnum=allnum+number '累計商品總件數

      sum=sum+xiaoji '累計總金額

      rs.close

      i=i+1

      end if

      next

      set rs=nothing

      set conn=nothing

      %>

      <tr>

      <td width="45">合計</td>

      <td width="45"> </td>

      <td width="45"> </td>

      <td width="45"><%=allnum%></td>

      <td width="45"><%=sum%></td>

      <td width="135"><%=sum%></td>

      </tr>

      <tr>

      <td width="360" colspan="6"> <font size="2"><a href="checkout.asp"><font color="#FF0000">結帳</font></a>

      <a href=javascript:window.close()><font color="#008000">繼續購物</font></a></font> <a href=javascript:Clearcookie()><font size="2" color="#0000FF">清空“手推車”</font></a></td>

      </tr>

      </table>

      </form>

      </body>

      </html>

      javascript中操作COOKIE的函數源碼如下:

      function Setcookie (name, value) { //設置名稱為name,值為value的Cookie

      var argc = SetCookie.arguments.length;

      var argv = SetCookie.arguments;

      var path = (argc > 3) ? argv[3] : null;

      var domain = (argc > 4) ? argv[4] : null;

      var secure = (argc > 5) ? argv[5] : false;

      document.cookie = name + "=" + value +

      ((path == null) ? "" : ("; path=" + path)) +

      ((domain == null) ? "" : ("; domain=" + domain)) +

      ((secure == true) ? "; secure" : "");

      }

      function Deletecookie (name) { //刪除名稱為name的Cookie

      var exp = new Date();

      exp.setTime (exp.getTime() - 1);

      var cval = GetCookie (name);

      document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();

      }

      function Clearcookie() //清除COOKIE

      {

      var temp=document.cookie.split(";");

      var loop3;

      var ts;

      for (loop3=0;loop3<temp.length;loop3++)

      {

      ts=temp[loop3].split("=")[0];

      if (ts.indexOf('mycat')!=-1)

      DeleteCookie(ts); //如果ts含“mycat”則執行清除

      }

      }

      function getCookieVal (offset) { //取得項名稱為offset的cookie值

      var endstr = document.cookie.indexOf (";", offset);

      if (endstr == -1)

      endstr = document.cookie.length;

      return unescape(document.cookie.substring(offset, endstr));

      }

      function GetCookie (name) { //取得名稱為name的cookie值

      var arg = name + "=";

      var alen = arg.length;

      var clen = document.cookie.length;

      var i = 0;

      while (i < clen) {

      var j = i + alen;

      if (document.cookie.substring(i, j) == arg)

      return getCookieVal (j);

      i = document.cookie.indexOf(" ", i) + 1;

      if (i == 0) break;

      }

      return null;

      }





      日韩精品一区二区三区高清