0

0

php 利用session 实现最简单的方式实现购物车类

php中文网

php中文网

发布时间:2016-06-08 17:28:14

|

2134人浏览过

|

来源于php中文网

原创

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速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 序列化
Python 序列化

本专题整合了python序列化、反序列化相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.02.02

AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

91

2026.02.02

主流快递单号查询入口 实时物流进度一站式追踪专题
主流快递单号查询入口 实时物流进度一站式追踪专题

本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。

27

2026.02.02

Golang WebAssembly(WASM)开发入门
Golang WebAssembly(WASM)开发入门

本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

11

2026.02.02

PHP Swoole 高性能服务开发
PHP Swoole 高性能服务开发

本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

5

2026.02.02

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

5

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

62

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

55

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

27

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 15.1万人学习

Pandas 教程
Pandas 教程

共15课时 | 1万人学习

C# 教程
C# 教程

共94课时 | 8.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号