cookie和数组的结合实现购物车

发现PHP很多函数得到的结果都是数组给出的,最常用的就是MySQL_fetch_array(),

包括取得的字符串信息生成数组,再由数组分解成字符串用的函数explode(); implode();

以前也没有写过购物车之类的实现,自觉属于愚笨的那种类型,断断续续写了一个星期,琢磨了(姑且允许作为一个新手自大一下)购物车的处理程序。

又因为一直没有入class的门,所以还是面向过程吧。

我用的方法本质是:把cookie存入array,对array进行增加、删除、修改操作,array中的每一组记录都是一个商品的信息(个数,价格等)

解决购物车的思路是用cookie记录一个二维数组。一维代表每一个商品,二维包含了商品的id,商品的数量...等可以自行增加,反正都是二维了,自己愿意带多少个商品属性就加上去。

对购物车里商品的操作一般有以下几个:添加商品,修改商品数量,删除商品,清空购物车。

这几个操作都是针对cookie的。每次把cookie中的数组取出来,增加、修改、删除一番,再记录到cookie中。至于清空购物车,那就更简单了,直接设置同名的cookie为空就可以了。

下面是我写的具体操作函数

//加入购物车

function addcart($goods_id,$goods_num){

$cur_cart_array = unserialize(stripslashes($_COOKIE['shop_cart_info']));
 if($cur_cart_array==""){

  $cart_info[0][] = $goods_id;
  $cart_info[0][] = $goods_num;

  setcookie("shop_cart_info",serialize($cart_info));

 }elseif($cur_cart_array<>""){

  //返回数组键名倒序取最大
  $ar_keys = array_keys($cur_cart_array);
  rsort($ar_keys);
  $max_array_keyid = $ar_keys[0]+1;

  //遍历当前的购物车数组
  //遍历每个商品信息数组的0值,如果键值为0且货号相同则购物车存在相同货品
  foreach($cur_cart_array as $goods_current_cart){
  foreach($goods_current_cart as $key=>$goods_current_id){
   if($key == 0 and $goods_current_id == $goods_id){
  echo "<script language=JavaScript>";
  echo "if(confirm('购物车已经有该商品,继续购物按----确定!查看购物车按----取消!'))";
  echo "{history.go(-1)}";
  echo "else{window.location.href='xqs_cart.php'}";
  echo "</script>";
   exit();
   }
  }
  }

  $cur_cart_array[$max_array_keyid][] = $goods_id;
  $cur_cart_array[$max_array_keyid][] = $goods_num;

  setcookie("shop_cart_info",serialize($cur_cart_array));

 }

 }

//从购物车删除
function delcart($goods_array_id){

$cur_goods_array = unserialize(stripslashes($_COOKIE['shop_cart_info']));

//删除该商品在数组中的位置
 unset($cur_goods_array[$goods_array_id]);
 setcookie("shop_cart_info",serialize($cur_goods_array));

}

//修改购物车货品数量
function update_cart($up_id,$up_num,$goods_ids){

 //先清空cookie,以便重新设置,传递过来三个数组参数 1数组的标识 2商品数量数组 3商品编号数组
 //如果不清空cookie则无法处理数量为零的商品
 setcookie("shop_cart_info","");
 foreach($up_id as $song){

  //先返回数组当前单元;再把指针向下移动一个位置
  $goods_nums = current($up_num);
  $goods_id = current($goods_ids);
  next($up_num);
  next($goods_ids);

  //当商品数量为空的时候,注销此处的数组值并用continue 2 语句避开下面的操作,继续做foreach循环
  while($goods_nums == 0){
  unset($song);
  continue 2;
  }

  $cur_goods_array[$song][0] = $goods_id;
  $cur_goods_array[$song][1] = $goods_nums;

 }

 setcookie("shop_cart_info",serialize($cur_goods_array));

}

后面形成订单的事情,那就需要根据自己的需要,是否有积分,是否有现金奖励之类的入库了。

时间: 2024-10-29 17:20:31

cookie和数组的结合实现购物车的相关文章

windows-怎么正确使用cookie存储数组

问题描述 怎么正确使用cookie存储数组 我有一个二位数组怎么才能储存在Cookie中呢,有该怎么取出来呢? 解决方案 setcookie(''arrayname'',array) 解决方案二: setcookie(''arrayname'',json_encode($data)) setcookie(''arrayname'',json_encode($data))

Cookie的使用及保存中文并用Cookie实现购物车功能_JSP编程

Cookie是服务器存放在客户端的一些数据,比如密码,以及你曾经访问过的一些数据. 设置Cookie 复制代码 代码如下: //设置cookie Cookie cookie = new Cookie("TOM","111"); //设置有效期,默认秒为单位 cookie. setMaxAge(7*24*60*60); //添加cookie到客户端 response.addCookie(cookie); 获取Cookie 复制代码 代码如下: <% //获取co

JavaScript:数组及循环的运用和甜饼Cookie的味道

cookie|javascript|数组|循环 数组,说得简单点,其实就是几个变量的组合,然后,我们可以通过循环来调用他们.请看下面的例子: <script language="JavaScript"><!-- Hidevar array= new Array(256,"5D多媒体",453,999);for(i=0;i<=3;i++){document.write("数组的第"+i+"个元素是"+ar

将二维数组放置在cookie中再拿出来打印后为什么显示是空的?不好意思,新人没悬赏。。。

问题描述 将二维数组放置在cookie中再拿出来打印后为什么显示是空的?不好意思,新人没悬赏... 有位前辈贴给我参考了,但是我发现cookie明明可以存二维数组啊(只是有点小错误,正如我的例子).还有自己应该是叫小白吧,自称新人好像被人误会了... 解决方案 你对http协议没有一个认识. 你在浏览器中输入一个网址,你的浏览器发送一次http请求给你的服务器,其中包含了cookie 你的服务器可以获得这些cookie 同时你可以设置新的cookie,并且在你的php执行完了以后,送到客户端,并

要做个网上商城 .net的 购物车是用SESSION好还是用COOKie好啊?

问题描述 rt 解决方案 解决方案二:SESSION保存产品ID数量特殊属性.尽量不要保存整个对象.宁可消耗些内存,也不要相信客户!解决方案三:session解决方案四:都用,肯定会有禁用cookie的不管用啥如何持久化是关键,人家再来了还得把购物车取出来解决方案五:引用3楼truecoffeefox的回复: 都用,肯定会有禁用cookie的不管用啥如何持久化是关键,人家再来了还得把购物车取出来 禁用cookie之后,session还能正常工作吗?解决方案六:不用session也不用cookie

js+cookies实现悬浮购物车的方法

  本文实例讲述了js+cookies实现悬浮购物车的方法.分享给大家供大家参考.具体分析如下: 在 "商品列表展示页"做上 "悬浮的"与"DataList"结合的 "无刷新购物车",只需计算出总价,不必去单独页面结算.找了些资料修改了一下,整理示例如下: gwc.js文件如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

利用Angularjs和bootstrap实现购物车功能_AngularJS

先来看看效果图: 购物车 一.代码 如果看了这个效果有兴趣想知道怎么做出来的话,那就继续往下看吧.话不多少,直接上代码. html代码: <!DOCTYPE html> <html lang="en" ng-app="cart"> <head> <meta charset="UTF-8"> <title>购物车</title> <link rel="style

js+cookies实现悬浮购物车的方法_javascript技巧

本文实例讲述了js+cookies实现悬浮购物车的方法.分享给大家供大家参考.具体分析如下: 在 "商品列表展示页"做上 "悬浮的"与"DataList"结合的 "无刷新购物车",只需计算出总价,不必去单独页面结算.找了些资料修改了一下,整理示例如下: gwc.js文件如下: // JavaScript Document //计算单个小计 function EveryCount() { var index=window.eve

php利用cookies实现购物车的方法_php技巧

本文实例讲述了php利用cookies实现购物车的方法.分享给大家供大家参考.具体分析如下: php购物车是在电子商务网站会用到的,一种像超市购物车一样的,选好商品了,先放到自己的购物车里面等好了再到柜台结算,本款php购物车完全按照这个原理来实例的,感兴趣的朋友可以来看看,该实例利用了cookie来实现,代码如下: 复制代码 代码如下: <?php /**  * 购物车类 cookies 保存,保存周期为1天 注意:浏览器必须支持cookie才能够使用  */ class cartapi {