我是php的新手(只玩了几个月)我正在建立一个朋友一个非常简单的电子商务网站,我正在构建一个同样简单的购物车。
以下是购物车的基本概念:目前,用户浏览产品页面(基于productID),为项目选择颜色(选择ProdOptID,这是每个项目唯一的),然后提交通过表单发布信息到$ _SESSION ['购物车']。然后,该信息用于访问mysql数据库以提取所有其余的产品信息,然后将其显示在迷你购物车中。到目前为止,它工作正常。只有当我尝试创建一个评论/编辑页面时,我才会被绊倒。出于某种原因,我只能更新最后一个。有人有任何想法或发现任何问题吗?
审核/编辑页面的代码:
<div class="ReviewCheckout_Main">
<h1 class="ReviewCheckout_Title">Review Your Cart</h1>
<div class="ReviewCheckout_Form">
<form action="/BeautifulUrns/includes/ReviewCheckout_Processing.php" method="post">
<?php
if (isset($_SESSION['Cart'])) {
foreach ($_SESSION['Cart'] as $ID => $QTY){
$Query = "SELECT *
FROM ProductsOptions
LEFT OUTER JOIN Products
ON ProductsOptions.ProductID=Products.ProductID
WHERE ProdOptID = $ID";
$Result = mysql_query($Query, $Connection);
$Row = mysql_fetch_array($Result);
echo "<input type='text' name='Edit_Qty' value=" . $QTY . " />";
echo "<b>" . $Row['ProductName'] . "</b> ";
echo "<b> - " . $Row['POName'] . "</b> ";
echo "<input type='hidden' name='Edit_ID' value='{$Row['ProductID']}' />";
echo "<input type='hidden' name='Edit_ProdOptID' value='{$Row['ProdOptID']}' />";
echo "<br />";
}
}
?>
<input type="submit" />
</form>
<a href="/BeautifulUrns/index.php">Return Home</a>
</div>
处理页面的代码:
<?php session_start();
$ID = mysql_real_escape_string((int)$_POST['Edit_ProdOptID']); // GRABS PRODOPT ID
$PRODUCTID = mysql_real_escape_string((int)$_POST['Edit_ID']); //GRABS PRODUCT ID
$QTY = mysql_real_escape_string((int)$_POST['Edit_Qty']); // GRABS QUANTITY
if(isset($ID)) {
if (isset($QTY) && $QTY > 0){
if (isset($_SESSION['Cart'])) {
$_SESSION['Cart'][$ID] = $QTY;
}
else {
$_SESSION['Cart'] = NULL;
$_SESSION['Cart'][$ID] = $QTY;
}
}
}
?>
答案 0 :(得分:1)
好像您的html输入名称完全相同,因此最后一个名称覆盖了之前的名称。你应该做的是在输入名称中添加一个id,例如
echo "<input type='hidden' name='Edit_ID_{$Row['ProductID']}' value='{$Row['ProductID']}' />"
然后,您应该使用变量变量从每个输入字段中检索数据。 http://php.net/manual/en/language.variables.variable.php
答案 1 :(得分:0)
您可以创建临时表来存储用户选择的项目,当订单最终确定时,您可以将所有记录上传到您的查询或订单表。
使用临时表,您可以轻松更新或删除任何记录
表:temporary_order
Temp_id:$ _SESSION [&#39; temp_id&#39;] =任意随机值;
id userid product_id quantity temp_id date
1 1 1 2 123456 2011-06-27
2 1 2 1 123456 2011-06-27
3 2 1 2 789456 2011-06-27
4 2 2 3 789456 2011-06-27
您只需传递temp_id即可从临时表中获取用户选择的记录