第一个产品未在会话中添加

时间:2014-08-11 09:02:45

标签: php

嗨,我创建了一个简单的php购物车应用程序,其中项目最初显示,当用户点击添加到购物车时,它被添加到购物车。问题是除了第一个产品一切都添加到购物车。第一个产品单独在添加时显示错误。 任何人都可以帮助我尽快解决这个问题 这是我的代码 我的chooseproduct.php

<div class="products">
<?php

include "config.php";
    //current URL of the Page. cart_update.php redirects back to this URL
 $current_url = base64_encode($url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
$query3 = $mysqli->query("SELECT * FROM `catalouge` where subcat_id='$subcat_id'");

if ($query3) { 
while($obj = $query3->fetch_object())
    {




        echo '<div class="product">'; 
        echo '<form method="post" action="cart_update3.php">';
        echo '<div class="product-thumb"><a href=product_view.php?product_code='.$obj->product_code.'><img src="admin/'.$obj->product_image.'"></a></div>';
        echo '<div class="product-content"><h3>'.$obj->product_name.'</h3>';
         echo '<div class="product-desc">'.$obj->description.'</div>';
        echo '<div class="product-info">';
        echo 'Price '.$currency.$obj->product_price.' | ';
        echo 'Qty <input type="text" name="product_qty" value="1" size="3" />';
        echo '<button class="add_to_cart">Add To Cart</button>';
        echo '</div></div>';
        echo '<input type="hidden" name="product_code" value="'.$obj->product_code.'" />';
        echo '<input type="hidden" name="type" value="add" />';
        echo '<input type="hidden" name="return_url" value="'.$current_url.'" />';
        echo '</form>';
        echo '</div>';
    }

}
?>

<div class="shopping-cart">
<h2>Your Shopping Cart</h2>
<?php
 if(isset($_SESSION["products"]))
 {
$total = 0;
echo '<ol>';
foreach ($_SESSION["products"] as $cart_itm)
{
    echo '<li class="cart-itm">';
    echo '<span class="remove-itm"><a href="cart_update3.php?removep='.$cart_itm["code"].'&return_url='.$current_url.'">&times;</a></span>';
    echo '<h3>'.$cart_itm["name"].'</h3>';
    echo '<div class="p-code">P code : '.$cart_itm["code"].'</div>';
    echo '<div class="p-qty">Qty : '.$cart_itm["qty"].'</div>';
    echo '<div class="p-price">Price :'.$currency.$cart_itm["price"].'</div>';
    echo '</li>';
    $subtotal = ($cart_itm["price"]*$cart_itm["qty"]);
    $total = ($total + $subtotal);
}
echo '</ol>';
echo '<span class="check-out-txt"><strong>Total : '.$currency.$total.'</strong> <a href="viewcart.php">Check-out!</a></span>';
echo '<span class="empty-cart"><a href="cart_update3.php?    emptycart=1&return_url='.$current_url.'">Empty Cart</a></span>';
 }else{
   echo 'Your Cart is empty';
   }
  ?>
 </div>

  </div>

cart_update3.php

  <?php
  session_start();
  include_once("config.php");

 //empty cart by distroying current session
 if(isset($_GET["emptycart"]) && $_GET["emptycart"]==1)
 {
$return_url = base64_decode($_GET["return_url"]); //return url
session_destroy();
header('Location:'.$return_url);
  }

//add item in shopping cart
   if(isset($_POST["type"]) && $_POST["type"]=='add')
     {
   $product_code    = filter_var($_POST["product_code"], FILTER_SANITIZE_STRING);     //product code
$product_qty    = filter_var($_POST["product_qty"], FILTER_SANITIZE_NUMBER_INT); //product code
$return_url     = base64_decode($_POST["return_url"]); //return url

//limit quantity for single product
if($product_qty > 10){
    die('<div align="center">This demo does not allowed more than 10 quantity!<br /><a href="http://sanwebe.com/assets/paypal-shopping-cart-integration/">Back To Products</a>.</div>');
}

//MySqli query - get details of item from db using product code
$results = $mysqli->query("SELECT product_name,product_price FROM catalouge WHERE product_code='$product_code LIMIT 1'");
$obj = $results->fetch_object();

if ($results) { //we have the product info 

    //prepare array for the session variable
    $new_product = array(array('name'=>$obj->product_name, 'code'=>$product_code, 'qty'=>$product_qty, 'price'=>$obj->product_price));

    if(isset($_SESSION["products"])) //if we have the session
    {
        $found = false; //set found item to false

        foreach ($_SESSION["products"] as $cart_itm) //loop through session array
        {
            if($cart_itm["code"] == $product_code){ //the item exist in array

                $product[] = array('name'=>$cart_itm["name"],      'code'=>$cart_itm["code"], 'qty'=>$product_qty, 'price'=>$cart_itm["price"]);
                $found = true;
            }else{
                //item doesn't exist in the list, just retrive old info and prepare array for session var
                $product[] = array('name'=>$cart_itm["name"], 'code'=>$cart_itm["code"], 'qty'=>$cart_itm["qty"], 'price'=>$cart_itm["price"]);
            }
        }

        if($found == false) //we didn't find item in array
        {
            //add new user item in array
            $_SESSION["products"] = array_merge($product, $new_product);
        }else{
            //found user item in array list, and increased the quantity
            $_SESSION["products"] = $product;
        }

    }else{
        //create a new session var if does not exist
        $_SESSION["products"] = $new_product;
    }

}

//redirect back to original page
header('Location:'.$return_url);

}

  //remove item from shopping cart
if(isset($_GET["removep"]) && isset($_GET["return_url"]) &&   isset($_SESSION["products"]))
{
$product_code   = $_GET["removep"]; //get the product code to remove
$return_url     = base64_decode($_GET["return_url"]); //get return url


foreach ($_SESSION["products"] as $cart_itm) //loop through session array var
{
    if($cart_itm["code"]!=$product_code){ //item does,t exist in the list
        $product[] = array('name'=>$cart_itm["name"], 'code'=>$cart_itm["code"], 'qty'=>$cart_itm["qty"], 'price'=>$cart_itm["price"]);
    }

    //create a new product list for cart
    $_SESSION["products"] = $product;
}

//redirect back to original page
header('Location:'.$return_url);
}
?>

1 个答案:

答案 0 :(得分:0)

您好,该页面没有显示任何错误。但是从数据库中取出的第一个产品没有添加到购物车中。除了第一个产品都在添加