前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP+MYSQL购物车逻辑推理

PHP+MYSQL购物车逻辑推理

作者头像
贵哥的编程之路
发布2020-10-28 15:08:52
1K0
发布2020-10-28 15:08:52
举报
文章被收录于专栏:用户7873631的专栏
代码语言:javascript
复制
<?php
error_reporting('E_ALL&~E_NOTICE');

header('content-type:text/html;charset=utf-8');
session_start();
$act=$_GET['act'];
//然后是获取id的值
$id=(int)$_GET['id'];
//然后是连接数据库
$link=mysqli_connect('localhost','root','','test44');
//然后是字符集
mysqli_set_charset($link,'utf8');
//然后是添加购物车操作
//当购物车有物品并且点击购物车的时候就执行
switch($act)
{
	case 'addCart':
	//添加购物车的id,看看是哪一条物品(编号)
	$sql="select * from shop_goods where id='{$id}'";
	//然后是运行把
	$result=mysqli_query($link,$sql);//运行起来如果有数据并且数据是一条的话就执行下面的啊
	//然后是存在也就是有东西并且是一条的话就
	if($result&&mysqli_affected_rows($link)==1)//意思是找到了
	{
		//就取出来
		$row=mysqli_fetch_assoc($result);
		//然后是检测商品是否存在
		if(!isset($_SESSION['cart']))
		{
			$_SESSION['cart']=array();
		}
		//如果存在的话就+1
		if(array_key_exists($row['id'],$_SESSION['cart']))//判断键名是否存在与数组中啊,第二个是哪一个数组中啊
		{
			$_SESSION['cart'][$row['id']]['count']++;
		}else
		{
			$row['count']=1;
			$_SESSION['cart'][$row['id']]=$row;
		}
		exit("<script>alert('加入购物车成功');
				location.href='gw1.php';
			</script>");
	}
	break;
	case  'delGood':
	unset($_SESSION['cart'][$id]);
	exit("<script>alert('删除成功');
				location.href='gw3.php';
			</script>");
	break;
	case 'delCart':
	if(isset($_COOKIE[session_name()]))
	{
		setcookie(session_name(),session_id(),time()-1);
	}
	$_SESSION=array();
	session_destroy();
	exit("<script>alert('清空购物车成功');location.href='gw1.php';</script>");
	break;
}
?>

我这人有一个毛病,就是喜欢核心,别跟我提垃圾,我只讲核心:

代码语言:javascript
复制
case 'addCart':
	//添加购物车的id,看看是哪一条物品(编号)
	$sql="select * from shop_goods where id='{$id}'";
	//然后是运行把
	$result=mysqli_query($link,$sql);//运行起来如果有数据并且数据是一条的话就执行下面的啊
	//然后是存在也就是有东西并且是一条的话就
	if($result&&mysqli_affected_rows($link)==1)//意思是找到了
	{//这里的1别误会哈,这代表有哈
		//就取出来
		$row=mysqli_fetch_assoc($result);//数据变成关联数组显示,为什么,因为这数据的下标就送字母啊
		//然后是检测商品是否存在
		if(!isset($_SESSION['cart']))//看是否存在数据
		{
			$_SESSION['cart']=array();
		}
		//如果存在的话就+1
		if(array_key_exists($row['id'],$_SESSION['cart']))//判断键名是否存在与数组中啊,第二个是哪一个数组中啊
		{
			$_SESSION['cart'][$row['id']]['count']++;
		}else
		{
			$row['count']=1;
			$_SESSION['cart'][$row['id']]=$row;
		}
		exit("<script>alert('加入购物车成功');
				location.href='gw1.php';
			</script>");
	}
	break;
代码语言:javascript
复制
if(!isset($_SESSION['cart']))//看是否存在数据
		{
			$_SESSION['cart']=array();
		}
代码语言:javascript
复制
	意思是如果session服务器中cart里面没有数据的话,就数组为空,算是初始化把
代码语言:javascript
复制
if(array_key_exists($row['id'],$_SESSION['cart']))//判断键名是否存在与数组中啊,第二个是哪一个数组中啊
		{
			$_SESSION['cart'][$row['id']]['count']++;
		}else
		{
			$row['count']=1;
			$_SESSION['cart'][$row['id']]=$row;
		}
代码语言:javascript
复制
	这里面就有意思了呀,如果id为数字在服务器中cart没有的话。就else
	else就有意思了,那里面是没有的话,就数组里面count关联为1代表一件物品,为什么代表加入购物车后代表数量为1嘛是吧,然后是把$row里面的物品和编号赋值服务器中
代码语言:javascript
复制
exit("<script>alert('加入购物车成功');
				location.href='gw1.php';
			</script>");
代码语言:javascript
复制
		然后是加入购物车弹出框后返回到gw1,为什么,因为要想看购物车自己能点击看,现在还没有选完呢懂吗
		然后退出循环
代码语言:javascript
复制
case  'delGood':
	unset($_SESSION['cart'][$id]);
	exit("<script>alert('删除成功');
				location.href='gw3.php';
			</script>");
	break;
	case 'delCart':
	if(isset($_COOKIE[session_name()]))
	{
		setcookie(session_name(),session_id(),time()-1);
	}
	$_SESSION=array();
	session_destroy();
	exit("<script>alert('清空购物车成功');location.href='gw1.php';</script>");
	break;
代码语言:javascript
复制
这里点击删除后就删除所在的字段哈,然后弹出框删除成功,如果是全部删除的话,就
代码语言:javascript
复制
if(isset($_COOKIE[session_name()]))//这里的意思是看名称为session_name(),,值为session_id()id,-1代表销毁了呀,
	相当图=于session_destroy();
	{
		setcookie(session_name(),session_id(),time()-1);
	}
	$_SESSION=array();//初始化,这里代表销毁全部的购物商品了呀
	session_destroy();
	exit("<script>alert('清空购物车成功');location.href='gw1.php';</script>");
	break;
代码语言:javascript
复制
意思是删除初始化然后销毁,然后清空了呀
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档