PHP實(shí)現(xiàn)的比較完善的購(gòu)物車類
本文實(shí)例講述了PHP實(shí)現(xiàn)的比較完善的購(gòu)物車類。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
前不久做到一個(gè)項(xiàng)目需要用到購(gòu)物車,考慮到可能經(jīng)常用到,所以把它封裝成一個(gè)類,以便以后調(diào)用,感興趣的讀者可以簡(jiǎn)單的把這個(gè)類稍微修改一下就可以用在自己的程序里了.
/*****************************************************************************/
/* */
/* file type: 包含文件,建議后綴為.inc */
/* */
/* file name: cart.inc */
/* */
/* Description: 定義一個(gè)購(gòu)車類 */
/* */
/* Func list : class cart */
/* */
/* author : bigeagle */
/* */
/* */
/*****************************************************************************/
//定義本文件常量
define("_CART_INC_" , "exists") ;
/*購(gòu)物車類*/
class TCart
{
var $SortCount; //商品種類數(shù)
var $TotalCost; //商品總價(jià)值
var $Id; //每類商品的ID(數(shù)組)
var $Name; //每類商品的名稱(數(shù)組)
var $Price; //每類商品的價(jià)格(數(shù)組)
var $Discount; //商品的折扣(數(shù)組)
var $GoodPrice ; //商品的優(yōu)惠價(jià)格(數(shù)組)
var $Count; //每類商品的件數(shù)(數(shù)組)
var $MaxCount ; //商品限量(數(shù)組)
//******構(gòu)造函數(shù)
function TCart()
{
$this->SortCount=0;
session_start(); //初始化一個(gè)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();
}
//********私有,根據(jù)session的值更新類中相應(yīng)數(shù)據(jù)
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 ;
//計(jì)算商品總數(shù)
$this->SortCount=count($sId);
}
//********私有,根據(jù)新的數(shù)據(jù)計(jì)算每類商品的價(jià)值及全部商品的總價(jià)
function Calculate()
{
for($i=0;$i<$this->SortCount;$i++)
{
/*計(jì)算每件商品的價(jià)值,如果折扣是0 ,則為優(yōu)惠價(jià)格*/
$GiftPrice = ($this->Discount[$i] == 0 ? $this->GoodPrice :
ceil($this->Price[$i] * $this->Discount[$i])/100 );
$this->TotalCost += $GiftPrice * $this->Count[$i] ;
}
}
//**************以下為接口函數(shù)
//*** 加一件商品
// 判斷是否藍(lán)中已有,如有,加count,否則加一個(gè)新商品
//首先都是改session的值,然后再調(diào)用update() and calculate()來(lái)更新成員變量
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++)
{ //先找一下是否已經(jīng)加入了這種商品
if($sId[$i]==$a_ID)
{
$sCount[$i] += $a_Count ;
break;
}
}
if($i >= $k)
{ //沒(méi)有則加一個(gè)新商品種類
$sId[] = $a_ID;
$sName[] = $a_Name;
$sPrice[] = $a_Price;
$sCount[] = $a_Count;
$sGoodPrice[] = $a_GoodPrice ;
$sDiscount[] = $a_Discount ;
$sMaxCount[] = $a_MaxCount ;
}
$this->Update(); //更新一下類的成員數(shù)據(jù)
$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();
}
//改變商品的個(gè)數(shù)
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 ;
}
//是否某件商品已在藍(lán)內(nèi),參數(shù)為此商品的ID
function Exists($a_ID)
{
for($i=0; $i<$this->SortCount; $i++)
{
if($this->Id[$i]==$a_ID) return TRUE;
}
return FALSE;
}
//某件商品在藍(lán)內(nèi)的位置
function IndexOf($a_ID)
{
for($i=0; $i<$this->SortCount; $i++)
{
if($this->Id[$i]==$id) return $i;
}
return 0;
}
//取一件商品的信息,主要的工作函數(shù)
//返回一個(gè)關(guān)聯(lián)數(shù)組,
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;
}
//取總的商品種類數(shù)
function CartCount()
{
return $this->SortCount;
}
//取總的商品價(jià)值
function GetTotalCost()
{
return $this->TotalCost;
}
}
?>
希望本文所述對(duì)大家的PHP程序設(shè)計(jì)有所幫助。
- php實(shí)現(xiàn)保存周期為1天的購(gòu)物車類
- PHP購(gòu)物車類Cart.class.php定義與用法示例
- php實(shí)現(xiàn)仿寫(xiě)CodeIgniter的購(gòu)物車類
- PHP實(shí)現(xiàn)的購(gòu)物車類實(shí)例
- php 購(gòu)物車完整實(shí)現(xiàn)代碼
- php 購(gòu)物車的例子
- 深入PHP購(gòu)物車模塊功能分析(函數(shù)講解,附源碼)
- php利用cookies實(shí)現(xiàn)購(gòu)物車的方法
- php實(shí)現(xiàn)購(gòu)物車功能(以大蘋(píng)果購(gòu)物網(wǎng)為例)
- php+pdo實(shí)現(xiàn)的購(gòu)物車類完整示例
相關(guān)文章
深入解析PHP中逗號(hào)與點(diǎn)號(hào)的區(qū)別
大部分同學(xué)都知道逗號(hào)要比點(diǎn)號(hào)快,但就是不知道為什么,更不知道逗號(hào)與點(diǎn)號(hào)這兩者之間到底有什么區(qū)別。下面小編就來(lái)詳細(xì)的為大家介紹一下,需要的朋友可以過(guò)來(lái)參考下2013-08-08
php將textarea數(shù)據(jù)提交到mysql出現(xiàn)很多空格的解決方法
這篇文章主要介紹了php將textarea數(shù)據(jù)提交到mysql出現(xiàn)很多空格的解決方法,分析了空格出現(xiàn)的原因以及刪除空格的簡(jiǎn)單實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12
PHP大轉(zhuǎn)盤(pán)中獎(jiǎng)概率算法實(shí)例
這篇文章主要介紹了PHP大轉(zhuǎn)盤(pán)中獎(jiǎng)概率算法,實(shí)例講述了概率算法的實(shí)現(xiàn)過(guò)程,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10
利用瀏覽器的Javascript控制臺(tái)調(diào)試PHP程序
現(xiàn)在,越來(lái)越多的瀏覽器都有了開(kāi)發(fā)這工具或者Javascript控制臺(tái),通過(guò)這些工具,我們可以很方便的顯示PHP代碼中的變量或數(shù)組值2014-01-01
php+redis在實(shí)際項(xiàng)目中HTTP 500: Internal Server Error故障排除
用戶量快速增長(zhǎng),訪問(wèn)量在短時(shí)間內(nèi)翻倍,由于前期容量規(guī)劃做得比較好,硬件資源可以支撐,可是軟件系統(tǒng)方面出現(xiàn)了大問(wèn)題:40% 的請(qǐng)求都會(huì)返回 HTTP 500: Internal Server Error2017-02-02
php中通過(guò)Ajax如何實(shí)現(xiàn)異步文件上傳的代碼實(shí)例
php結(jié)合Ajax技術(shù)如何實(shí)現(xiàn)異步文件上傳 有了file filereader 對(duì)象的支持,異步文件上傳將變得簡(jiǎn)單。(以前都會(huì)把form提交到iframe來(lái)實(shí)現(xiàn))2011-05-05

