首頁 > php教程 > PHP源码 > PHP+MYSQL+SESSION实现简单购物车功能

PHP+MYSQL+SESSION实现简单购物车功能

PHP中文网
發布: 2016-05-25 17:13:28
原創
1440 人瀏覽過

1[PHP]代码               

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

/**

 * 函数:addGoods

 * 功能:将物品放入购物车[SESSION]中

 * 简介:将指定物品信息$goods存入指定名$cartName的购物车中,默认在物品信息首部附加“购物车物品序号”$skey

 * 时间:2011年7月28日 23:51:40

 * 作者:zhjp

 * Enter description here ...

 * 待完善项:在存入购物车之前先进行判断所选物品是否已经存在,是:只修改购买数量、否:存入购物车

 * @param String $cartName

 * @param String $goodsStr

 */ 

public function addGoods($cartName, $goodsStr){ 

    $skey=count($_SESSION[$cartName]); 

    //处理物品信息 

    $goodsStr=$skey.','.$goodsStr

    switch ($cartName){ 

        case 'flyCart': 

            break

        case 'mallCart': 

            //配置物品字段,返回可读性更强的数组格式的物品信息 

            $goodsArr=$this->_setGoodsFields($goodsStr); 

            break

        case 'hotelCart': 

            break

    

    //物品存入购物车 

    $_SESSION[$cartName][$skey]=$goodsArr

    //更新购物车信息 

    $this->_updateCart($cartName); 

}

登入後複製

2. [PHP]代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

/**

 * 函数:delGoods

 * 功能:删除购物车[SESSION]中的某一物品

 * 简介:根据提供的购物车名$cartName及指定购物车物品序号$skey将该物品记录置空值

 * 时间:2011年7月30日 23:00:59

 * 作者:by zhjp

 * Enter description here ...

 * @param String $cartName

 * @param Int $skey

 */ 

public function delGoods($cartName, $skey){ 

    if(!isset($_SESSION[$cartName])){ return ; } 

    if($_SESSION[$cartName]['ITEMS']==1){ 

    //  $this->clearAll($cartName); 

    }else

        //删除指定物品 

        $_SESSION[$cartName][$skey]=null; 

    

    //更新购物车信息 

    $this->_updateCart($cartName); 

   

}

登入後複製

3.[PHP]代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

/**

 * 函数:clearAll

 * 功能:清空购物车中的所有物品信息

 * 简介:根据提供的购物车名$cartName将该购物车清空

 * 时间:2011年7月30日 23:07:21

 * 作者:by zhjp

 * Enter description here ...

 * @param String $cartName

 */ 

public function clearAll($cartName){ 

    if(isset($_SESSION[$cartName])){  

        unset($_SESSION[$cartName]); 

    }else

        return

    

}

登入後複製

4. [PHP]代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

/**

     * 函数:editCart

     * 功能:编辑购物车信息[物品购物数量+1-1]

     * 简介:根据提供的购物车名$cartName及操作名$action结合指定购物车物品序号$skey对指定物品的购买数量进行+1-1操作

     * 时间:2011年7月30日 23:09:27

     * 作者:by zhjp

     * Enter description here ...

     * @param String $cartName

     * @param String $action[plus+][minus-]

     * @param Int $skey

     */ 

    public function editCart($cartName, $action, $skey){ 

        if(!isset($_SESSION[$cartName])){return ;} 

        switch ($action){ 

            case 'plus': 

                $this->_plusOne($cartName, $skey); 

                break

            case 'minus': 

                $this->_minusOne($cartName, $skey); 

                break

        

        //更新购物车信息 

        $this->_updateCart($cartName); 

    }

登入後複製

5. [PHP]代码

1

2

3

4

5

6

7

8

9

10

11

/**

     * 函数:searchGoods

     * 功能:查找购物车物品信息

     * 简介:可供添加物品操作调用,如果所添加物品已存在则购物数量+1,反之将物品存入购物车

     * 时间:2011年8月1日19:14:23

     * 作者:by zhjp

     * Enter description here ...

     */ 

    public function searchGoods(){ 

   

    }

登入後複製

6. [PHP]代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

/**

     * 函数:getCartInfo

     * 功能:获取购物车基本信息【二维数组格式呈现TDArr】

     * 简介:将购物车中的基本信息数据转化成二维数组【总项目items】【总数量total】【总金额money】

     * 时间:2011年7月30日 23:14:20

     * 作者:by zhjp

     * Enter description here ...

     * @param String $cartName

     */ 

    public function getCartInfo($cartName){ 

        if(!isset($_SESSION[$cartName])){return ;} 

        $infoArr=array(); 

        if(isset($_SESSION[$cartName])){ 

            $items=$_SESSION[$cartName]['ITEMS']; 

            $total=$_SESSION[$cartName]['TOTAL']; 

            $money=$_SESSION[$cartName]['MONEY']; 

            $infoArr=array('ITEMS'=>$items,'TOTAL'=>$total,'MONEY'=>$money); 

        }else

            unset($infoArr); 

        

        return $infoArr

    }

登入後複製

7. [PHP]代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

/**

     * 函数:getCartList

     * 功能:获取购物车所有的商品数据【二维数组格式呈现TDArr】

     * 简介:将购物车中的全部商品数据转化成二维数组,不带HTML代码符

     * 时间:2011年7月28日 23:56:38

     * 作者:zhjp

     * Enter description here ...

     * @param String $cartName

     */ 

    public function getCartList($cartName){ 

   

        if(isset($_SESSION[$cartName])){ 

            $allGoodsTDArr=array(); 

            foreach ($_SESSION[$cartName] as $k=>$v){ 

                if(is_array($v)){ 

                    $allGoodsTDArr[]=$v

                

            

        

        return $allGoodsTDArr

    }

登入後複製

8. [PHP]代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

/**

     * 函数:_setGoodsFields

     * 功能:配置物品字段,将一条物品记录字符串转化成有相应字段名的数组

     * 简介:

     * 0   1  2    3    4      5     6

     * key id code name extend price numb money

     * 其中key为购物车商品记录对应的SESSION数组key

     * 时间:2011年7月28日 23:27:59

     * 作者:by zhjp

     * Enter description here ...

     * @param unknown_type $goodsStr

     */ 

    private function _setGoodsFields($goodsStr){ 

        //id,code,name,extend,price 

        $str2Arr=split(',', $goodsStr); 

        $goodsArr=array

            'key'=>$str2Arr[0], 

            'id'=>$str2Arr[1], 

            'code'=>$str2Arr[2], 

            'name'=>$str2Arr[3], 

            'extend'=>$str2Arr[4], 

            'price'=>$str2Arr[5], 

            'numb'=>$str2Arr[6], 

            'money'=>number_format($str2Arr[5]*$str2Arr[6],2)); 

        return $goodsArr

    }

登入後複製

9. [PHP]代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

/**

     * 函数:_plusOne

     * 功能:将物品的购买数量+1

     * 简介:根据提供的购物车物品序号$skey将指定的商品数量+1

     * 时间:2011年7月30日 23:24:26

     * 作者:by zhjp

     * Enter description here ...

     * @param String $cartName

     * @param Int $skey

     */ 

    private function _plusOne($cartName, $skey){ 

        if(!isset($_SESSION[$cartName])){ return ;} 

        //指定物品购买数量+1 

        $_SESSION[$cartName][$skey]['numb']+=1; 

        //更新小计金额 

        $price=$_SESSION[$cartName][$skey]['price']; 

        $numb=$_SESSION[$cartName][$skey]['numb']; 

        $_SESSION[$cartName][$skey]['money']=number_format($price*$numb,2); 

        //更新购物车信息 

        $this->_updateCart($cartName); 

    }

登入後複製

10. [PHP]代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

/**

     * 函数:_minusOne

     * 功能:将物品的购买数量-1

     * 简介:根据提供的购物车物品序号$skey将指定的商品数量-1

     * 时间:2011年7月30日 23:27:19

     * 作者:by zhjp

     * Enter description here ...

     * @param unknown_type $cartName

     * @param unknown_type $skey

     */ 

    private function _minusOne($cartName, $skey){ 

        if(!isset($_SESSION[$cartName])){ return ;} 

        //指定物品购买数量-1 

        if($_SESSION[$cartName][$skey]['numb']>1){ 

            $_SESSION[$cartName][$skey]['numb']-=1; 

            //更新小计金额 

            $price=$_SESSION[$cartName][$skey]['price']; 

            $numb=$_SESSION[$cartName][$skey]['numb']; 

            $_SESSION[$cartName][$skey]['money']=number_format($price*$numb,2); 

        

        //更新购物车信息 

        $this->_updateCart($cartName); 

    }

登入後複製

11. [PHP]代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

/**

     * 函数:_countMoney

     * 功能:统计购物车物品总金额

     * 简介:总金额[MONEY]

     * 时间:2011年7月31日 03:17:52

     * 作者:by zhjp

     * Enter description here ...

     * @param String $cartName

     */ 

    private function _countMoney($cartName){ 

        if(!isset($_SESSION[$cartName])){ return ;} 

        $count=0.0; 

        switch ($cartName){ 

            case 'flyCart': 

                break

            case 'mallCart': 

                $cartList=$this->getCartList($cartName); 

                foreach ($cartList as $k=>$v){ 

                    $count+=$v['money']; 

                

                $_SESSION[$cartName]['MONEY']=number_format($count,2); 

                break

            case 'hotelCart': 

                break

        

    }

登入後複製

12. [PHP]代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

/**

     * 函数:_countItems

     * 功能:统计购物车物品总项目

     * 简介:总项目[ITEMS]

     * 时间:2011年7月31日 03:23:20

     * 作者:by zhjp

     * Enter description here ...

     * @param String $cartName

     */ 

    private function _countItems($cartName){ 

        if(!isset($_SESSION[$cartName])){ return ;} 

        $count=0; 

        switch ($cartName){ 

            case 'flyCart': 

                break

            case 'mallCart': 

                $cartList=$this->getCartList($cartName); 

                foreach ($cartList as $k=>$v){ 

                    if(is_array($v)){ 

                        $count++; 

                    

                

                $_SESSION[$cartName]['ITEMS']=$count

                break

            case 'hotelCart': 

                break

        

    }

登入後複製

13. [PHP]代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

/**

     * 函数:_countTotal

     * 功能:统计购物车物品总数量

     * 简介:总数量[TOTAL]

     * 时间:2011年7月31日 03:27:11

     * 作者:by zhjp

     * Enter description here ...

     * @param String $cartName

     */ 

    private function _countTotal($cartName){ 

        if(!isset($_SESSION[$cartName])){ return ;} 

        $count=0; 

        switch ($cartName){ 

            case 'flyCart': 

                break

            case 'mallCart': 

                $cartList=$this->getCartList($cartName); 

                foreach ($cartList as $k=>$v){ 

                    $count+=$v['numb']; 

                

                $_SESSION[$cartName]['TOTAL']=$count

                break

            case 'hotelCart': 

                break

        

    }

登入後複製

14. [PHP]代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

/**

     * 函数:_updateCart

     * 功能:更新统计购物车基本信息

     * 简介:重新统计购物车基本信息【总项目ITEMS/总金额MONEY/总数量TOTAL]

     * 时间:2011年7月31日 03:31:18

     * 作者:by zhjp

     * Enter description here ...

     * @param String $cartName

     */ 

    private function _updateCart($cartName){ 

        $this->_countItems($cartName); 

        $this->_countMoney($cartName); 

        $this->_countTotal($cartName); 

    }

登入後複製

15. [代码]数据表语句

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

/* 

Source Host           : localhost:3306 

Source Database       : db_xiaohan 

Target Server Type    : MYSQL 

Date: 2011-08-05 08:46:10 

*/ 

SET FOREIGN_KEY_CHECKS=0; 

-- ---------------------------- 

-- Table structure for `ixh_mallgoods` 

-- ---------------------------- 

DROP TABLE IF EXISTS `ixh_mallgoods`; 

CREATE TABLE `ixh_mallgoods` ( 

  `id` int(11) NOT NULL AUTO_INCREMENT, 

  `code` varchar(255) DEFAULT NULL

  `name` varchar(255) DEFAULT NULL

  `extend` varchar(255) DEFAULT NULL

  `price` float DEFAULT NULL

  PRIMARY KEY (`id`) 

) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; 

-- ---------------------------- 

-- Records of ixh_mallgoods 

-- ---------------------------- 

INSERT INTO ixh_mallgoods VALUES ('1', 'CLELE-GS1001', '商品一', '小尺寸', '22.5');

登入後複製

                   


                   

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板