php 会话购物车不处理尺寸

php session cart does not handle sizes

我有以下 php 代码可以将商品添加到基于会话的购物车中。例如,当使用没有尺寸变化的物品时,它工作正常。产品包括各种服装。有些有不同的尺寸,有些则没有。一种产品可以是有不同尺码的 T 恤,另一种可以是只有一种尺码的帽子。我希望能够将不同尺寸的 T 恤添加到购物车。就像现在一样,如果它不存在,它只会添加到基于会话的购物车中。如果存在,它将更新数量。

<?php
ini_set('display_errors', 'On');
/*include("session.php");   */
session_start();
if (isset($_POST["add_to_cart"]))
{

  if (isset($_SESSION["shopping_cart"]))
  {

      $item_array_id = array_column($_SESSION["shopping_cart"],"item_id");
      if (!in_array($_GET["id"], $item_array_id))
      {
         $count = count($_SESSION["shopping_cart"]);
         $item_array = array(
            'item_id'       => $_GET["id"],
            'item_name'     => $_POST["hidden_name"],
            'item_description'     => $_POST["hidden_description"],
            'item_price'    => $_POST["hidden_price"],
            'item_qty'      => $_POST["hidden_qty"],
            'itm_size'      => $_POST["select-size-1"],
            'itm_color'     => $_POST["product-1-color"]
         );
         $_SESSION["shopping_cart"][$count] =  $item_array;
      }
      else
      {
            // article exsits, update or remove
            foreach($_SESSION["shopping_cart"] as $keys => $values)
            {
                    if ($values["item_id"] == $_GET["id"] and ($values["itm_size"] != $_GET["select-size-1"]))
                    {
                        // check it item id is the same but color differs, if so add to session array
                        $count = count($_SESSION["shopping_cart"]);
                        $item_array = array(
                        'item_id'       => $_GET["id"],
                        'item_name'     => $_POST["hidden_name"],
                        'item_description'     => $_POST["hidden_description"],
                        'item_price'    => $_POST["hidden_price"],
                        'item_qty'      => $_POST["hidden_qty"],
                        'itm_size'      => $_POST["select-size-1"],
                        'itm_color'     => $_POST["product-1-color"]
                        );
                        $_SESSION["shopping_cart"][$count] =  $item_array;
                    }
                    else
                    {
                    // Orginal kod
                    if ($values["item_id"] == $_GET["id"])
                    {
                        // Om man anger 0 som antal ska artikel tas bort
                        if ($_POST["hidden_qty"] == "")
                        {
                            unset($_SESSION["shopping_cart"][$keys]);
                        }
                        else
                        {
                            // update qty
                            $_SESSION['shopping_cart'][$keys]['item_qty'] += $_POST["hidden_qty"];
                        }
                    }
                    }




            }


      }
  }
  else
  {
      //echo '<script>alert("session is set")</script>';
      $item_array = array(
        'item_id'       => $_GET["id"],
        'item_name'     => $_POST["hidden_name"],
        'item_description'     => $_POST["hidden_description"],
        'item_price'    => $_POST["hidden_price"],
        'item_qty'      => $_POST["hidden_qty"],
        'itm_size'      => $_POST["select-size-1"],
        'itm_color'     => $_POST["product-1-color"]
      );
      $_SESSION["shopping_cart"][0] =  $item_array;
  }
}
?>

所以数量应该根据尺码上的 ID 更新...

更新:我添加了我认为也有助于考虑处理大小的内容。它不起作用,如果我添加一件 XL 码的 T 恤,它会按原样添加,但是当我添加另一件 XL 码的 T 恤时,它不会改变数量,但会再添加 2 件相同尺寸的 T 恤?

正如 04FS 所解释的那样,您不检查尺寸,只检查产品 ID。

[编辑]

好的,让我们简化并阐明所有代码...请仔细阅读这一行:$_SESSION["shopping_cart"][$index]['item_qty']++;,我不确定它是否正是您想要的。

if (isset($_POST["add_to_cart"]))
{

    $index = false;

    if(!isset($_SESSION["shopping_cart"])) {
        $index = false;
    }
    else {

        foreach ($_SESSION["shopping_cart"] as $key => $value) {

            if($value["item_id"] == $_REQUEST["id"] && $value['itm_size'] == $_POST['select-size-1']) {
                $index = $key;
                break;
            }

        }

    }

    if($index !== false) {
        $_SESSION["shopping_cart"][$index]['item_qty']++;
    }
    else {
        // create new entry in the session shopping_cart
        $_SESSION['shopping_cart'][] = array(
                                            'item_id'       => $_REQUEST["id"],
                                            'item_name'     => $_POST["hidden_name"],
                                            'item_description'     => $_POST["hidden_description"],
                                            'item_price'    => $_POST["hidden_price"],
                                            'item_qty'      => $_POST["hidden_qty"],
                                            'itm_size'      => $_POST["select-size-1"],
                                            'itm_color'     => $_POST["product-1-color"]
                                         );
    }

}

[/编辑]

如果您需要这方面的帮助,请随时询问。