php 购物 商品数量增加 价格增加,PHP购物车用法之更新购物车数量_PHP教程

class Cart { //开始购物车类

function check_item( $table, $session, $product) {

/*

查验物品(表名,session,物品)

*/

$query = SELECT * FROM $table WHERE session=' $session' AND product=' $product' ;

/*

看一看'表'里该'购物车'中有没有该'产品'

即,该产品有没有已经放入购物车

*/

$result = mysql_query( $query);

if(! $result) {

return 0;

}

/*

查询失败

*/

$numRows = mysql_num_rows( $result);

if( $numRows == 0) {

return 0;

/*

若没有找到,则返回0

*/

} else {

$row = mysql_fetch_object( $result);

return $row->quantity;

/*

若找到,则返回该物品数量

这里有必要解释一下mysql_fetch_object函数(下面还会用到):

【mysql_fetch_object() 和 mysql_fetch_array() 类似,只有一点区别 - 返回一个对象而不是数组。】

上面这句话摘自php手册,说得应该很明白了吧~

简单的说就是,取一条记录中的某个字段,应该用“->”而不是像数组一样用下标

*/

}

}

function add_item( $table, $session, $product, $quantity) {

/*

添加新物品(表名,session,物品,数量)

*/

$qty = $this->check_item( $table, $session, $product);

/*

调用上面那个函数,先检查该类物品有没有已经放入车中

*/

if( $qty == 0) {

$query = INSERT INTO $table (session, product, quantity) VALUES ;

$query .= (' $session', ' $product', ' $quantity') ;

mysql_query( $query);

/*若车中没有,则像车中添加该物品*/

} else {

$quantity += $qty; //若有,则在原有基础上增加数量

$query = UPDATE $table SET quantity=' $quantity' WHERE session=' $session' AND ;

$query .= product=' $product' ;

mysql_query( $query);

/*

并修改数据库

*/

}

}

function delete_item( $table, $session, $product) {

/*

删除物品(表名,session,物品)

*/

$query = DELETE FROM $table WHERE session=' $session' AND product=' $product' ;

mysql_query( $query);

/*

删除该购物车中该类物品

*/

}

function modify_quantity( $table, $session, $product, $quantity) {

/*

修改物品数量(表名,session,物品,数量)

*/

$query = UPDATE $table SET quantity=' $quantity' WHERE session=' $session' ;

$query .= AND product=' $product' ;

mysql_query( $query);

/*

将该物品数量修改为参数中的值

*/

}

function clear_cart( $table, $session) {

/*

清空购物车(没什么好说)

*/

$query = DELETE FROM $table WHERE session=' $session' ;

mysql_query( $query);

}

function cart_total( $table, $session) {

/*

车中物品总价

*/

$query = SELECT * FROM $table WHERE session=' $session' ;

$result = mysql_query( $query);

/*

先把车中所有物品取出

*/

if(mysql_num_rows( $result) > 0) {

while( $row = mysql_fetch_object( $result)) {

/*

如果物品数量>0个,则逐个判断价格并计算

*/

$query = SELECT price FROM inventory WHERE product=' $row->product' ;

$invResult = mysql_query( $query);

/*

从inventory(库存)表中查找该物品的价格

*/

$row_price = mysql_fetch_object( $invResult);

$total += ( $row_price->price * $row->quantity);

/*

总价 += 该物品价格 * 该物品数量

( 大家应该能看明白吧:) )

*/

}

}

return $total; //返回总价钱

}

function display_contents( $table, $session) {

/*

获取关于车中所有物品的详细信息

*/

$count = 0;

/*

物品数量计数

注意,该变量不仅仅为了对物品数量进行统计,更重要的是,它将作为返回值数组中的下标,用来区别每一个物品!

*/

$query = SELECT * FROM $table WHERE session=' $session' ORDER BY id ;

$result = mysql_query( $query);

/*

先取出车中所有物品

*/

while( $row = mysql_fetch_object( $result)) {

/*

分别对每一个物品进行取详细信息

*/

$query = SELECT * FROM inventory WHERE product=' $row->product' ;

$result_inv = mysql_query( $query);

/*

从inventory(库存)表中查找该物品的相关信息

*/

$row_inventory = mysql_fetch_object( $result_inv);

$contents[product][ $count] = $row_inventory->product;

$contents[price][ $count] = $row_inventory->price;

$contents[quantity][ $count] = $row->quantity;

$contents[total][ $count] = ( $row_inventory->price * $row->quantity);

$contents[description][ $count] = $row_inventory->description;

/*

把所有关于该物品的详细信息放入 $contents数组

$contents是一个二维数组

第一组下标是区别每个物品各个不同的信息(如物品名,价钱,数量等等)

第二组下标是区别不同的物品(这就是前面定义的 $count变量的作用)

*/

$count++; //物品数量加一(即下一个物品)

}

$total = $this->cart_total( $table, $session);

$contents[final] = $total;

/*

同时调用上面那个cart_total函数,计算下总价钱

并放入 $contents数组中

*/

return $contents;

/*

将该数组返回

*/

}

function num_items( $table, $session) {

/*

返回物品种类总数(也就是说,两个相同的东西算一种 好像是废话- -!)

*/

$query = SELECT * FROM $table WHERE session=' $session' ;

$result = mysql_query( $query);

$num_rows = mysql_num_rows( $result);

return $num_rows;

/*

取出车中所有物品,获取该操作影响的数据库行数,即物品总数(没什么好说的)

*/

}

function quant_items( $table, $session) {

/*

返回所有物品总数(也就是说,两个相同的东西也算两个物品 - -#)

*/

$quant = 0;// 物品总量

$query = SELECT * FROM $table WHERE session=' $session' ;

$result = mysql_query( $query);

while( $row = mysql_fetch_object( $result)) {

/*

把每种物品逐个取出

*/

$quant += $row->quantity; //该物品数量加到总量里去

}

return $quant; //返回总量

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP 中实现更新购物车而不刷新页面的方法通常是使用 AJAX 技术。 AJAX 可以让页面在不刷新的情况下向服务器发送请求,并接收到服务器返回的数据。这样就可以实现在不刷新页面的情况下更新购物车。 下面是一个简单的示例代码: 1. HTML 页面中使用 AJAX 发送请求: ```html <button onclick="updateCart()">更新购物车</button> <script> function updateCart() { var xhr = new XMLHttpRequest(); xhr.open('POST', 'update_cart.php', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { // 更新购物车视图 } }; xhr.send('product_id=123&quantity=2'); // 发送请求参数 } </script> ``` 2. PHP 脚本中处理 AJAX 请求: ```php <?php // 处理更新购物车请求 if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['product_id']) && isset($_POST['quantity'])) { $product_id = $_POST['product_id']; $quantity = $_POST['quantity']; // 更新购物车数据 // ... // 返回更新后的购物车数据 echo json_encode($cart_data); } ?> ``` 在上面的代码中,当用户点击“更新购物车”按钮时,JavaScript 调用了 `updateCart()` 函数,该函数使用 AJAX 发送 POST 请求到 `update_cart.php` 脚本。`update_cart.php` 脚本处理该请求并返回更新后的购物车数据,JavaScript 在接收到响应后更新购物车视图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值