我花了30分钟的时间在这个网站上寻找这个问题的答案,但是我似乎试图解决这个问题。
在PHP代码块的末尾。我创建了一个名为" checkout"的会话数组。在哪里我想存储每个项目的ID。然后将其传递到结帐页面,用户将看到他们订购的内容及其详细信息的摘要。
当我来到结帐页面时,我似乎只能将最后一个$ item_id添加到购物车中以显示
我认为每次循环运行时,$ item_id值都会被写入" checkout"数组而不是添加到数组的末尾。但我只是不确定如何解决它。
我们将非常感谢您提供的任何帮助,因为我现在已经坐了3个小时试图解决这个问题。
<?php
$cartOutput ="";
$cartTotal = "0";
$totalVat = "0";
if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) {
$cartOutput = "<h2 align='center'>Your Shopping cart is empty</h2>";
} else {
$i = 0;
foreach ($_SESSION["cart_array"] as $each_item){
$item_id = $each_item['item_id'];
$sql = mysql_query("SELECT * FROM estock WHERE stockno='$item_id' LIMIT 1");
while ($row = mysql_fetch_array($sql)){
$product_name = $row["description"];
$price = $row["price"];
$details = $row["details"];
}
$pricetotal = $price * $each_item['quantity'];
$cartTotal = $pricetotal + $cartTotal;
$totalVat = $cartTotal * 1.175;
//Table
$cartOutput .= '<tr>';
$cartOutput .= '<td> <a href="product.php?id=' . $item_id . '">' . $product_name . '</a><br /><img src="inventory_images/' . $item_id . '.jpg" alt="' . $product_name . '" width="40" height="52" border="1" /> </td>';
$cartOutput .= '<td>'.$details.'</td>';
$cartOutput .= '<td>£'.$price.'</td>';
$cartOutput .= '<td>'.$each_item['quantity'].'</td>';
$cartOutput .= '<td>£'.$pricetotal.'</td>';
$cartOutput .= '<td><form action="cart.php" method="post"><input name="deleteBtn' . $item_id . '" type="submit" value="X" /><input name="index_to_remove" type="hidden" value="' . $i . '" /></form></td>';
$cartOutput .= '</tr>';
$_SESSION["checkout"] = array();
$_SESSION["checkout"][] = $item_id;
$i++;
if ($i++ > 3) break;
}
}
?>
下面你可以看看我在checkout.php页面上检索数组的工作
然后我在表格中回显$ cartOutput。
foreach ($_SESSION["checkout"] as $itemid){
$cartOutput = "";
$item_id = $itemid;
$sql = mysql_query("SELECT * FROM estock WHERE stockno='$item_id' LIMIT 1");
while ($row = mysql_fetch_array($sql)){
$item_id = $row["stockno"];
$product_name = $row["description"];
$price = $row["price"];
$details = $row["details"];
}
$cartOutput .= '<tr>';
$cartOutput .= '<td>'.$item_id.'</td>';
$cartOutput .= '</tr>';
}
?>
答案 0 :(得分:1)
问题出在这一行
$_SESSION["checkout"] = array();
将此行放在主foreach循环之外,并在循环中添加数组中的值。因为每次创建新数组时都会丢失旧值。