2011-06-27 258 views
1

我是新来的PHP(只玩过它几个月),我正在建立一个朋友一个非常简单的电子商务网站,我正在为此构建一个平等的简单的购物车。更新购物车的会话变量

这里是购物车的基本概念:目前,用户浏览产品页面(基于productID),选择一个项目的颜色(选择ProdOptID,这对每一个项目都是唯一的),然后提交该信息通过表单发布到$ _SESSION ['Cart']。然后这些信息被用来访问一个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; 
     } 
    } 
} 
?> 

回答

1

它好像你的HTML输入的名字都完全同样,因此最后一个覆盖了以前的那个。你应该做的是为输入名称添加一个id,例如

echo "<input type='hidden' name='Edit_ID_{$Row['ProductID']}' value='{$Row['ProductID']}' />" 

然后,您应该使用变量变量从每个输入字段检索您的数据。 http://php.net/manual/en/language.variables.variable.php

0

您可以创建临时表来存储用户选择的项目,当订单完成后,您可以将所有记录上传到您的查询或订单表。

使用临时表,你可以很容易地更新或删除任何记录

表:temporary_order

Temp_id:$ _SESSION [ 'temp_id'] =任何随机值;

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从临时表

获取用户选择的记录