2011-06-27 200 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從臨時表

獲取用戶選擇的記錄