2014-03-03 166 views
1

我试图做一个简单的MSSQL和PHP的购物车,我的网站。页面index.php正确地从我的MSSQL products表中检索产品并显示它们。对于显示的每个产品,都有一个Add to Cart按钮。该按钮应使用$_SESSION通过cart_update.php页面将添加的产品存储到购物车中。添加到购物车的产品应显示在index.php页面的底部。目前,当Add to Cart按钮被击中时,没有产品被添加到购物车。我不确定为什么会发生这种情况。PHP和SQL的购物车是不是将产品添加到购物车

这是我index.php页面代码:

<?php 
session_start(); 
include_once("config.php"); 
?> 
<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 
</head> 

<body> 
<div class="products"> 
<?php 
//current URL of the Page. cart_update.php redirects back to this URL 
$current_url = base64_encode("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); 
    $query = "SELECT * FROM products ORDER BY id ASC"; 
    $results = mssql_query($query, $mysqli); 
    if ($results) { 
     //output results from database 
     while($obj = mssql_fetch_object($results)) 
     { 

      echo '<div class="product">'; 
      echo '<form method="post" action="cart_update.php">'; 
      echo '<div class="product-thumb"><img src="images/'.$obj->product_img_name.'"></div>'; 
      echo '<div class="product-content"><h3>'.$obj->product_name.'</h3>'; 
      echo '<div class="product-desc">'.$obj->product_desc.'</div>'; 
      echo '<div class="product-info">Price '.$currency.$obj->price.' <button class="add_to_cart">Add To Cart</button></div>'; 
      echo '</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> 
<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_update.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="view_cart.php">Check-out!</a></span>'; 
    echo '<span class="empty-cart"><a href="cart_update.php?emptycart=1&return_url='.$current_url.'">Empty Cart</a></span>'; 
}else{ 
    echo 'Your Cart is empty'; 
} 
?> 
</div> 
</body> 
</html> 

这里是我的cart_update.php页面代码:

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 
</head> 

<body> 
<?php 
session_start(); //start session 
include_once("config.php"); //include config file 

//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>'); 
    } 
    $query = "SELECT product_name,price FROM products WHERE product_code='$product_code' LIMIT 1"; 
    //MySqli query - get details of item from db using product code 
    $results = mssql_query($query, $mysqli); 
    $obj = mssql_fetch_object($results); 

    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->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); 
} 
?> 
</body> 
</html> 

感谢您的任何帮助。所有的帮助非常感谢。

+2

我会添加一些调试代码到你的'cart_update.php'代码,看看,如果你正确地获取信息。就像'$ obj = mssql_fetch_object($ results);'add'print_r($ obj);死();'看看你得到了什么。 – Pitchinnate

回答

1

将产品添加到购物车中我曾在cart_update.php页面更改查询其中

$query = "SELECT product_name,price FROM products WHERE product_code='$product_code LIMIT 1'"; 

$query = "SELECT TOP 1 product_name,price FROM products WHERE product_code='$product_code'"; 

这是因为LIMIT没有在SQL Server中工作,而相当于TOP

+1

很好的答案在这里... – paqogomez

相关问题