2014-01-06 85 views
0

我遇到了購物車的一些錯誤。 它基本上只能更新購物車中的第一行,而不是其他的。 下面是我想要做的一個例子。 示例; 當我購買產品A時,它會在購物車中, 當我再次購買產品A時,它會更新爲數量2,而不是插入另一行。只有一行受數量更新影響PHP

當我在做代碼 代碼只適用於第一行,而不是角色的其餘部分。 含義, 當我購買產品A並在購物車中再次添加產品A時,數量將更新爲2.然而,當我購買其他產品(例如產品B)並再次添加產品B時,數量將會變爲 。不會更新, 而是將其作爲新行插入。

以下是我的代碼, 有人可以幫我部分? 謝謝

<?php 
if (!function_exists("GetSQLValueString")) { 
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{ 
    if (PHP_VERSION < 6) { 
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; 
    } 

    $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); 

    switch ($theType) { 
    case "text": 
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
     break;  
    case "long": 
    case "int": 
     $theValue = ($theValue != "") ? intval($theValue) : "NULL"; 
     break; 
    case "double": 
     $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; 
     break; 
    case "date": 
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
     break; 
    case "defined": 
     $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; 
     break; 
    } 
    return $theValue; 
} 
} 

$editFormAction = $_SERVER['PHP_SELF']; 
if (isset($_SERVER['QUERY_STRING'])) { 
    $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']); 
} 


if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { 
$selectProduct = "SELECT * FROM supermarketcart;"; 
$qrySeledtedProduct = mysql_query($selectProduct); 
$fetchSelectedProduct = mysql_fetch_assoc($qrySeledtedProduct); 


if($fetchSelectedProduct['sid']!= $_POST['id']) { 


    $insertSQL = sprintf("INSERT INTO supermarketcart (sid, pname, pdescription, package, pprice, pimage, username) VALUES (%s, %s, %s, %s, %s, %s, %s)", 
         GetSQLValueString($_POST['id'], "int"), 
         GetSQLValueString($_POST['name'], "text"), 
         GetSQLValueString($_POST['description'], "text"), 
         GetSQLValueString($_POST['package'], "text"), 
         GetSQLValueString($_POST['price'], "double"), 
         GetSQLValueString($_POST['imagename'], "text"), 
         GetSQLValueString($_POST['username'], "text")); 

    mysql_select_db($database_MyDatabase, $MyDatabase); 
    $Result1 = mysql_query($insertSQL, $MyDatabase) or die(mysql_error()); 

    $insertGoTo = "cart.php"; 
    if (isset($_SERVER['QUERY_STRING'])) { 
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; 
    $insertGoTo .= $_SERVER['QUERY_STRING']; 
    } 
    header(sprintf("Location: %s", $insertGoTo)); 

    } 

    { 
     $insertGoTo = "cart.php"; 
     $updateqtyAmt = $fetchSelectedProduct['qty'] +1; 
     $updateQty = "UPDATE supermarketcart set qty =".$updateqtyAmt." where sid =".$_POST['id'].";"; 
     mysql_query($updateQty); 
     if (isset($_SERVER['QUERY_STRING'])) { 
     $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; 
     $insertGoTo .= $_SERVER['QUERY_STRING']; 
    } 

     header(sprintf("Location: %s", $insertGoTo)); 
    } 
} 

回答

0

添加產品到購物車中,你必須檢查該產品是否在媒體鏈接購物車前。

因此,是僞代碼:

if product is in shoppincart: 
    get the shoppingcart ID 
    update record with parameters ProductID and ShoppingcartID, update Count = Count + 1 
else: 
    // product is not in shopping cart 
    perform the insert query. 
+0

您好,我沒檢查產品是否在數據庫/購物車。 我選擇所有的id並做了一個檢查。 只有第一行(第一個產品)會影響數量的更新, 而另一行(其他產品)不受影響。 – user3156220

+0

看看我的代碼,它與您提到的 – user3156220

+0

有些類似。您不需要接收所有產品,只需要添加一個。因此,您查詢第一個SELECT查詢應該是這樣的:「SELECT ID FROM shoppingcart WHERE ShoppingcartID = X和ProductID = Y」。然後你可以檢查你的結果ID是NULL還是一個​​整數,根據這些信息你可以執行插入或更新查詢。如果您執行更新查詢,則可以使用SELECT查詢中的ID。你不需要計算數量,因爲MySQL可以添加一個單元格,只需要UPDATE [..] SET qty = qty + 1 – Pakspul