zoukankan      html  css  js  c++  java
  • 完成了 迷你购物车 和 购物车 功能

    原本界面准备一直是模仿联想商城的,后来感觉联想商城的布局不够大气。
    后来思量再三,准备用整体的蓝色来模仿京东商城,现在看来感觉还不错。
     
    先来看看京东商城的:
    minicart
    最终效果图,感觉我的比它好吧!^_^,各个栏目标明的都比较清楚:
    2009-04-04_120909
    思路:
    分析了下京东商城迷你购物车,主要功能如下:
    1. 【最新加入的商品】有图片显示;
    2. 【您购物车中的其它物品】商品按时间顺序先后排序,且不包含最新加入的商品;
    3. 再点击购买其它商品后,【最新加入的商品】显示刚加入的商品,而原先的移动到【其它物品中】
    4. 当删除购物车中的最新加入的商品后,【最新加入的商品】无商品再显示
    实现方法:
    1. 【最新加入的商品】,由cookie中取出商品ID,然后显示。所以在点击购买商品时就要将该商品的ID写入cookie中。
    2. 由于【其它商品】不显示最新加入的商品,所以只取数据库中对应CartId的前N-1条,即最新加入的不取出
    SQL语句:(ASP。NET代码略)
    1.================================2009-04-04 11:25:32
     
    -------------------------------------------------------------------------------  
      --   项目名称:NSMS(网络购物管理系统)  
      --   过程名称:proc_CartSelect  
      --   功能描述:取出购物车中的商品,(为了实现我要的功能,这里有两种情况
     --1.不选取最后一条记录,即最新加入的,为迷你购物车提供数据
     --2.全选,为完整的购物车提供数据
      --   创建时间:2009-03-31 20:53:54
      --   修改时间:2009-04-02 21:53:30(当购物车中只有一条记录时,mini购物车也会一条有记录?)
      --   作者姓名:chenyihao 
      -------------------------------------------------------------------------------  
    ALTER PROCEDURE proc_CartSelect
     @CartId char(36),
     @Flag varchar( 8)
    AS
     IF @Flag = 'MiniCart'
     BEGIN
      declare @count int
      select  @count=count(*)-1 from Cart where CartId = @CartId
      if @count = 0 goto goon
      if @count>0 SET rowcount @count --好方法
     END
     --取出购物车ID,商品ID名称价格,购买数量,以及小计
     SELECT c.CartId,c.PrId,p.PrName,p.SalePrice,c.Quantity,p.SalePrice * c.Quantity  AS Subtotal
     from  Cart as c INNER JOIN Product as p
     ON c.PrId = p.PrId 
     where c.CartId = @CartId
     Order By AddTime
     
     goon: return
    GO
    ------------------------
    2.通过下面这条SQL,可以弥补京东商城迷你购物车的缺陷,当cookie中无值时,还能显示最近一次购买的商品
     -------------------------------------------------------------------------------  
      --   项目名称:NSMS(网络购物管理系统)  
      --   过程名称: proc_CartLastestItem 
      --   功能描述:最新加入购物的商品,带图片
      --   创建时间:2009-04-03 15:58:24
     --添加了,当cookie中无商品Id时,从数据库中读取最后一条商品(即最新加入商品)
      --   作者姓名:chenyihao 
      -------------------------------------------------------------------------------  
       
    ALTER PROCEDURE  proc_CartLastestItem
     -- Add the parameters for the stored procedure here
     @CartId char(36),
     @PrId varchar(50)= null
    AS
     -- SET NOCOUNT ON added to prevent extra result sets from
     -- interfering with SELECT statements.
     SET NOCOUNT ON;
     
     if @PrId is null
     BEGIN
      declare @time datetime
      select @time = max(AddTime) from Cart where  CartId = @CartId
          -- Insert statements for procedure here
     
      select p.PrId,p.PrName,p.PrPic,p.SalePrice,c.Quantity
      from Product as p INNER JOIN Cart as c
      on p.PrId = c.PrId
      where c.AddTime = @time AND c.CartId = @CartId
     END
     
     else
     BEGIN
      select p.PrId,p.PrName,p.PrPic,p.SalePrice,c.Quantity
      from Product as p INNER JOIN Cart as c
      on p.PrId = c.PrId
      where c.PrId = @PrId AND c.CartId = @CartId
     END
    GO
    exec proc_CartLastestItem 'bc7ca3b2-5e42-4ef4-9a71-de273fc93afb','10'
    ----------------------------------------------
    遇到的问题:
    1. 购物车中仅只有一条记录时,迷你购物车也会有记录一条出来。然后我测试过当购物车中的记录大于1条时,是完全没问题的。难道是当@count=0时,SET rowcount @count没起作用了?
      那在SET rowcount @count前加跳判断语句,if @count = 0 return ,不行这样以来总金额和总数量就没了 break也不能用只能在while中。
      查了下,用goto不错。ok!
    2. 2.最新加入的商品数量明明只有1件,竟然显示9件!。后来找了找,发现了原因:在SQL中少加了一个判断条件,@CartId;以至于现在取出了对应ID存在于数据库中的第一条记录。如下图所示,它取出了PrId =13 第一次出现的那条记录,而它的数量正是9200904041240388v-scaj45dudgyhh

    =====================================

    又花了一下午,将一些BUG修补了下

    1.在删除购物车中的最后一条记录时,将cookie中的对应值清除,不然的话,迷你购物车中【最新加入的商品】栏还是显示删除以前的商品

    2.新增了,当cookie中无值时,【最新加入的商品】栏显示最近购买的商品(从数据库中读取),对应上面第2条SQL语句。

    3.购物车无商品时,隐藏迷你购物车

    转自http://gaga.yo2.cn/articles/to-achieve-the-mini-cars-and-functions-to-cart.html

  • 相关阅读:
    Java网络编程详解
    android 取mac若干问题
    android问题 This version of android studio is incompatible with the gradle version used.
    c#将DataTable内容导出为CSV文件
    C#下利用正则表达式实现字符串搜索功能的方法(转)
    C#正则表达式入门
    java 文件类 null与exists()是不一样的
    c#线程中下载文件到本地
    Git 常用命令
    Web 监听器
  • 原文地址:https://www.cnblogs.com/luckyboy/p/2238994.html
Copyright © 2011-2022 走看看