PHP购物车类Cart.class.php定义与用法示例

2025-05-29 0 99

本文实例讲述了PHP购物车类Cart.class.php定义与用法。分享给大家供大家参考,具体如下:

之前的开发人员使用了JS的技术开发了一套前台购物车(删除添加什么的都使用JS),但是浏览器兼容不好, 今天终于出问题了, 有个老外购物了产品, 由于使用了不知名的浏览器, chrome, opera…都有可能, 因此, 我多了一份工作, 重写购物车.

不打算再使用JS, 直接考虑php.

找到了一个购物车的类, 使用起来很方便.

Cart.class.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

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184
<?php

/**

* Cart

*

* 购物车类

*

* @author doodoo<pwtitle @yahoo.com.cn="">

* @package Cart

* @category Cart

* @license PHP License

* @access public

* @version $Revision: 1.10 $

*/

Class Cart{

var $cart;

var $totalCount; //商品总数量

var $totalPrices; //商品总金额

/**

* Cart Constructor

*

* 类的构造函数,使购物车保持稳定的初始化状态

*

* @static

* @access public

* @return void 无返回值

* @param void 无参数

*/

function Cart(){

$this->totalCount = 0;

$this->totalPrice = 0;

$this->cart = array();

}

// }}}

// {{{ add($item)

/**

* 增加商品到当前购物车

*

* @access public

* @param array $item 商品信息(一维数组:array(商品ID,商品名称,商品单价,商品数量))

* @return array 返回当前购物车内商品的数组

*/

function add($item){

if(!is_array($item)||is_null($item)) return $this->cart;

if(!is_numeric(end($item))||(!is_numeric(prev($item)))) {

echo "价格和数量必须是数字";

return $this->cart;

}

reset($item); //这一句是必须的,因为上面的判断已经移动了数组的指标

$key = current($item);

if($key=="") return $this->cart;

if($this->_isExists($key)){ //商品是否已经存在?

$this->cart[$key]['count'] = end($item);

return $this->cart;

}

$this->cart[$key]['ID'] = $key;

$this->cart[$key]['name'] = next($item);

$this->cart[$key]['price'] = next($item);

$this->cart[$key]['count'] = next($item);

return $this->cart;

}

// }}}

// {{{ add($item)

/**

* 从当前购物车中取出部分或全部商品

* 当 $key=="" 的时候,清空当前购物车

* 当 $key!=""&&$count=="" 的时候,从当前购物车中拣出商品ID号为 $key 的全部商品

* 当 $key!=""&&$count!="" 的时候,从当前购物车中拣出 $count个 商品ID号为 $key 的商品

*

* @access public

* @param string $key 商品ID

* @return mixed 返回真假或当前购物车内商品的数组

*/

function remove($key="",$count=""){

if($key=="") {

$this->cart = array();

return true;

}

if(!array_key_exists($key,$this->cart)) return false;

if($count==""){ //移去这一类商品

unset($this->cart[$key]);

}else{ //移去$count个商品

$this->cart[$key]['count'] -= $count;

if($this->cart[$key]['count']<=0) unset($this->cart[$key]);

}

return $this->cart;

}

// }}}

// {{{ modi($key,$value)

/**

* 修改购物车内商品ID为 $key 的商品的数量为 $value

*

* @access public

* @param string $key 商品ID

* @param int $value 商品数量

* @return array 返回当前购物车内商品的数组;

*/

function modi($key,$value){

if(!$this->_isExists($key)) return $this->cart(); //不存在此商品,直接返回

if($value<=0){ // value 太小,全部删除

unset($this->cart[$key]);

return $this->cart;

}

$this->cart[$key]['count'] = $value;

return $this->cart;

}

/**

* 返回当前购物车内商品的数组

*

* @access public

* @return array 返回当前购物车内商品的数组;

*/

function getCart(){

return $this->cart;

}

// }}}

// {{{ _isExists($key)

/**

* 判断当前购物车中是否存在商品ID号为$key的商品

*

* @access private

* @param string $key 商品ID

* @return bool true or false;

*/

function _isExists($key)

{

if(isset($this->cart[$key])&&!empty($this->cart[$key])&&array_key_exists($key,$this->cart))

return true;

return false;

}

// }}}

// {{{ isEmpty()

/**

* 判断当前购物车是否为空,即没有任何商品

*

* @access public

* @return bool true or false;

*/

function isEmpty(){

return !count($this->cart);

}

// }}}

// {{{ _stat()

/**

* 取得部分统计信息

*

* @access private

* @return bool true or false;

*/

function _stat(){

if($this->isEmpty()) return false;

foreach($this->cart as $item){

$this->totalCount = @end($item);

$this->totalPrices = @prev($item);

}

return true;

}

// }}}

// {{{ totalPrices()

/**

* 取得当前购物车所有商品的总金额

*

* @access public

* @return float 返回金额;

*/

function totalPrices(){

if($this->_stat())

return $this->totalPrices;

return 0;

}

// }}}

// {{{ isEmpty()

/**

* 取得当前购物车所有商品的总数量和

*

* @access public

* @return int ;

*/

function totalCount(){

if($this->_stat())

return $this->totalCount;

return 0;

}

}//End Class Cart

?>

使用该类的方法:

?

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

31

32

33

34

35

36

37

38

39
<?php

header("Content-type:text/html;charset=utf8");

//调用实例

require_once 'Cart.class.php';

session_start();

if(!isset($_SESSION['cart'])) {

$_SESSION['cart'] = new Cart;

}

$cart =& $_SESSION['cart'];

if( ($_SERVER['REQUEST_METHOD']=="POST")&&($_POST['action']=='add') ){

$p = $_POST['p'];

$items = $cart->add($p);

}

if( ($_GET['action']=='remove')&&($_GET['key']!="") ) {

$items = $cart->remove($_GET['key']);

}

if( ($_SERVER['REQUEST_METHOD']=="POST")&&($_POST['action']=='modi') ){

$key = $_POST['key'];

$value = $_POST['value'];

for($i=0;$i<count ($key);$i="" $items="$cart-" ){="">modi($key[$i],$value[$i]);

}

}

$items = $cart->getCart();

//打印

echo "";

setlocale(LC_MONETARY, 'it_IT');

foreach($items as $item){

echo "";

echo "<table border="1"><tbody><tr><form action="\\&quot;index.php\\&quot;" method="\\" post\\??=""></form><td>ID:".$item['ID']."<input type="hidden" value=".$item['ID']." name="key[]">"; echo "</td><td>产品:".$item['name']; echo "</td><td>单价:".$item['price']; echo "</td><td><input value=".$item['count']." name="value[]">"; $sum = $item['count']*$item['price']; echo "</td><td>合计:".round($sum,2); echo "</td><td><input onclick="\\&quot;location='?action=remove&key=&quot;.$item['ID'].&quot;'\\&quot;" type="button" value="删除">"; } echo "<input type="hidden" value="modi" name="action">"; echo "</td></tr><tr><td colspan="7"><input type="submit" value="提交查询内容">"; echo "</td></tr></tbody></table>";

?>

<hr>

<form action="tmp.php" method="post">

ID:<input name="p[]">

品名:<input name="p[]">

单价:<input name="p[]">

数量:<input name="p[]">

<input type="hidden" value="add" name="action">

<input type="submit" value="提交查询内容">

</form></count>

希望本文所述对大家PHP程序设计有所帮助。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP购物车类Cart.class.php定义与用法示例 https://www.kuaiidc.com/97253.html

相关文章

发表评论
暂无评论