下面是全部代码,细节你根据你的需要自己修改
<?php /************************ 将session封装入一个简单的购物车类之中,
请参考PHP学习记录的相应文章。 每件商品要求具备id,name,price,count四个属性,
如果你要加新的属性,请修改相应部分。 *************************/ class TCart { var $SortCount; //商品种类数
var $TotalCost; //商品总价值 var $Id; //每类商品的ID(数组)
var $Name; //每类商品的名称(数组)
var $Price; //每类商品的价格(数组)
var $Count; //每类商品的件数(数组)
var $Cost; //每类商品的价值(数组)
//******构造函数
function TCart(){
$this->SortCount=0;
session_start(); //初始化一个session
session_register('sId');
session_register('sName');
session_register('sPrice');
session_register('sCount');
$this->Update();
$this->Calculate();
}
//********私有,根据session的值更新类中相应数据
function Update(){
global $sId,$sName,$sPrice,$sCount;
if(!isset($sId) or !isset($sName) or !isset($sPrice)) return;
$this->Id=$sId;
$this->Name=$sName;
$this->Price=$sPrice;
$this->Count=$sCount;
$this->SortCount=count($sId);
}
//********私有,根据新的数据计算每类商品的价值及全部商品的总价
function Calculate(){
for($i=0;$i<$this->SortCount;$i++){
$this->Cost[$i]=$this->Price[$i]*$this->Count[$i];
$this->TotalCost += $this->Cost[$i];
}
}
//**************以下为接口函数
//*** 加一件商品
// 判断是否蓝中已有,如有,加count,否则加一个新商品
//首先都是改session的值,然后再调用update() and calculate()来更新成员变量
function AddOne($id,$na,$pr){
global $sId,$sName,$sPrice,$sCount;
$k=count($sId);
for($i=0;$i<$k;$i++){ //先找一下是否已经加入了这种商品
if($sId[$i]==$id){
$sCount[$i]++;
break;
}
}
if($i>=$k){ //没有则加一个新商品种类
$sId[]=$id;
$sName[]=$na;
$sPrice[]=$pr;
$sCount[]=1;
}
$this->Update(); //更新一下类的成员数据
$this->Calculate();
}
//移去一件商品
function RemoveOne($id){
global $sId,$sName,$sPrice,$sCount;
$k=count($sId);
for($i=0;$i<$k;$i++){
if($sId[$i]==$id){
$sCount[$i]--;
break;
}
} $this->Update();
$this->Calculate();
}
//改变商品的个数
function ModifyCount($i,$ncount){
global $sCount;
$sCount[$i]=$ncount;
$this->Update();
$this->Calculate();
}
//清空一种商品
function EmptyOne($i){
global $sCount;
$sCount[$i]=0;
$this->Update();
$this->Calculate();
}
/***************************
清空所有的商品
因为在win里PHP不支持session_destroy()函数,所以这个清空函数不完善,
只是把每种商品的个数置为0。
如果是在linux下,可以直接用session_destroy()来做。
*****************************/
function EmptyAll(){
global $sId,$sName,$sPrice,$sCount;
$k=count($sId);
for($i=0;$i<$k;$i++){
$sCount[$i]=0;
} $this->Update();
$this->Calculate();
session_unregister('sId');
session_unregister('sName');
session_unregister('sPrice');
session_unregister('sCount');
$this->SortCount=0;
}
//是否某件商品已在蓝内,参数为此商品的ID
function InCart($id){
for($i=0;$i<$this->SortCount;$i++){
if($this->Id[$i]==$id) return TRUE;
}
return FALSE;
}
//某件商品在蓝内的位置
function IndexOf($id){
for($i=0;$i<$this->SortCount;$i++){
if($this->Id[$i]==$id) return $i;
}
return 0;
}
//取一件商品的信息,主要的工作函数
//返回一个关联数组,下标分别对应 id,name,price,count,cost
function GetOne($i){
$Result[id]=$this->Id[$i];
$Result[name]=$this->Name[$i];
$Result[price]=$this->Price[$i];
$Result[count]=$this->Count[$i];
$Result[cost]=$this->Cost[$i];
return $Result;
}
//取总的商品种类数
function GetSortCount(){
return $this->SortCount;
}
//取总的商品价值
function GetTotalCost(){
return $this->TotalCost;
}
//end class
} ?>
<?php /************************ 将session封装入一个简单的购物车类之中,
请参考PHP学习记录的相应文章。 每件商品要求具备id,name,price,count四个属性,
如果你要加新的属性,请修改相应部分。 *************************/ class TCart { var $SortCount; //商品种类数
var $TotalCost; //商品总价值 var $Id; //每类商品的ID(数组)
var $Name; //每类商品的名称(数组)
var $Price; //每类商品的价格(数组)
var $Count; //每类商品的件数(数组)
var $Cost; //每类商品的价值(数组)
//******构造函数
function TCart(){
$this->SortCount=0;
session_start(); //初始化一个session
session_register('sId');
session_register('sName');
session_register('sPrice');
session_register('sCount');
$this->Update();
$this->Calculate();
}
//********私有,根据session的值更新类中相应数据
function Update(){
global $sId,$sName,$sPrice,$sCount;
if(!isset($sId) or !isset($sName) or !isset($sPrice)) return;
$this->Id=$sId;
$this->Name=$sName;
$this->Price=$sPrice;
$this->Count=$sCount;
$this->SortCount=count($sId);
}
//********私有,根据新的数据计算每类商品的价值及全部商品的总价
function Calculate(){
for($i=0;$i<$this->SortCount;$i++){
$this->Cost[$i]=$this->Price[$i]*$this->Count[$i];
$this->TotalCost += $this->Cost[$i];
}
}
//**************以下为接口函数
//*** 加一件商品
// 判断是否蓝中已有,如有,加count,否则加一个新商品
//首先都是改session的值,然后再调用update() and calculate()来更新成员变量
function AddOne($id,$na,$pr){
global $sId,$sName,$sPrice,$sCount;
$k=count($sId);
for($i=0;$i<$k;$i++){ //先找一下是否已经加入了这种商品
if($sId[$i]==$id){
$sCount[$i]++;
break;
}
}
if($i>=$k){ //没有则加一个新商品种类
$sId[]=$id;
$sName[]=$na;
$sPrice[]=$pr;
$sCount[]=1;
}
$this->Update(); //更新一下类的成员数据
$this->Calculate();
}
//移去一件商品
function RemoveOne($id){
global $sId,$sName,$sPrice,$sCount;
$k=count($sId);
for($i=0;$i<$k;$i++){
if($sId[$i]==$id){
$sCount[$i]--;
break;
}
} $this->Update();
$this->Calculate();
}
//改变商品的个数
function ModifyCount($i,$ncount){
global $sCount;
$sCount[$i]=$ncount;
$this->Update();
$this->Calculate();
}
//清空一种商品
function EmptyOne($i){
global $sCount;
$sCount[$i]=0;
$this->Update();
$this->Calculate();
}
/***************************
清空所有的商品
因为在win里PHP不支持session_destroy()函数,所以这个清空函数不完善,
只是把每种商品的个数置为0。
如果是在linux下,可以直接用session_destroy()来做。
*****************************/
function EmptyAll(){
global $sId,$sName,$sPrice,$sCount;
$k=count($sId);
for($i=0;$i<$k;$i++){
$sCount[$i]=0;
} $this->Update();
$this->Calculate();
session_unregister('sId');
session_unregister('sName');
session_unregister('sPrice');
session_unregister('sCount');
$this->SortCount=0;
}
//是否某件商品已在蓝内,参数为此商品的ID
function InCart($id){
for($i=0;$i<$this->SortCount;$i++){
if($this->Id[$i]==$id) return TRUE;
}
return FALSE;
}
//某件商品在蓝内的位置
function IndexOf($id){
for($i=0;$i<$this->SortCount;$i++){
if($this->Id[$i]==$id) return $i;
}
return 0;
}
//取一件商品的信息,主要的工作函数
//返回一个关联数组,下标分别对应 id,name,price,count,cost
function GetOne($i){
$Result[id]=$this->Id[$i];
$Result[name]=$this->Name[$i];
$Result[price]=$this->Price[$i];
$Result[count]=$this->Count[$i];
$Result[cost]=$this->Cost[$i];
return $Result;
}
//取总的商品种类数
function GetSortCount(){
return $this->SortCount;
}
//取总的商品价值
function GetTotalCost(){
return $this->TotalCost;
}
//end class
} ?>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货