PHP实现购物车的思路和源码分析(php购物车及订单思路)

网友投稿 278 2022-06-18


正文内容

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

项目中需要添加购物车。

目录说明 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

      " width="123" height="121" border="0"/>    货物名称:          货物价格:          &pname=">购买  

buy.php

{ //如果是数组,说明以前买过东西 //如果买过东西又分两种情况:      if(array_key_exists($pid,$arr))

     {

     //1、array_key_exists($pid,$arr)判断$arr中是否存在键值为$pid的一个一维数组,如果存在的话,就说明此商品以前购买过,只需要把数量加1           $uu=$arr[$pid]; //从二维数组里拿出对应的一维数组,该一维数组包括id name num 三个值           $uu["num"]=$uu["num"]+1;  //改变数量,将数量加1           $arr[$pid]=$uu; //改完后再将此一维数组放回二维数组中      }

     else      {   //2.此商品第一次购买,就将得到的id和name值组成一个一维数组           $arr[$pid]=array("pid"=>$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    商品名称    商品数量    删除               //物品的id

   //物品的名称

   //物品的数量

   ">删除//点击删除超链接到”delete.php”,将物品的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');


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:网站升级HTTPS操作步骤
下一篇:深入探索Nginx工作原理(深入理解Nginx)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~