• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    貼個購物車的類,只用了一個Session

    發布: 2007-7-14 19:53 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 8次 | 進入軟件測試論壇討論

    領測軟件測試網 各位可根據自己需要改一下,最大的特點是只用了一個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  
    }

    ?> 

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>