首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>php>php技巧>正文

贴个购物车的类,只用了一个Session

http://www.oklinux.cn  2003-05-01  来源: 互联网    会员收藏  游客收藏  【 】 

各位可根据自己需要改一下,最大的特点是只用了一个Session,有的地方是用了以前网上的一个购物车的类改写的,我也没有好好地整理过
<?php
class cart {

var $sortCount; //商品种类数
var $totalCost; //商品总金额
/* 所有的商品,如:$myCart[5][$name]:商品编号为5的名称
*               $myCart[5][$price]:商品编号为5的单价
*          $myCart[5][$count]:商品编号为5的数量
*               $myCart[5][$cost]:商品编号为5的合计金额
*/
var $myCart    ;  
var $Id;        //每类商品的ID(数组)
var $Name;        //每类商品的名称(数组)
var $Price;        //每类商品的价格(数组)
var $Count;        //每类商品的件数(数组)
var $Cost;        //每类商品的价值(数组)

//******构造函数
function cart(){
$this->sortCount = 0    ;
$this->totalCost = 0    ;
$this->myCart    = array()    ;
session_start();    //初始化一个session
if(session_is_registered("myCart")==false)    session_register('myCart');       
$this->update();
//  $this->Calculate();

}

//********私有,根据session的值更新类中相应数据
function update(){
session_start();    //初始化一个session
$myCart = $_SESSION["myCart"]        ;
if(false==$myCart)
{
$this->sortCount = 0    ;
$this->totalCost = 0    ;
$this->myCart = array()    ;
return false;
}
//得到商品的总数量
$this->sortCount=count($myCart);
if($this->sortCount>0)
{
//开始计算商品的金额
$totalCost = 0    ;
foreach($myCart as $key=>$val)
{
//先四舍五入
foreach($val as $proName=>$proVal)
{
if($proName !="name")
{
$val[$proName] = round(eregi_replace(",", "",$proVal),2)    ;
$myCart[$key][$proName] = $val[$proName]    ;
}
}

//计算每件商品的金额
$myCart[$key]["cost"] = round($val["count"]*$val["price"], 2)    ;
//得到所有商品的金额
$totalCost += $myCart[$key]["cost"]    ;            
}
$this->totalCost = $totalCost    ;
$this->myCart = $myCart            ;
$_SESSION["myCart"] = $myCart    ;

}

}

/**
* 格式化数字为货币数据
*
*
**/
function formatNum($data)
{
foreach($data as $key=>$val)
{
foreach($val as $sName=>$sValue)
{
if($sName !="name")
{    
$data[$key][$sName] = number_format($sValue, 2)    ;
}
}
}
return $data    ;

}
//**************以下为接口函数

//*** 加一件商品
// 判断是否蓝中已有,如有,加count,否则加一个新商品
//首先都是改session的值,然后再调用update() and calculate()来更新成员变量
function addOne($id,$na,$pr)
{
session_start();    //初始化一个session
$myCart = $_SESSION["myCart"]        ;
//设置购物车中的数量
$myCart[$id]["name"]  = $na    ;
$myCart[$id]["price"] = $pr    ;
++$myCart[$id]["count"]    ;
$_SESSION["myCart"] = $myCart    ;
//更新一下类的成员数据
$this->update();    

}
/**
* 向购物车中添加一组商品,如果没有,进行添加,如果已经存在,则更新为data
* @param $data  - 要添加的商品,格式为:
*                 $data[0][id],   $data[0][name],
*                 $data[0][price],$data[0][count]
* @return boolean
*/
function addData($data)
{
if(count($data > 0))  
{
session_start();    //初始化一个session
$myCart = $_SESSION["myCart"]        ;
foreach($data as $val)
{
extract($val)    ;
//设置购物车中的数量
$myCart[$id]["name"]  = $name    ;
$myCart[$id]["price"] = $price    ;
$myCart[$id]["count"] = $count    ;
}
$_SESSION["myCart"] = $myCart    ;
//更新一下类的成员数据
$this->update();      
}
}
/*
* 更改一件商品的单价
*
*
*
**/
function updatePrice($id, $price)
{
if($price <=0)    return false    ;
session_start();    //初始化一个session
$myCart = $_SESSION["myCart"]        ;
if($myCart[$id]==true)
{
$myCart[$id]["price"]=$price;

$_SESSION["myCart"] = $myCart    ;
$this->update();
}
}
//将一件商品的数量减1
function removeOne($id)
{
$count = $this->myCart[$id]["count"]    ;
if($count>0)
{
$this->modifyCount($id, --$count)    ;
}

}

//改变商品的个数,如果传入单价,则一起更改单价
function modifyCount($id, $ncount, $price=0)
{
if($ncount <= 0) return false    ;
session_start();    //初始化一个session
$myCart = $_SESSION["myCart"]        ;
if($myCart[$id]==true)
{
$myCart[$id]["count"]=$ncount;
//如果有传入单价,则一起更改单价
if($price >0 ) $myCart[$id]["price"]=$price;

$_SESSION["myCart"] = $myCart    ;
$this->update();
}

}

//清空一种商品
function emptyOne($i)
{
session_start();    //初始化一个session
$myCart = $_SESSION["myCart"]        ;
unset($myCart[$i])    ;
if(count($myCart)==0)
{
$this->emptyAll()    ;
}else{
$_SESSION["myCart"] = $myCart        ;   
$this->update();
}
}

/***************************
清空所有的商品

因为在win里PHP不支持session_destroy()函数,所以这个清空函数不完善,
只是把每种商品的个数置为0。
如果是在linux下,可以直接用session_destroy()来做。
*****************************/
function emptyAll()
{
session_start();    //初始化一个session
$myCart = $_SESSION["myCart"]        ;

unset($myCart)    ;
$_SESSION["myCart"] = $myCart        ;   
$this->update();

}

/**
*  返回所有购物车中的数据
*
**/
function getData()
{
if($this->sortCount > 0)
{
return $this->myCart    ;
}else{
return array()    ;
}
}
//取一件商品的信息,主要的工作函数
//返回一个关联数组,下标分别对应 id,name,price,count,cost
function getOne($i){
$data = $this->myCart[$i]        ;
if(false==$data) return array()    ;

$data["id"]    =    $i                ;
return $data                        ;

}

//取总的商品种类数
function getSortCount(){
return $this->sortCount;
}

//取总的商品价值
function getTotalCost(){
return $this->totalCost;
}

//end class  
}

?> 



上一篇:无限分类&树型论坛的实现   下一篇:搜索和替换文件或目录的一个好类


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·无限分类&树型论坛的实现
·搜索和替换文件或目录的一个好类
·数字转换为中文的类
·新作模板处理类
·一个PHP类
·树型结构列出指定目录里所有文件的PHP类
·一个比较完善的购物车类
·使用PHP4中的 IntegratedTemplate类实现BLOCK功能
·如何文档化你的PHP类
·一个饼状图或柱状图php生成类或例子
·日历类
·一个操作xml的类
·屏蔽浏览器缓存另类方法
·一个翻页类
·一个访问ACCESS的类
·判断WebSERVER类型
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·PHP之COOKIE支持详解
·PHP中的类
·php中文处理函数
·通过ODBC连接的SQL
·两个日期类
·面向对象编程
·面向过程与面向对象的简单比较
·判断WebSERVER类型
·屏蔽浏览器缓存另类方法
·日历类
·如何文档化你的PHP类
·使用PHP4中的 IntegratedTemplate类实
  阅读排行
·PHP之COOKIE支持详解
·PHP 应用程序配置模式
·用 PHP 读取文件的正确方法
·利用单元测试对PHP 代码进行检查
·五个常见 PHP 数据库问题
·用 PHP V4 开发的代码迁移到 PHP V5
·使用PHP 快速生成Flash 动画
·Linux系统下PHP服务器安全配置技巧
·Linux操作系统下的多线程编程详细解析
·用PHP读取和编写XML DOM
·用Pear加速PHP程序开发
·如何用PHP调用自己编写的COM组件?
·PHP面向对象编程快速入门
·为 Linux 和 Windows 安装 PHP 和 Orac
·终于实现简体转繁体,繁体到转体
网摘收藏: