2016-08-20 29 views
0

商品が追加された表に合計金額が表示されないショッピングカートページがあります(下の画像)。私はどこにエラーがあるのか​​分からない。私は助けが必要です、事前に感謝!合計金額がPHPのショッピングカートに表示されません

enter image description here

ここに私のコードです:

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

私のansを確認し、それが役に立たないかどうか確認してください – coder

答えて

1

float noを製品価格から調べる場合は、regexの使用を検討してください。 これは、uは

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

の$ floatproductpriceは、合計を計算するために使用する必要があり、また、この値 をデータベースに格納する必要が行うことができます方法です。また、価格の詳細のタイプを変更し、データベースの注文合計をFloatまたはDoubleに変更します。

+0

ありがとう、私はアイデアを得るが、私は "テキスト"として製品の価格属性を設定したので、データベースから製品価格が取得されているときにこれを適用する方法がかなりぼやけている。申し訳ありませんが、私はまだ学んでおり、これは私の最終年度のプロジェクトです。 – znf96

+0

@ znf96、私は私のansを編集しました。これが、疑問を解決することを願っています。 – coder

+0

ありがとう!それは助け:) @コーダー – znf96

2

あなたの製品価格はRM6.90です。数字だけを掛ける。

+0

申し訳ありませんが、それはどういう意味ですか? @premi – znf96

+0

@ znf96、彼はRM6.90が文字列で、文字列を乗算できないと伝えています – coder

+0

@coder申し訳ありません、ありがとう! – znf96

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; 
} 
+0

さらに優れています:印刷する値の前に挿入できるように接尾辞を覚えておいてください。 – Gilbert

+0

これは、データベースの価格属性を「テキスト」として設定し、「RM」がデータベースから取得されたためです。属性タイプを変更する代わりに、PHPコードを変更することができる他の方法はありますか? @Gilbert – znf96

+0

サンプル関数を含むように編集された答え。 – Gilbert

関連する問題