<?
//¶¨Òå±¾Îļþ³£Á¿
define("CART_INC" , "exists") ;
/¹ºÎï³µÀà/
class TCart
{
var $SortCount;
var $TotalCost;
var $Id;
var $Name;
var $Price;
var $Discount;
var $GoodPrice;
var $Count;
var $MaxCount;
//******¹¹Ô캯Êý
function TCart()
{
$this->SortCount = 0;
session_start(); //³õʼ»¯Ò»¸ösession
$SESSION['sId'] = array();
$SESSION['sName'] = array();
$SESSION['sPrice'] = array();
$SESSION['sDiscount'] = array();
$SESSION['sGoodPrice'] = array();
$SESSION['sCount'] = array();
$_SESSION['sMaxCount'] = array();
$this->Update();
$this->Calculate();
}
//********˽ÓУ¬¸ù¾ÝsessionµÄÖµ¸üÐÂÀàÖÐÏàÓ¦Êý¾Ý
function Update()
{
global $SESSION;
if(!isset($SESSION['sId']) or !isset($SESSION['sName']) or !isset($SESSION['sPrice'])
or !isset($SESSION['sDiscount']) or !isset($SESSION['sMaxCount'])
or !isset($SESSION['sGoodPrice']) or !isset($SESSION['sCount']))
return;
$this->Id = $SESSION['sId'];
$this->Name = $SESSION['sName'];
$this->Price = $SESSION['sPrice'];
$this->Count = $SESSION['sCount'];
$this->Discount = $SESSION['sDiscount'] ;
$this->GoodPrice = $SESSION['sGoodPrice'] ;
$this->MaxCount = $_SESSION['sCount'] ;
$this->SortCount = count($_SESSION['sId']);
}
function Calculate()
{
for($i=0;$i<$this->SortCount;$i++)
{
$GiftPrice = ($this->Discount[$i] == 0 ? $this->GoodPrice :
ceil($this->Price[$i] * $this->Discount[$i])/100 );
$this->TotalCost += $GiftPrice * $this->Count[$i] ;
}
}
function Add($a_ID , $a_Name , $a_Price , $a_Discount ,
$a_GoodPrice , $a_MaxCount , $a_Count)
{
global $SESSION;
$k = count($SESSION['sId']);
for ($i=0; $i<$k; $i++)
{ //ÏÈÕÒÒ»ÏÂÊÇ·ñÒѾ¼ÓÈëÁËÕâÖÖÉÌÆ·
if($SESSION['sId'][$i] == $a_ID)
{
$SESSION['sCount'][$i] += $a_Count ;
break;
}
}
if($i >= $k)
{ //ûÓÐÔò¼ÓÒ»¸öÐÂÉÌÆ·ÖÖÀà
$SESSION['sId'][] = $a_ID;
$SESSION['sName'][] = $a_Name;
$SESSION['sPrice'][] = $a_Price;
$SESSION['sCount'][] = $a_Count;
$SESSION['sGoodPrice'][] = $a_GoodPrice ;
$SESSION['sDiscount'][] = $a_Discount ;
$SESSION['sMaxCount'][] = $a_MaxCount ;
}
$this->Update(); //¸üÐÂÒ»ÏÂÀàµÄ³ÉÔ±Êý¾Ý
$this->Calculate();
}
//ÒÆÈ¥Ò»¼þÉÌÆ·
function Remove($a_ID)
{
global $SESSION;
$k = count($SESSION['sId']);
for($i=0; $i < $k; $i++)
{
if($SESSION['sId'][$i] == $a_ID)
{
$SESSION['sCount'][$i] = 0 ;
break;
}
}
$this->Update();
$this->Calculate();
}
//¸Ä±äÉÌÆ·µÄ¸öÊý
function ModifyCount($a_i,$a_Count)
{
global $SESSION;
$SESSION['sCount'][$a_i] = $a_Count ;
$this->Update();
$this->Calculate();
}
/************************
Çå¿ÕËùÓеÄÉÌÆ·
**************************/
function RemoveAll()
{
global $SESSION;
unset($SESSION['sId']);
unset($SESSION['sName']);
unset($SESSION['sPrice']);
unset($SESSION['sDiscount']);
unset($SESSION['sGoodPrice']) ;
unset($SESSION['sCount']) ;
unset($SESSION['sMaxCount']) ;
$this->SortCount = 0 ;
$this->TotalCost = 0 ;
}
//ÊÇ·ñij¼þÉÌÆ·ÒÑÔÚÀºÄÚ£¬²ÎÊýΪ´ËÉÌÆ·µÄID
function Exists($a_ID)
{
for($i=0; $i<$this->SortCount; $i++)
{
if($this->Id[$i]==$a_ID)
return TRUE;
}
return FALSE;
}
//ij¼þÉÌÆ·ÔÚÀºÄÚµÄλÖÃ
function IndexOf($a_ID)
{
for($i=0; $i<$this->SortCount; $i++)
{
if($this->Id[$i]==$id) return $i;
}
return 0;
}
//ȡһ¼þÉÌÆ·µÄÐÅÏ¢£¬Ö÷ÒªµÄ¹¤×÷º¯Êý
//·µ»ØÒ»¸ö¹ØÁªÊý×飬
function Item($i)
{
$Result[id] = $this->Id[$i];
$Result[name] = $this->Name[$i];
$Result[price] = $this->Price[$i];
$Result[count] = $this->Count[$i];
$Result[discount] = $this->Discount[$i] ;
$Result[goodprice] = $this->GoodPrice[$i] ;
$Result[maxcount] = $this->MaxCount ;
return $Result;
}
//È¡×ܵÄÉÌÆ·ÖÖÀàÊý
function CartCount()
{
return $this->SortCount;
}
function GetTotalCost()
{
return $this->TotalCost;
}
}
?>