我有一个购物车页面,总价格没有显示在产品添加的表格中(下图)。我无法弄清楚错误在哪里。我需要帮助,提前谢谢!
这是我的代码:
使用example.php
<?php include("dbconnection.php");?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Meal</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>
<body>
<div class="container" style="width:60%;">
<h2 align="center">SoftAOX Tutorial | Creating an Online Shopping Cart in PHP & Mysql</h2>
<?php
$query = "SELECT * FROM meal ORDER BY meal_id ASC";
$result = mysqli_query($con, $query);
if(mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_array($result)) {
?>
<div class="col-md-3">
<form method="post" action="shop.php?action=add&id=<?php echo $row["meal_id"]; ?>">
<div style="border: 1px solid #eaeaec; margin: -1px 19px 3px -1px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); padding:10px;" align="center">
<img src="<?php echo $row["meal_image_Upload"]; ?>" class="img-responsive">
<h5 class="text-info"><?php echo $row["meal_name"]; ?></h5>
<h5 class="text-danger">$ <?php echo $row["meal_price"]; ?></h5>
<input type="text" name="quantity" class="form-control" value="1">
<input type="hidden" name="hidden_name" value="<?php echo $row["meal_name"]; ?>">
<input type="hidden" name="hidden_price" value="<?php echo $row["meal_price"]; ?>">
<input type="submit" name="add" style="margin-top:5px;" class="btn btn-default" value="Add to Bag">
</div>
</form>
</div>
<?php
}
}
?>
<div style="clear:both"></div>
<h2>My Shopping Bag</h2>
<div class="table-responsive">
<table class="table table-bordered">
<tr>
<th width="40%">Product Name</th>
<th width="10%">Quantity</th>
<th width="20%">Price Details</th>
<th width="15%">Order Total</th>
<th width="5%">Action</th>
</tr>
<?php
if(!empty($_SESSION["cart"])) {
$total = 0;
foreach($_SESSION["cart"] as $keys => $values) {
?>
<tr>
<td><?php echo $values["item_name"]; ?></td>
<td><?php echo $values["item_quantity"] ?></td>
<td><?php echo $values["product_price"]; ?></td>
<td><?php echo number_format(($values["item_quantity"] * $values["product_price"]), 2); ?></td>
<td><a href="shop.php?action=delete&id=<?php echo $values["product_id"]; ?>"><span class="text-danger">X</span></a></td>
</tr>
<?php
$total = $total + ($values["item_quantity"] * $values["product_price"]);
}
?>
<tr>
<td colspan="3" align="right">Total</td>
<td align="right"><?php echo number_format($total, 2); ?></td>
<td></td>
</tr>
<?php
}
?>
</table>
</div>
</div>
</body>
</html>
shop.php
<?php
include("dbconnection.php");
if(isset($_POST["add"])) {
if(isset($_SESSION["cart"])) {
$item_array_id = array_column($_SESSION["cart"], "product_id");
if(!in_array($_GET["id"], $item_array_id)) {
$count = count($_SESSION["cart"]);
$item_array = array(
'product_id' => $_GET["id"],
'item_name' => $_POST["hidden_name"],
'product_price' => $_POST["hidden_price"],
'item_quantity' => $_POST["quantity"]
);
$_SESSION["cart"][$count] = $item_array;
echo '<script>window.location="example.php"</script>';
} else {
echo '<script>alert("Products already added to cart")</script>';
echo '<script>window.location="example.php"</script>';
}
} else {
$item_array = array(
'product_id' => $_GET["id"],
'item_name' => $_POST["hidden_name"],
'product_price' => $_POST["hidden_price"],
'item_quantity' => $_POST["quantity"]
);
$_SESSION["cart"][0] = $item_array;
}
}
if(isset($_GET["action"])) {
if($_GET["action"] == "delete") {
foreach($_SESSION["cart"] as $keys => $values) {
if($values["product_id"] == $_GET["id"]) {
unset($_SESSION["cart"][$keys]);
echo '<script>alert("Product has been removed")</script>';
echo '<script>window.location="example.php"</script>';
}
}
}
}
?>
答案 0 :(得分:2)
您的产品价格为RM6.90。只给出数字乘以。
答案 1 :(得分:1)
您的商品价格似乎在文字“RM”中作为后缀。这将导致PHP中止数字处理将值视为零。
您必须从字符串中删除非数字字符才能使其成为真正的数字。像下面这样的东西可能会有所帮助。有点难看,但很简单。
$capture_prefix = ""; #prefix for last number function capture_number( $text ) { global $capture_prefix; $number = preg_replace( '/^[^\d]+/', "", $text ); $capture_prefix = substr( $text, 0, strlen($text) - strlen($number) ); return $number; }
答案 2 :(得分:1)
如果您想从产品价格中找出浮点数,请考虑使用正则表达式。 这就是你可以做到的方式
$productprice = "RM6.90";
preg_match('/([0-9]+\.[0-9]+)/', $productprice, $matches);
$floatproductprice = (float)$matches[0];// it will contain the float value
$ floatproductprice应该用于计算总数以及此值 应该存储在数据库中。还要将数据库中的价格详细信息和订单总数类型更改为Float或Double。