PHP實現的比較完善的購物車類,php購物車類_PHP教程

來源:互聯網
上載者:User

PHP實現的比較完善的購物車類,php購物車類


本文執行個體講述了PHP實現的比較完善的購物車類。分享給大家供大家參考。具體實現方法如下:

前不久做到一個項目需要用到購物車,考慮到可能經常用到,所以把它封裝成一個類,以便以後調用,感興趣的讀者可以簡單的把這個類稍微修改一下就可以用在自己的程式裡了.
複製代碼 代碼如下:<?php
/*****************************************************************************/
/* */
/* file type: 包含檔案,建議尾碼為.inc */
/* */
/* file name: cart.inc */
/* */
/* Description: 定義一個購車類 */
/* */
/* Func list : class cart */
/* */
/* author : bigeagle */
/* */
/* */
/*****************************************************************************/

//定義本檔案常量
define("_CART_INC_" , "exists") ;

/*購物車類*/
class TCart
{

var $SortCount; //商品種類數
var $TotalCost; //商品總價值

var $Id; //每類商品的ID(數組)
var $Name; //每類商品的名稱(數組)
var $Price; //每類商品的價格(數組)
var $Discount; //商品的折扣(數組)
var $GoodPrice ; //商品的優惠價格(數組)
var $Count; //每類商品的件數(數組)
var $MaxCount ; //商品限量(數組)

//******建構函式
function TCart()
{
$this->SortCount=0;

session_start(); //初始化一個session
session_register('sId');
session_register('sName');
session_register('sPrice');
session_register('sDiscount');
session_register('sGoodPrice') ;
session_register('sCount') ;
session_register('sMaxCount') ;

$this->Update();
$this->Calculate();
}

//********私人,根據session的值更新類中相應資料
function Update()
{
global $sId,$sName,$sPrice,$sCount,$sDiscount,$sMaxCount,$sGoodPrice;

if(!isset($sId) or !isset($sName) or !isset($sPrice)
or !isset($sDiscount) or !isset($sMaxCount)
or !isset($sGoodPrice) or !isset($sCount)) return;

$this->Id =$sId;
$this->Name =$sName;
$this->Price =$sPrice;
$this->Count =$sCount;
$this->Discount = $sDiscount ;
$this->GoodPrice = $sGoodPrice ;
$this->MaxCount = $sMaxCount ;

//計算商品總數
$this->SortCount=count($sId);

}

//********私人,根據新的資料計算每類商品的價值及全部商品的總價
function Calculate()
{
for($i=0;$i<$this->SortCount;$i++)
{
/*計算每件商品的價值,如果折扣是0 ,則為優惠價格*/
$GiftPrice = ($this->Discount[$i] == 0 ? $this->GoodPrice :
ceil($this->Price[$i] * $this->Discount[$i])/100 );
$this->TotalCost += $GiftPrice * $this->Count[$i] ;
}
}

//**************以下為介面函數

//*** 加一件商品
// 判斷是否藍中已有,如有,加count,否則加一個新商品
//首先都是改session的值,然後再調用update() and calculate()來更新成員變數
function Add($a_ID , $a_Name , $a_Price , $a_Discount ,
$a_GoodPrice , $a_MaxCount , $a_Count)
{
global $sId , $sName , $sCount , $sPrice , $sDiscount ,
$sGoodPrice , $sMaxCount ;

$k=count($sId);
for ($i=0; $i<$k; $i++)
{ //先找一下是否已經加入了這種商品
if($sId[$i]==$a_ID)
{
$sCount[$i] += $a_Count ;
break;
}
}
if($i >= $k)
{ //沒有則加一個新商品種類
$sId[] = $a_ID;
$sName[] = $a_Name;
$sPrice[] = $a_Price;
$sCount[] = $a_Count;
$sGoodPrice[] = $a_GoodPrice ;
$sDiscount[] = $a_Discount ;
$sMaxCount[] = $a_MaxCount ;
}

$this->Update(); //更新一下類的成員資料
$this->Calculate();
}

//移去一件商品
function Remove($a_ID)
{
global $sId , $sName , $sCount , $sPrice , $sDiscount ,
$sGoodPrice , $sMaxCount ;

$k = count($sId);
for($i=0; $i < $k; $i++)
{
if($sId[$i] == $a_ID)
{
$sCount[$i] = 0 ;
break;
}
}

$this->Update();
$this->Calculate();
}

//改變商品的個數
function ModifyCount($a_i,$a_Count)
{
global $sCount;

$sCount[$a_i] = $a_Count ;
$this->Update();
$this->Calculate();
}

/***************************
清空所有的商品
*****************************/
function RemoveAll()
{
session_unregister('sId');
session_unregister('sName');
session_unregister('sPrice');
session_unregister('sDiscount');
session_unregister('sGoodPrice') ;
session_unregister('sCount') ;
session_unregister('sMaxCount') ;
$this->SortCount = 0 ;
$this->TotalCost = 0 ;
}

//是否某件商品已在藍內,參數為此商品的ID
function Exists($a_ID)
{
for($i=0; $i<$this->SortCount; $i++)
{
if($this->Id[$i]==$a_ID) return TRUE;
}
return FALSE;
}

//某件商品在藍內的位置
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[i] ;
return $Result;
}

//取總的商品種類數
function CartCount()
{
return $this->SortCount;
}

//取總的商品價值
function GetTotalCost()
{
return $this->TotalCost;
}
}
?>

希望本文所述對大家的PHP程式設計有所協助。

http://www.bkjia.com/PHPjc/920616.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/920616.htmlTechArticlePHP實現的比較完善的購物車類,php購物車類 本文執行個體講述了PHP實現的比較完善的購物車類。分享給大家供大家參考。具體實現方法如下:...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.