PHP实现购物车的思路和源码分析

正文内容

这里主要是记录下自己的购物车的思路,具体功能实现,但是尚未在实际项目中用到,不对之处欢迎指正

项目中需要添加购物车。

目录说明
buy.php     点击购买之后的操作
car.php     购物车,显示购买的东西
conn.php    数据库连接参数
delete.php  删除商品
index.php   入口文件
shop.sql    数据库sql文件
test.png    商品图片

首先需要理解的是,购物车操作是SESSION的原理

一个物品加进去是一个数组,存ID NAME NUM

那么两个物品就是二维数组,所以用二维数组来操作就可以了。

1.创建数据库shop,导入shop.sql。这是我们的产品

2.修改conn中的链接数据库密码

3.仔细阅读源码

3.1 点击购买之后转到buy.php中

3.2.0 判断购物车的SESSION是否是数组,是则购物车有物品[产品ID是数组的KEY]

3.2.1 判断传递的ID在购物车的SESSION是否存在,不存在就添加进去,数量默认为1[产品ID是数组的KEY]

3.2.2 判断传递的ID在购物车的SESSION是否存在,存在就把数量+1[产品ID是数组的KEY]

3.2.3 判断购物车的SESSION是否是数组,不是则直接存入SESSION[产品ID是数组的KEY]

3.3 添加完成后转到car.php,循环展示出购买的东西

3.4 点击不想购买的商品,删除delete.php,删除对应SESSION下key对应的ID值即可

index.php


货物名称:
货物价格:
&pname=">购买

buy.php

$pid,"name"=>$name,"num"=>1);
     }
}
else
{
//还没有买过东西
$arr[$pid]=array("pid"=>$pid,"name"=>$name,"num"=>1);
}
$_SESSION["mycar"]=$arr;//购买完后,将此数组重新放入session中,便可以在各个页面看到此session
ob_clean();//清空缓存
header("location:car.php");//跳转到购物车界面(car.php)
//var_dump($_SESSION);
?>

car.php


将数组里的数据即客户所购买的物品展示出来
//物品的id
   //物品的名称
   //物品的数量
   //点击删除超链接到”delete.php”,将物品的id传过去
商品ID 商品名称 商品数量 删除
删除
返回继续购物

conn.php


delete.php

$proId)//遍历该二维数组中的键值,这里也就是商品的id
{
     if($key==$pid)//判断键值等于传过来的商品id
     {
          unset($arr[$key]);//清除该一维数组
     }
}
$_SESSION["mycar"]=$arr;//将清除之后的二维数组重新放到session里
ob_clean();//清除缓存
header("location:car.php");//跳转到购物车
?>

shop.sql

/*
Navicat MySQL Data Transfer
Source Server         : 127.0.0.1
Source Server Version : 50536
Source Host           : localhost:3306
Source Database       : shop
Target Server Type    : MYSQL
Target Server Version : 50536
File Encoding         : 65001
Date: 2016-04-25 09:35:18
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `produce`
-- ----------------------------
DROP TABLE IF EXISTS `produce`;
CREATE TABLE `produce` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `pimg` varchar(200) DEFAULT NULL,
  `price` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of produce
-- ----------------------------
INSERT INTO `produce` VALUES ('1', '测试', 'test.png', '1');
INSERT INTO `produce` VALUES ('2', '测试2', 'test.png', '2');
INSERT INTO `produce` VALUES ('3', '测试3', 'test.png', '1');
INSERT INTO `produce` VALUES ('4', '测试4', 'test.png', '2');
INSERT INTO `produce` VALUES ('5', '测试5', 'test.png', '9');

 

 

 

test.png,这个图自己随便找一个测试。

你可能感兴趣的:(PHP实现购物车的思路和源码分析)