php做的购物车,php实现购物车功能

本文目录一览:

php购物车怎么实现

可以使用 session 或者 redis 来保存购物车信息。

具体代码这里不可能贴出来的。建议你下载一个开源的商城系统,看看别人是怎么写的。

PHP怎么做购物车?

购物车有两种实现方式,一种是保存在数据库,另外一种是session

保存在数据库的不会以为关闭浏览器而消失,session会因为关闭浏览器就没有了。

原理是把每个商品的信息存到一个数组里面,然后以这个商品的id作为键值,然后吧数组存到session里面就行,

如果是存入数据库的话,就用关联数据存一下就行的

php怎么用session做购物车

class cart

{

/**

* 函数名称: addItem

* 函数功能: 添加商品

* 输入参数: $data ————- 商品数组

* 函数返回值: none

* 其它说明: 因为数据是记录在session中,所以不用返回

*/

function addItem($data){

global $config_kezhi;

if(is_array($data)!empty($data)){

foreach($data as $key=$val){

// 如果商品存在就加数量和价格

if($this-_isExists($key)){

$_SESSION[‘cart’][$key][“paddy_count”] += $val[‘paddy_count’];

$_SESSION[‘cart’][$key][“market_count”] += $val[‘market_count’];

$_SESSION[‘cart’][$key][“goodsnum”] += intval($val[‘goodsnum’]);

$arr = $this-getItems($key);

// $_SESSION[‘cart’][$key][“count”] += $_SESSION[‘cart’][$key][“price”];

/* if(strlen($_SESSION[‘cart’][$key][“kezhi”])0){//没有刻字,加入刻字

$_SESSION[‘cart’][$key][“eng_price”]=0;

$_SESSION[‘cart’][$key][“eng_price”]=(int)$config_kezhi*intval($arr[‘num’]);

}else{

//die(“dd”);

$_SESSION[‘cart’][$key][“eng_price”]=0;

}*/

//echo $arr[‘num’];

//die();

}

// 否则直接加入

else

{

$_SESSION[‘cart’][$key] = $data[$key];

// $_SESSION[‘cart’][$key][“name”] = $val[‘name’];

// $_SESSION[‘cart’][$key][“price”] = $val[‘price’];

// $_SESSION[‘cart’][$key][“count”] = round($val[‘price’]*intval($val[‘num’]),2);

// $_SESSION[‘cart’][$key][“num”] = intval($val[‘num’]);

}

}

}

}

/**

* 函数名称: _isExists

* 函数功能: 判断此商品是否存在

* 输入参数: $id ———- 商品ID

* 函数返回值: bool

* 其他说明: 2004-8-19

*/

function _isExists($id)

{

if(isset($_SESSION[‘cart’][$id])!empty($_SESSION[‘cart’][$id])array_key_exists($id,$_SESSION[‘cart’]))

{

Return true;

}

else

{

Return false;

}

}

/**

* 函数名称: modItem

* 函数功能: 修改商品数量

* 输入参数: $id ————– 商品ID

* $num ————- 商品数量

* 函数返回值: 返回值说明

* 其他说明: 说明

*/

function modItem($id,$num)

{

$arr = $this-getItems($id);

// 如果商品存在就加数量和价格

if($this-_isExists($id))

{

$_SESSION[‘cart’][$id][“goodsnum”] = intval($num);

if($arr[‘paddy_price_special’] “0”){

$_SESSION[‘cart’][$id][“paddy_count”] = round($arr[‘paddy_price_special’]*intval($num),2);

}elseif($arr[‘paddy_userprice’] “0”){

$_SESSION[‘cart’][$id][“paddy_count”] = round($arr[‘paddy_userprice’]*intval($num),2);

}elseif($arr[‘paddy_spreadprice’] “0”){

$_SESSION[‘cart’][$id][“paddy_count”] = round($arr[‘paddy_spreadprice’]*intval($num),2);

}else{

$_SESSION[‘cart’][$id][“paddy_count”] = round($arr[‘paddy_price’]*intval($num),2);

}

$_SESSION[‘cart’][$id][“market_count”] = round($arr[‘market_price’]*intval($num),2);

}

}

/**

* 函数名称: modItem_wanwei

* 函数功能: 修改商品腕围

* 输入参数: $id ————– 商品ID

* $num ————- 商品腕围

* 函数返回值: 返回值说明

* 其他说明: 说明

*/

function modItem_wanwei($id,$wanwei)

{

$arr = $this-getItems($id);

// 如果商品存在就加数量和价格

if($this-_isExists($id))

{

$_SESSION[‘cart’][$id][“wanwei”] = intval($wanwei);

///$_SESSION[‘cart’][$id][“count”] = round($arr[‘price’]*intval($num),2);

}

}

// function modItem_kezhi($id,$kezhi)

// {

// global $config_kezhi;

// $arr = $this-getItems($id);

// // 如果商品存在就加数量和价格

// if($this-_isExists($id))

// {

// $_SESSION[‘cart’][$id][“kezhi”] = $kezhi;

// $_SESSION[‘cart’][$id][‘price’] = $arr[‘price’] + $config_kezhi;

// $_SESSION[‘cart’][$id][‘count’] = round($_SESSION[‘cart’][$id][‘price’]*intval($arr[‘num’]),2);

// }

// }

function modItem_kezhi($id,$kezhi,$kezhi1=””,$kezhi2=””)

{

global $config_kezhi;

$arr = $this-getItems($id);

// 如果商品存在就加数量和价格

//var_dump($_SESSION[‘cart’]);

// die();

if($this-_isExists($id))

{

if(strlen($_SESSION[‘cart’][$id][“kezhi”]) == 0 strlen($kezhi) != 0){//没有刻字,加入刻字

//$arr[‘price’] += $config_kezhi;

$_SESSION[‘cart’][$id][“eng_price”]=0;

$_SESSION[‘cart’][$id][“eng_price”]=(int)$config_kezhi*intval($arr[‘num’]);

//$_SESSION[‘cart’][$id][“price”] = $arr[‘price’];

// $_SESSION[‘cart’][$id][“count”] = round($arr[‘price’]*intval($arr[‘num’]),2);

$_SESSION[‘cart’][$id][“kezhi”] = $kezhi;

$_SESSION[‘cart’][$id][“kezhi1”] = $kezhi1;

$_SESSION[‘cart’][$id][“kezhi2”] = $kezhi2;

///$_SESSION[‘cart’][$id][“count”] = round($arr[‘price’]*intval($num),2);

}elseif(strlen($_SESSION[‘cart’][$id][“kezhi”]) != 0 strlen($kezhi) == 0){//有刻字,去除刻字

$_SESSION[‘cart’][$id][“eng_price”]=0;

//$_SESSION[‘cart’][$id][“eng_price”]-=(int)$config_kezhi*intval($arr[‘num’]);

// $_SESSION[‘cart’][$id][“eng_price”]-=$config_kezhi;

//$_SESSION[‘cart’][$id][“price”] = $arr[‘price’];

//$_SESSION[‘cart’][$id][“count”] = round($arr[‘price’]*intval($arr[‘num’]),2);

$_SESSION[‘cart’][$id][“kezhi”] = $kezhi;

$_SESSION[‘cart’][$id][“kezhi1”] = $kezhi1;

$_SESSION[‘cart’][$id][“kezhi2”] = $kezhi2;

}elseif(strlen($_SESSION[‘cart’][$id][“kezhi”]) != 0 strlen($kezhi) != 0){//有刻字,更改刻字

//$_SESSION[‘cart’][$id][“count”] = round($arr[‘price’]*intval($arr[‘num’]),2);

//$_SESSION[‘cart’][$id][“eng_price”]=0;

$_SESSION[‘cart’][$id][“eng_price”]=(int)$config_kezhi*intval($arr[‘num’]);

$_SESSION[‘cart’][$id][“kezhi”] = $kezhi;

$_SESSION[‘cart’][$id][“kezhi1”] = $kezhi1;

$_SESSION[‘cart’][$id][“kezhi2”] = $kezhi2;

}

}

}

/**

* 函数名称: getItems

* 函数功能: 取得商品数组

* 输入参数: $id ————— 某商品的ID

* 函数返回值: array

* 其它说明: 2004-8-19

*/

function getItems($id=null)

{

if(isset($_SESSION[‘cart’]))

{

if($id==null)

{

//print_r($_SESSION[‘cart’]);exit;

Return $_SESSION[‘cart’];

}

else

{

Return $_SESSION[‘cart’][$id];

}

}

}

/**

* 函数名称: emptyItem

* 函数功能: 删除商品

* 输入参数: $id ———– 商品ID

* 函数返回值: bool

* 其它说明: 2004-8-19

*/

function emptyItem($id=null)

{

if($id==null)

{

unset($_SESSION[‘cart’]);

}

else

{

unset($_SESSION[‘cart’][$id]);

}

}

/**

* 函数名称: sum

* 函数功能: 统计总价

* 输入参数: none

* 函数返回值: int

* 其它说明: 2004-8-19

*/

function sum()

{

$total = 0;

if(isset($_SESSION[‘cart’])!empty($_SESSION[‘cart’]))

{

foreach($_SESSION[‘cart’] as $key=$val)

{

$total += $val[‘count’];

}

}

Return $total;

}

}

我用PHP做的购物车,为什么每次往购物车中添加不同商品 ,购物车中确显示的同一件商品啊

这个需要看你的购物车结构。

一般一个属性的商品是在一条数据里面,多次加入只是更改数量

不同属性的商品应该分多条数据保存。最后购物车统计的是总的数量

原创文章,作者:GLUN,如若转载,请注明出处:https://www.506064.com/n/141647.html

(0)
GLUNGLUN
上一篇 2024-10-08
下一篇 2024-10-08

相关推荐

  • Windows UAC——用户账户控制

    一、概述 Windows UAC,即用户账户控制,是Windows Vista及以上版本引入的一种安全特性。它的主要目的是在用户与系统管理员之间建立一个防火墙,防止管理员不经意间的…

    编程 2024-10-04
  • mysql行号使用实例,mysql 行号

    本文目录一览: 1、如何在MySQL查询结果集中得到记录行号 2、mysql中的一些稍微复杂用法实例代码 3、mysql获取查询结果的行号 4、mysql 怎么才能做到rownum…

    编程 2024-10-04
  • php仿豆瓣源码,Php社区源码

    本文目录一览: 1、【PHP】关于仿豆瓣程序中core.function.php 2、php网站源码下载 及怎么在本机上运行 3、php 源码 【PHP】关于仿豆瓣程序中core.…

    编程 2024-10-04
  • 使用Pycharm实现多行注释

    介绍 在编写程序的过程中,注释是非常重要的。注释可以帮助其他人理解我们编写的代码,并且可以使我们自己更好地了解代码的功能。本文将介绍如何在Pycharm中实现多行注释。Pychar…

    编程 2024-10-04
  • 透视plugin error

    一、概述 plugin error,翻译过来就是插件错误,可以理解为在使用插件的时候发生了错误。因为插件为软件提供了额外的功能,所以插件的错误也会导致软件无法正常使用。这篇文章将从…

    编程 2024-10-04
  • JWT工具类的全面分析与应用

    一、JWT的概述 JWT(JSON Web Token)是一种用于身份验证的开放标准,它采用JSON格式定义了一种紧凑的、自包含的、安全的方式,用于在双方之间传递信息。JWT由三部…

    编程 2024-10-04
  • 包含学习c语言好还是python好的词条

    本文目录一览: 1、学c语言还是python 2、c语言和python哪个好学? 3、c语言和python语言哪个更值得学? 学c语言还是python 从难易程度来说,可以先学py…

    编程 2024-10-10
  • 中断循环:Python中的Break语句

    一、Break语句的基本概念 在Python中,break语句用于中断当前循环体中的语句执行流程,跳出循环体,执行紧接着循环体之后的代码。 Break语句通常与条件语句一起使用,当…

    编程 2024-10-04
  • 深入理解CSS中的层叠顺序属性z-index

    CSS中的层叠顺序是指当元素之间发生重叠时,哪个元素位于上层,哪个元素位于下层的一组规则。而z-index属性就是用来控制这种层叠顺序的。合理使用z-index,能够使页面在视觉上…

    编程 2024-10-04
  • mysql远程访问数据库的数据(远程链接mysql数据库)

    本文目录一览: 1、MySQLWorkbench如何连接远程数据库的方法 2、用MysQL怎么进行远程连接数据库 3、如何远程访问MySQL数据库详解 4、怎么访问远程的mysql…

    编程 2024-10-03

发表回复

登录后才能评论