欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

添加商品到购物车add_to_cart.php

程序员文章站 2022-10-08 18:55:58
php商城系统中的加入购物车(无规格_SESSION版),转发自https://www.cnblogs.com/xuan584521/p/6522385.html ......
<?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”获得