繁体中文
设为首页
加入收藏
当前位置:在线教程首页 >> 程序设计 >> PHP >> 技巧篇 >> php购物车

php购物车

2005-06-08 18:45:00  作者:佚名  来源:互联网  浏览次数:2282  文字大小:【】【】【
关键字: c c语言 程序 教程
各位可根据自己需要改一下,最大的特点是只用了一个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    


?>   此文章不能满足您的需求?那就就Google一下吧:)
Google
 

责任编辑:admin


相关文章
 

最新文章

更多

· 初学者头疼问题总结
· PHP4中实现动态代理
· 中文注释的php.ini
· php购物车
· 用PHP写的阴阳万年历
· 超越模板引擎
· PHP4中实现动态代理
· PHP中的XML应用(一)
· PHP中的XML应用(二)
· SSI使用详解(一)

推荐文章

更多

· 初学者头疼问题总结
· PHP4中实现动态代理
· 中文注释的php.ini
· php购物车
· 用PHP写的阴阳万年历
· 超越模板引擎
· PHP4中实现动态代理
· PHP中的XML应用(一)
· PHP中的XML应用(二)
· SSI使用详解(一)

热点文章

更多