购物车
购物车是什么?
购物车相当于现实中超市的购物车,不同的是一个是实体车,一个是虚拟车而已。用户可以在购物网站的不同页面之间跳转,以选购自己喜爱的商品,点击购买时,该商品就自动保存到你的购物车中,重复选购后,最后将选中的所有商品放在购物车中统一到付款台结账,这也是尽量让客户体验到现实生活中购物的感觉。服务器通过追踪每个用户的行动,以保证在结账时每件商品都物有其主。
购物车原理图:
注意事项:
(1)购物车相关的表只有goods_car表,表内字段有购物车id(id),用户id(user_id),内容(content),添加时间(creat_time),存储content字段数据时都会经过decode处理,处理为类似json串的格式;
(2)涉及到的控制器simple.php models层为cart.php view层为simple。
(3)每个用户只会在购物车表中有一条数据。删除、添加、修改数据,只会在这条数据基础上进行相应操作,而且用户只要添加过商品后,即使后来删除购物车中所有商品,这条数据还会存在,只不过对应的值变为空,但是如果直接清空购物车后就会直接把数据删除。
(4)购物车表content字段中不同种类的商品默认不能存超过100种,超过后提示购物车加入购物车失败。
(5)未登录状态下加入购物车默认是存经过加密的cookie,失效时间大概为20年,存的是商品id和数量,可以通过后台将存储方式改为session。
未登录状态加入购物车功能:
用户未登录时,加入购物车时将之前存到cookie中的数据(不管有没有)取出来,最后加上要添加的新商品的数据一起加入到cookie中,内容为商品id和数量。
登陆状态加入购物车:
(1)之前在未登录情况下添加过购物车也就是存过cookie
①购物车表goods_car中已经有数据会将存在cookie中的值取出来,和数据库中的数据整合到一起,将数据库修改,然后删除此cookie,最后加上要添加的新商品的数据再次修改数据库。
②购物车表goods_car中没有数据
直接将cookie中的值取出来,添加到数据库中,然后删除此cookie,最后加上要添加的新商品的数据再次修改数据库。
(2)没有在未登录情况下添加过购物车
①购物车表goods_car中已经有数据。将数据库中的数据取出来,将数据库修改(这个步骤其实是无用功),最后加上要添加的新商品的数据再次修改数据库。
②购物车表goods_car中没有数据,进行相关操作。
(3)查看购物车(getMyCart、getMyCartStruct)
①未登录用户查看购物车时,将商品信息从cookie中取出商品信息,展示在购物车页面(cart.html)。
②登录用户查看购物车,从数据库中读取数据并展示在购物车页面。
(4)清空购物车
①未登录用户,清空购物车会将20年过期时间的cookie删掉。
②登录用户通过登录人的id,将该用户的购物车数据从表中删掉。