1、关闭浏览器购物车中的数据还在,但是如果换了一台电脑或者浏览器或者清了COOKIE购物车中的数据就没有3. 数据库:如果用户不登录就没有用户ID,就不知道数据库中的商品是谁的不过可以使用session_id来标记这件商品。但会存在两个问题:a. 关闭浏览器之后SESSION_id就失效了。b. 虽然session_id过期了,但商品还在数据库中,这就是垃圾数据解决办法:我们可以使用session_set_save_handler自定义一个SESSION过期时的处理函数,在函数中可以把购物车中过期的SESSION删除掉。我们采用的方案:用户没有登录时就保存到COOKIE中,如果用户登录了就把购物车
2、中的数据转移到数据库中去。问题二、存什么样的数据结构?Cookie: 每件商品有以下三个字段,Goods_idGoods_numberGoods_attr存一个二维数组,以序列化之后的字符串存到COOKIE。Array( Array( 商品ID商品的属性 = 商品的数量,如:商品ID 1,属性:1,2,3 数量3: 1-1,2,3 = 3)数据库:实际操作:1. 在前台程序中添加一个购物车模型:并添加四个方法:加入购物车、删除一件商品、修改一件商品数量、取出购物车中的商品a. 加入购物车:思路:先判断用户有没有登录:登录:存到数据库未登录:存到COOKIE b. 修改购物车商品数量:c. 删除
3、购物车中一件商品d. 获取购物车中商品的详细信息先从购物车中获取商品的ID、商品的数量、商品的属性再循环每一件商品根据商品的ID查询数据库取出商品的详细信息取商品详细信息时要把商品的会员价格也计算出来还要根据商品属性ID计算出属性的字符串2. 在前台程序中添加购物车的控制器:并添加“加入购物车”的方法3. 现在控制器和模型都写好了只要点击加入购物车时提交一个表单即可,所以修改商品模板添加表单:找到模板中的form表单并设置提交的地址4. 修改购物车控制器添加购物车列表的方法:5. 复制flow1.html模板到项目中的目录中并改名:/Html/Application/Home/View/Car
4、t/lst.html6. 修改模板中模板中循环输出购物车中的商品信息:循环商品时在TR标签上放上商品的ID和商品的属性ID7. 当添加和修改商品数量时需要执行AJAX修改数量a. 在模板中添加一个JS函数AJAX更新商品数量:b. 在前台程序中添加Cart控制器并添加update方法:c. 修改cart模型添加updateGoodsNumber方法:d. 在添加、修改、减少商品数量时调用JS函数执行AJAX:修改/Html/Public/Front/js/cart1.js8. 商品购物 车数据的AJAX删除:a. 模板中添加删除的JS代码:b. 修改前台程序的购物车控制器添加del方法:c. 修改购物车模型添加del方法: