我正在开设e-commerece网站。我正在使用会话作为我购物车系统的一部分。在主要类别/商店页面上,该网站应加载一个类别中的所有项目,除非它已经在他们的购物车中。如果购物车没有设置/是空的,它会自动加载所有商品。
问题是,即使我将一个项目添加到购物车,它仍会显示它。我想出来,由于某种原因,它没有认识到$ _SESSION [' cart']被设置。这特别奇怪,因为使用$ _SESSION [' cart']的自定义购物车类的标题可以正常工作(它显示正确的项目数。
问题可能是什么?
shop.php
<?php
include("header.php");
$catID = $_GET['cat'];
$db = new pdoAccess("localhost","root","");
$items = $db->getItemsByCategory($catID, "stock");
$category = $db->getCategoryName($catID, "categories");
?>
<div id='mainContent'>
<div class='row'>
<h2 class="categoryHeader"> <?php echo $category;?></h2>
</div>
<?php
foreach($items as $item) {
if(!isset($_SESSSION['cart'])) {
echo "<h2>Cart Not Set!</h2><div class='col-sm-4 well'><div class='row'><img class='img-responsive' src='img/items/$item->image'></div><div class='row itemTitle'><a href='item.php?id=$item->id'>$item->name</a></div><div class='row price'>Price: $item->price</div><div class='row condition'>Condition: $item->condition</div> </div>";
} else {
if(array_search($item->id, $_SESSSION['cart']) == false) { // the item is not in the cart
echo "<h2>" . $_SESSSION['cart'] . "</h2>";
echo "<div class='col-sm-4 well'><div class='row'><img class='img-responsive' src='img/items/$item->image'></div><div class='row itemTitle'><a href='item.php?id=$item->id'>$item->name</a></div><div class='row price'>Price: $item->price</div><div class='row condition'>Condition: $item->condition</div> </div>";
}
}
}
?>
</div>
<?php
include("footer.php");
?>
addCart.php
<?php
include("header.php");
$itemID = $_GET['itemID'];
$catID = $_GET['catID'];
if(isset($_SESSION['cart'])) {
array_push($_SESSION['cart'], $itemID);
} else {
$_SESSION['cart'] = array($itemID);
}
?>
<a href="shop.php?cat=<?php echo $catID; ?>">Continue Shopping?</a>
<a href="cart.php">Checkout</a>
item.php
<?php
include("header.php");
$itemID = $_GET['id'];
$db = new pdoAccess("localhost","root","");
$item = $db->getItemDetails($itemID, "stock");
$category = $db->getCategoryName($item->category, "categories");
?>
<div id='mainContent'>
<div class='row'>
<h2 class="itemHeader"> <?php echo $item->name; ?> </h2>
</div>
<div class="row">
<div class='col-md-6'>
<img class='img-responsive' src="img/items/<?php echo $item->image;?>">
</div>
<div class='well col-md-6'><ul><li>Platform: <?php echo $category; ?> </li>
<li>Condition: <?php echo $item->condition; ?></li>
<li>Price: <?php echo $item->price; ?></li>
<//ul>
</div>
</div>
<div class="row">
<div class="col-md-8">
<p><?php echo $item->description; ?></p>
</div>
<div class="col-md-4">
<form action="addCart.php" method='get'>
<input type='hidden' name='itemID' value="<?php echo $item->id;?>" />
<input type='hidden' name='catID' value="<?php echo $category;?>" />
<input type='submit' class="addToCart" value="Add to Cart">
</form>
</div>
</div>
<?php
include("footer.php");
?>
的header.php
<?php
session_start();
include("pdo.php");
$cart = new cart();
$itemCount = $cart->getItemCount();
?>
<!doctype html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="scripts/main.js" /></script>
<script src="http://code.jquery.com/jquery-1.12.3.min.js" integrity="sha256-aaODHAgvwQW1bFOGXMeX+pC4PZIPsvn2h1sArYOhgXQ=" crossorigin="anonymous"></script>
<script src="scripts/bootstrap.js" /></script>
<link href="styles/bootstrap.css" rel="stylesheet" type="text/css" />
<link href="styles/base.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="container">
<!-- Begin Header -->
<header>
<nav class='navbar navbar-inverse'>
<div class='navbar-header'>
<button class='navbar-toggle' data-toggle='collapse' data-target='headerNav'>
<span class='glyphicon glyphicon-plus-sign' />
</button>
<a class='navbar-brand' href='index.php'><img class='img-responsive' src='logo.png' /></a>
</div>
<div class='collapse navbar-collapse' id='headerNav'>
<ul class='nav navbar-nav'>
<li class='dropdown'>
<a class='dropdown-toggle' data-toggle="dropdown" href="#">Console<span class='glyphicon glyphicon-plus'></span></a>
<ul class='dropdown-menu'>
<li><a href="shop.php?cat=1">Playstation</a></li>
<li><a href="shop.php?cat=2">Wii</a></li>
<li><a href="shop.php?cat=3">Gamecube</a></li>
<li><a href="shop.php?cat=4">N64</a></li>
<li><a href="shop.php?cat=5">Other</a></li>
</ul>
</li>
<li class='dropdown'>
<a class='dropdown-toggle' data-toggle="dropdown" href="#">Portable<span class='glyphicon glyphicon-plus'></span></a>
<ul class='dropdown-menu'>
<li><a href="shop.php?cat=6">Nintendo DS</a></li>
<li><a href="shop.php?cat=7">GB/GBC/GBA</a></li>
<li><a href="shop.php?cat=8">Other</a></li>
</ul>
</li>
<li><a href="shop.php?cat=9">Videos</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="cart.php">Cart</a> (<?php if($itemCount >= 1) {echo $itemCount;} else {echo "0";} ?> )</li>
<li><a href="contact.php">Contact</a></li>
</ul>
</div>
</nav>
</header>
...和购物车类:
class cart {
public $items = array();
function __construct() {
$pdo = new pdoAccess("localhost","root","");
$counter = 0;
if (isset($_SESSION['cart'])) { foreach($_SESSION['cart'] as $item) {
$items[$counter] = $pdo->getItemDetails($item, "items");
$counter++;
}
}
}
public function emptyCart() {
session_unset();
session_destroy();
}
public function removeItem($itemID) {
$index = array_search($itemID, $_SESSION['cart']);
unset($_SESSION['cart'][$index]);
}
public function getItemCount() {
if(isset($_SESSION['cart'])) {
return count($_SESSION['cart']);
} else {
return 0;
}
}
public function getSubtotal() {
$total = 0;
foreach($items as $item) {
$total += $item->price;
}
return $total;
}
public function getDiscount() {
$sub = $this->getSubtotal();
if($this->getItemCount >= 2) {
$discount = $sub * .1;
} else {
$discount = 0;
}
return $discount;
}
public function getTotal() {
$sub = $this->getSubtotal;
if($this->getItemCount >= 2) {
$sub +- $this->getDiscount;
}
$total = $sub + SHIPPING;
return $total;
}
}
我将不胜感激任何帮助。提前谢谢!