更新数量PHP只影响一行

时间:2014-01-06 14:21:19

标签: php mysql

我遇到了购物车的一些错误。 它基本上只能更新购物车中的第一行而不是其余的。 以下是我正在尝试做的一个例子。 例; 当我购买产品A时,它会在购物车中, 当我再次购买产品A时,它将更新为数量2,而不是作为另一行插入。

当我在做代码时, 代码仅适用于第一行,而不适用于角色的其余部分。 含义, 当我购买产品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));
  }
}

1 个答案:

答案 0 :(得分:0)

在将产品添加到购物车之前,您必须检查产品是否已经全部装入购物车。

因此,是psuedo代码:

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.