" />

Total price didn't show up in shopping cart in PHP

php mysql

272 просмотра

3 ответа

I have a shopping cart page which the total price didn't show up in the table the products added (picture below). I can't figure out where's the error. I need help, thanks in advance!

enter image description here

Here's my code:

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>';
                   }
               }
           }
       }
  ?>
Автор: znf96 Источник Размещён: 08.11.2019 11:10

Ответы (3)


1 плюс

Решение

If you want to find out the float no from product price, consider using regex. This is the way u could do it

 $productprice = "RM6.90";
 preg_match('/([0-9]+\.[0-9]+)/', $productprice, $matches);
 $floatproductprice = (float)$matches[0];// it will contain the float value

$floatproductprice should be used to calculate the total and also this value should be stored in the database. Also change the type of price details and order total in database to Float or Double.

Автор: coder Размещён: 20.08.2016 11:14

2 плюса

Your product price is RM6.90. Give only numbers to multiply.

Автор: premi Размещён: 20.08.2016 10:52

1 плюс

Your product price appears to have the literal "RM" in it as a suffix. This will cause PHP to abort number processing treating values as zeros.

You must remove non-numeric characters from your strings to make them true numbers. Something like the following may help. Kind of ugly, but simple use.

$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;
}
Автор: Gilbert Размещён: 20.08.2016 11:14
Вопросы из категории :
32x32