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));
}
}
您好,我沒檢查產品是否在數據庫/購物車。 我選擇所有的id並做了一個檢查。 只有第一行(第一個產品)會影響數量的更新, 而另一行(其他產品)不受影響。 – user3156220
看看我的代碼,它與您提到的 – user3156220
有些類似。您不需要接收所有產品,只需要添加一個。因此,您查詢第一個SELECT查詢應該是這樣的:「SELECT ID FROM shoppingcart WHERE ShoppingcartID = X和ProductID = Y」。然後你可以檢查你的結果ID是NULL還是一個整數,根據這些信息你可以執行插入或更新查詢。如果您執行更新查詢,則可以使用SELECT查詢中的ID。你不需要計算數量,因爲MySQL可以添加一個單元格,只需要UPDATE [..] SET qty = qty + 1 – Pakspul