0

我正在尝试使用 php 和 html 实现购物车。我遇到的问题是使用会话存储要存储的产品的 ID。以下是我目前拥有的代码:

<?php
session_start();
?>
//There are three HTML Forms that take and display input, and output.

<?php
$_SESSION['cart'] = array();

if(isset($_GET['search'])){
  echo "<table border=1>";
  echo "<th>Product Image</th>";
  echo "<th>Product Name</th>";
  echo "<th>Price</th>";

  foreach($xml->categories->category->items->product as $product){
    $imageURL = $product->images->image[0]->sourceURL;
    $id = $product['id'];
    echo "<tr>";
    echo "<td><a href= 'buy.php?buy=".$id."'><img src=".$imageURL."></img></a></td>";
    echo "<td>".$product->name."</td>";
    echo "<td>".'$'.$product->minPrice."</td>";
  }
}

if(isset($_GET['buy'])){
  $product_id = $_GET['buy'];
  if(isset($_SESSION['cart'])){
    array_push($_SESSION['cart'],$product_id);
  }
}

print_r ($_SESSION);
?>

第一个 if 语句的作用是获取搜索词,并获取最接近的结果。然后它会显示图像、名称和价格。当你点击图片时,会有一个href,它应该被添加到购物车中。这就是第二个 if 语句发挥作用的地方。如果已单击图像,我想获取 id 并将其存储在会话中。单击时它会存储产品的 id,但是当我返回添加另一个项目时,以前的 id 会替换为新的 id。谁能向我解释我哪里出错了?任何帮助将不胜感激。

4

5 回答 5

2

您的问题出在这一行: $_SESSION['cart'] = array();

像这样检查:

if(empty($_SESSION['cart']))
  $_SESSION['cart'] = array();

那应该解决它

于 2013-11-02T23:00:28.967 回答
1

您必须使用数组来存储多个值:

$shop_array= array(); // this is create the array with the name shop_array
// now create the session and assign the shop_array to creating session
$_session['mycart'] = $shop_array;

您可以使用print_r()以下功能检查存储的值:

print_r($_session['mycart']);

您将获得存储 ID 的结果集。

于 2013-11-01T05:55:03.720 回答
1

首先,您必须为您的$_SESSION['cart']分配一个数组。否则它将只存储一个值。

$ids = array();

$_SESSION['cart'] = $ids;

然后它将起作用。

于 2013-11-01T05:46:04.937 回答
0

你能试试这个吗

          if(isset($_GET['buy'])){
                $product_id = $_GET['buy'];       
                  if(!in_array($product_id, $_SESSION['cart'])){
                      $_SESSION['cart'][]=$product_id;
                  }             
             }
于 2013-11-01T06:16:36.143 回答
0

您必须选择存储购物车 - 我个人更喜欢会话的会话和 cookie 尝试使用此代码在会话中存储购物车

if(isset($_POST['item_src']))
{
  $_SESSION['name'][]=$_POST['item_name'];
  $_SESSION['price'][]=$_POST['item_price'];
  $_SESSION['src'][]=$_POST['item_src'];
  echo count($_SESSION['name']);
  exit();
}

在此处创建添加到购物车系统的完整教程http://talkerscode.com/webtricks/simple-add-to-cart-system-using-jquery-ajax-and-php.php

于 2016-03-18T07:44:32.640 回答