繁体   English   中英

多个商品未插入购物车

[英]multiple items are not inserting into cart

我设计了一个购物车系统。 当用户单击添加到购物车时,它将刷新页面,而单击提交后,则仅添加一项。 我尝试一个接一个地添加项目,然后在单击提交后仅添加一个项目。 我在某个地方犯了错误,但我不明白该怎么办? 你能告诉我吗?

代码:Place-Order.php

<?php
session_start();
require_once("dbcontroller.php");
?>
<div class="container">
    <?php
      $db_handle = new DBController();
      if(!empty($_GET["action"])) {
      if(!empty($_POST["quantity"])) {
            $productByCode = $db_handle->runQuery("SELECT * FROM tblproduct WHERE code='" . $_GET["code"] . "'");
            $itemArray = array($productByCode[0]["code"]=>array('name'=>$productByCode[0]["name"], 'code'=>$productByCode[0]["code"], 'quantity'=>$_POST["quantity"], 'price'=>$productByCode[0]["price"]));
            if(!empty($_SESSION["cart_item"])) {
                if(in_array($productByCode[0]["code"],array_keys($_SESSION["cart_item"]))) {
                    foreach($_SESSION["cart_item"] as $k => $v) {
                            if($productByCode[0]["code"] == $k) {
                                if(empty($_SESSION["cart_item"][$k]["quantity"])) {
                                    $_SESSION["cart_item"][$k]["quantity"] = 0;
                                } 
                                $_SESSION["cart_item"][$k]["quantity"] += $_POST["quantity"];
                            }
                    }
                } else {
                    $_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray);
                }
            } else {
                $_SESSION["cart_item"] = $itemArray;
            }
        }
    }
   ?>
 <div id="product-grid">
                                <div class="txt-heading">Products <a id="btnEmpty" href="reviewcart.php"><b>Submit</b></a></div>

                                 <?php
                                     $product_array = $db_handle->runQuery("SELECT * FROM tblproduct ORDER BY id ASC");
                                     if (!empty($product_array)) { 
                                        foreach($product_array as $key=>$value){
                                   ?>
                                   <div class="product-item">
                                        <form method="post" action="place-order.php?action=add&code=<?php echo $product_array[$key]["code"]; ?>">
                                            <div class="product-image"><img src="<?php echo $product_array[$key]["image"]; ?>"></div>
                                            <div><strong><?php echo $product_array[$key]["name"]; ?></strong></div>
                                            <div class="product-price"><?php echo "$".$product_array[$key]["price"]; ?></div>
                                            <div><input type="text" name="quantity" value="1" size="2" /><input type="submit" value="Add to cart" class="btnAddAction" /></div>
                                        </form>
                                    </div>
                                    <?php
                                        }
                                     }
                                    ?>
                                </div>

reviewcart.php

    <?php
 error_reporting(E_ERROR | E_PARSE);
session_start();
require_once("dbcontroller.php");
$db_handle = new DBController();
if(!empty($_GET["action"])) {
switch($_GET["action"]) {
    case "add":
        if(!empty($_POST["quantity"])) {
            $productByCode = $db_handle->runQuery("SELECT * FROM tblproduct WHERE code='" . $_GET["code"] . "'");
            $itemArray = array($productByCode[0]["code"]=>array('name'=>$productByCode[0]["name"], 'code'=>$productByCode[0]["code"], 'quantity'=>$_POST["quantity"], 'price'=>$productByCode[0]["price"]));

            if(!empty($_SESSION["cart_item"])) {
                if(in_array($productByCode[0]["code"],array_keys($_SESSION["cart_item"]))) {
                    foreach($_SESSION["cart_item"] as $k => $v) {
                            if($productByCode[0]["code"] == $k) {
                                if(empty($_SESSION["cart_item"][$k]["quantity"])) {
                                    $_SESSION["cart_item"][$k]["quantity"] = 0;
                                }
                                $_SESSION["cart_item"][$k]["quantity"] += $_POST["quantity"];
                            }
                    }
                } else {
                    $_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray);
                }
            } else {
                $_SESSION["cart_item"] = $itemArray;
            }
        }
    break;

    case "remove":
        if(!empty($_SESSION["cart_item"])) {
            foreach($_SESSION["cart_item"] as $k => $v) {
                    if($_GET["code"] == $k)
                        unset($_SESSION["cart_item"][$k]);              
                    if(empty($_SESSION["cart_item"]))
                        unset($_SESSION["cart_item"]);
            }
        }
    break;
    case "empty":
        unset($_SESSION["cart_item"]);
    break;  
}
}
?>
    <div class="c-layout-sidebar-content ">
        <!-- BEGIN: PAGE CONTENT -->
        <div class="c-content-title-1 c-margin-t-30">
            <h3 class="c-font-uppercase c-font-bold c-center ">Place Order</h3>

            <div class="c-content-panel">

                <div class="c-body">
                    <div class="row">
                        <div class="col-md-12">
                            <table class="table table-condensed">
                               <div id="shopping-cart">
                                 <div class="txt-heading">Shopping Cart <a id="btnEmpty" href="reviewcart.php?action=empty">Empty Cart</a></div>
                                 <?php
                                     if(isset($_SESSION["cart_item"])){
                                        $item_total = 0;
                                    ?>  
                                <table class="col-md-12" cellpadding="10" cellspacing="1" >
                                    <tbody class="col-md-12">
                                        <tr>

                                             <form action="reviewcart.php" method="post">
                                            <th class="col-md-4" style="text-align:center;"><strong>Name</strong></th>
                                            <th class="col-md-4" style="text-align:center;"><strong>Code</strong></th>
                                            <th class="col-md-4" style="text-align:center;"><strong>Quantity</strong></th>

                                            <th class="col-md-3" style="text-align:center;"><strong>Action</strong></th>
                                        </tr>   
                                        <?php       
                                            foreach ($_SESSION["cart_item"] as $item){
                                        ?>
                                        <tr>
                                            <td style="text-align:center;border-bottom:#F0F0F0 1px solid;" >
                                             <strong><?php echo  $item["name"]; ?></strong>
                                             <input type="hidden" name="name" value="<?php echo $item['name']?>">
                                         </td>
                                         <td style="text-align:center;border-bottom:#F0F0F0 1px solid;">
                                             <?php echo  $item["code"]; ?>
                                             <input type="hidden" name="code" value="<?php echo $item['code']?>">
                                            </td>
                                         <td style="text-align:center;border-bottom:#F0F0F0 1px solid;">
                                             <?php echo  $item["quantity"]; ?>
                                             <input type="hidden" name="quantity" value="<?php echo $item['quantity']?>">
                                         </td>
                                         <!-- <td style="text-align:center;border-bottom:#F0F0F0 1px solid;">
                                         <?php  $price=$_POST['price'] ; echo $price ?>
                                         </td> -->
                                         <td style="text-align:center;border-bottom:#F0F0F0 1px solid;">
                                             <a href="reviewcart.php?action=remove&code=<?php echo $item["code"]; ?>" class="btnRemoveAction">
                                              Remove Item
                                             </a>
                                         </td>
                                        </tr>

                                        <!-- <?php
                                            $item_total += ($item["price"]*$item["quantity"]);
                                            }
                                        ?>
 -->
                                        <tr>
                                            <td colspan="5" align=right><input type="submit" name="submit" value="submit" /></td>
                                        </tr></form>

                                    </tbody>
                                </table>        
                                <?php
                                    }
                                ?>
                                </div>

                            </table>
                        </div>
                    </div>

                </div>
            </div>

        </div>
    </div>

为什么不刷新页面呢?

您可以将页面上列出的每个项目都视为一个复选框,然后在提交时,只需将所有复选框中的项目添加到购物车中即可。 显然,无需像复选框那样设计它,只需使其在后端代码中那样工作即可。

然后只要确保每次您提交到购物车或离开页面导航时,它都会首先提交表单(如果它不是空的),然后进行导航。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM