[英]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">  Iphone 5S</font></p>
<p><font color="red">  RM1999</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>
  
<div >
<image src="s4.png">
<p><font color="blue">  Samsung Galaxy S4</font></p>
<p><font color="red">  RM1999</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.