我不断得到这个错误,即使当我查看我的购物车,它列出了项目和价格,然后总价格计算和返回正确的价值。我不知道是什么错误,因为它列出了所有正确的产品名称和它的价格。我知道为什么说它是一个非数字值,因为价格是列出来的,总价是正确加起来的。
<!DOCTYPE html>
<html>
<head>
<title>Cart</title>
</head>
<body>
<?php
session_start();
require_once('connect.php');
include('cartHead.php');
include('cartNav.php');
?>
<div class="container">
<?php
$items = $_SESSION['cart'];
$cartitems = explode(",", $items);
?>
<div class="row">
<table class="table">
<tr>
<th>Item</th>
<th>Item Name</th>
<th>Price</th>
</tr>
<?php
$total = '';
$i=1;
foreach ($cartitems as $key=>$id) {
$sql = "SELECT * FROM products WHERE id = $id";
$res=mysqli_query($connect, $sql);
$r = mysqli_fetch_assoc($res);
?>
<tr>
<td><?php echo $i; ?></td>
<td><a href="delCart.php?remove=<?php echo $key; ?
>">Remove</a> <?php echo $r['title']; ?></td>
<td>$<?php echo $r['price']; ?></td>
</tr>
<?php
$total = $total + $r['price'];
$i++;
}
?>
<tr>
<td><strong>Total Price</strong></td>
<td><strong>$<?php echo $total; ?></strong></td>
<td><a href="#" class="btn btn-info">Checkout</a></td>
</tr>
</table>
</div>
</div>
<?php include('cartFooter.php'); ?>
</body>
</html>
1条答案
按热度按时间3yhwsihp1#
您正在将total初始化为字符串,但您的操作将其视为数字。您可以按如下方式初始化总计:
或者您可以将total转换为int(或您选择的任何类型)
为了验证我的答案,在进行上述修改之前,在示例化total之后添加以下行。
这将给出参数的类型和值。虽然php是一种松散类型的语言,但我会非常小心地将变量从非数字隐式转换为数字(反之亦然)。其中一个问题是,如果字符串所表示的int值大于php\u int\u max,那么在将字符串转换为int时可能会出现感知损失。在代码中表示货币是我强烈建议您研究的另一个主题。