簡體   English   中英

PHP購物車僅列出一項

[英]PHP Shopping Cart list only one item

我正在從事在線商店項目。 在我的代碼中,購物車只會列出1個項目。 例如,當我單擊“ iphone 5s”下的“添加到購物車”按鈕時,它將跳到購物車並向我顯示1個數量的iphone 5s。 但是,當我再按一次Samsung時,它將覆蓋Iphone 5s,僅向我顯示Samsung。

這是產品的代碼:

<div>
    <image src="ip5s.jpg">
    <p><font color="blue">&nbsp&nbspIphone 5S</font></p>
    <p><font color="red">&nbsp&nbspRM1999</font></p>
    <p><form name="addcart" method="post" action="processcart.php">
        <input type="submit" name="addtocart" value="Add to cart" >
        <input type="hidden" name="product_id" value="1234" />
        <input type="hidden" name="quantity" value="1" />
    </form>
</p>
</div>
&nbsp&nbsp
<div >
    <image src="s4.png">
    <p><font color="blue">&nbsp&nbspSamsung Galaxy S4</font></p>
    <p><font color="red">&nbsp&nbspRM1999</font></p>
    <p><form name="addcart" method="post" action="processcart.php" >
        <input type="submit" name="addtocart" value="Add to cart">
        <input type="hidden" name="product_id" value="1235" />
        <input type="hidden" name="quantity" value="1" />
    </form>
</p>
</div>

這是processcart.php:

<?php
 session_start(); 
 include_once("config.php"); 
 $_SESSION['pid']=$_POST['product_id'];
 $_SESSION['qty']+=$_POST['quantity'];
 $_SESSION['cart']=true;
 sleep(2);
 echo "Add to cart successful";
 header("refresh:1;url=cart.php");
 exit();
 ?>

這是cart.php:

<?php

if (!isset($_SESSION['cart']))
    echo "<p>Your shopping cart is empty!</p>";
elseif (isset($_SESSION['cart'])) {
    define("DB_HOST", "localhost");
    define("DB_NAME", "onlinestore");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
    $tblname = "products";
    mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    mysql_select_db(DB_NAME);
    $proid = $_SESSION['pid'];
    $query = "SELECT * from $tblname where product_id='$proid'";
    $result = mysql_query($query);
    $count = mysql_num_rows($result);
    echo "<table>";
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        echo "<tr><td>" . $row['product_name'] . "</td><td>" . $row['product_price'] . "</td></tr>";
        echo $_SESSION['qty'];
    }
    echo "</table>";
    mysql_free_result($result);
    mysql_close();
}
?>

$_SESSION['pid']=$_POST['product_id']; -這可能每次都替換購物車中的產品。 應該是一系列產品。

編輯:

 $_SESSION['pid']=$_POST['product_id'];
 $_SESSION['qty']+=$_POST['quantity'];

if(! isset($_SESSION['product']))
  {
  $_SESSION['product'] = array();
  }

 $_SESSION['product'][$_POST['product_id']] = $_POST['quantity'];

然后編輯您的處理過程以遍歷會話並獲取每個產品。

編輯:您應該考慮使用$_SESSION['cart']['products'] = array(); 因為在您的var的組織方面更有意義:產品在購物車中,因此也是購物車的一部分。

EDIT2:

這就是我基於使用$ _SESSION ['cart'] ['products']存儲產品來組織購物車的方式。 注意:未經測試的代碼; 可能會有一些錯別字。 只是通過它並嘗試理解邏輯:

// Move these into a different file, so you only have it once.
// Then use require_once('DatabaseConnection.php');

define("DB_HOST", "localhost");
define("DB_NAME", "onlinestore");
define("DB_USER", "root");
define("DB_PASSWORD", "");
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
mysql_select_db(DB_NAME);

if (!isset($_SESSION['cart']))
  {
  echo "<p>Your shopping cart is empty!</p>";
  }
else
  {
  $tblname = "products";
  require_once('DatabaseConnection.php');

  $prodids = array();
  foreach($_SESSION['cart']['products'] as $id => $qntity)
    {
    $prodids[] = $id;
    }
  $prodids = implode(',', $prodids);

  $query = "SELECT * from $tblname where product_id in ($prodids) ";
  $result = mysql_query($query) or die(mysql_error());

  echo "<table>";

  while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    {
    echo "<tr><td>" . $row['product_name'] . "</td><td>" . $row['product_price'] . "</td></tr>". $_SESSION['cart']['products'][$row['product_id']];
    }
    echo "</table>";
    mysql_free_result($result);
    mysql_close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM