PHP电商购物车页面如何计算获取Grand total总计金额
购物车Grand Total(总计金额)实现方案
核心实现逻辑非常简单:在遍历购物车商品的循环前初始化总计变量,每算出单个商品的小计金额就累加到总计变量中,循环结束后在表格底部输出总计值即可。
你现有代码还有两处HTML结构问题需要同步修复,否则页面渲染会异常:
<tbody>标签被放在了循环内部,会生成多个无效的tbody节点,需要移到循环外层<form>标签未闭合,且标签嵌套位置不符合HTML规范,需要补充闭合标签
修正后完整代码
<?php // 初始化总计金额变量 $grand_total = 0; // 安全提示:当前SQL语句直接拼接会话参数存在SQL注入风险,生产环境请改用mysqli预处理语句实现查询 $query = mysqli_query($conn,"select * from cart where usr_id = '".$_SESSION['id']."'"); ?> <tbody> <?php while($row=mysqli_fetch_array($query)) { $per_price = $row['price']; $per_quantity = $row['quantity']; $total_amount = $per_price * $per_quantity; // 将当前商品小计累加到总计 $grand_total += $total_amount; ?> <tr> <td><?php echo $row['name']?></td> <td>RM <?php echo $row['price']?></td> <form class="no-margin" method="post"> <td><input class="form-1" type="number" name="quantity" value="<?php echo $per_quantity?>"></td> <td>RM <?php echo $total_amount?></td> </form> </tr> <?php } ?> <!-- 总计展示行 --> <tr> <td colspan="3" align="right"><strong>Grand Total(总计):</strong></td> <td><strong>RM <?php echo number_format($grand_total,2); ?></strong></td> </tr> </tbody>
补充说明
- 总计行的
colspan="3"是合并前3列单元格,让总计文字右对齐后和金额列对应,你可以根据自己表格实际的列数调整这个值 - 用
number_format($grand_total,2)是为了格式化金额为2位小数,符合货币展示规范 - 如果需要实现用户修改商品数量时无刷新实时更新总计,可以给数量输入框绑定JS事件,前端遍历所有单品小计重新求和即可,上述代码是页面加载阶段的后端计算逻辑。
内容的提问来源于stack exchange,提问作者John Thanaraaj
相关产品推荐
相关产品推荐

