• 添加商品到购物车add_to_cart.php(学生笔记)


    <?php
    		session_start();//启动session
    		
    		$goods_id = $_POST['goods_id'];//获取商品id
    		
    		$number = $_POST['num'];//获取商品数量
    
    		if(empty($_SESSION["gwc"]))
    		{
    
    		    //1.购物车是空的,第一次点击添加购物车
    
    		    $arr[$goods_id] =array(
    		    				'goods_id'  =>	$goods_id,
    		    				
    		    				'num'  =>	$number
    		    				
    		    				);
    
    		    $_SESSION["gwc"]=$arr;
    
    		}
    		else//_1 购物车不是空的
    		{
    
    		    
    
    		    //判断购物车中是否存在该商品
    
    		    $arr = $_SESSION["gwc"]; //先存一下
    
    		    $chuxian = false;
    
    		    //2.查询购物车中是否有该商品,K是商品id,做个标记
    		    foreach($arr as $k=> $v)
    		    {
    		    	
    		        if($k==$goods_id)
    		        {
    
    		            $chuxian = true;
    
    		        }
    
    		    }
    
    		 
    		// 3.购物车中已有该商品,则只需将它的数量增加
    		    if($chuxian)
    		    {
    
    		    	$arr[$goods_id]['num']+=$number;
    		        
    		        $_SESSION["gwc"] = $arr;
    		    }
    		    else
    		    {
    
    		        //_3.如果购物车中没有该商品
    		        $arr[$goods_id] = array(
    		    				'goods_id'  =>	$goods_id,		    				
    		    				'num'  =>	$number		    				
    		    				);		         
    		        $_SESSION["gwc"] = $arr;		        
    		        // print_r($arr);
    		        //  die();
    		    }
    
    		}
    
    		echo "OK";
    		// echo '<script language="JavaScript">;
      //         alert("加购成功!");location.href="#";</script>;';
              
      //         exit;
    
     // var_dump($_SESSION);
    
     //    die();
    		
    		
    	?>
    

      一.首先要明白添加一件商品到购物车的状态有3种情况。

    1.还没有购物车。

    2.有购物车了,但加入购物车的商品是购物车没有的。

    3.有购车了,加入购物车的商品在购物车也已经有了,那就值增加它在购物车的数量。

    二.加入购物车页面需要传2个参数到php,商品id和加购的商品数量。在php前面几行就是接受那2个参数。

    三.要开通session。第一行的seesion_start();否则存进session的信息是不起作用的。虽然在后面能var_dump()出来。但在购物车展示商品页面var_dump的session还是之前的。

    四.这么多项的商品如何存进session?其实就是对session数组的增删改查操作。

    session就是一个数组。只是它能跨页面访问。存进session,最终目的还是为了在别的页面能再次用到它。比如上面的代码把商品信息存到$_SESSION['gwc']中,就是为了在购物车页面能够再次获取$_SESSION['gwc'],利用foreach循环把你存到$_SESSION['gwc']的商品遍历出来。

    五.至于

     $arr[$goods_id] =array(
    		    	'goods_id'  =>	$goods_id,		    				
    		    	'num'  =>	$number
    		    				);
    这句代码为什么里面只存或要存这2个参数,这也是根据购物车页面展示时的要求来的,数量不难理解,你加购了几件就展示几件。id又到底是为什么要存进去,购物车展示的业务逻辑就是,根据商品id,然后从数据库中该
    id 的所有商品信息。即执行“select* form goods where id = 商品id”获得
  • 相关阅读:
    扩展GridView控件增加选择列
    Flash图片轮换/切换左右推拉效果
    Flash图片轮换/切换普通效果1
    WebForm_PostBackOptions未定义 解决方法
    SQL Server 2008无法还原日志备份或差异备份的问题解决(转)
    一个简单的C#多线程间同步的例子.[转]
    SQL2008报错:无法还原日志备份或差异备份,因为没有文件可用于前滚(转)
    C# 字符、字符串过滤,只能输入数字、中文、英文、大写、小写(转)
    C# Monitor类锁定对象
    使用SqlServer中的float类型时发现的问题(转)
  • 原文地址:https://www.cnblogs.com/mzzone/p/11026965.html
Copyright © 2020-2023  润新知