/ / Jak zaktualizować tablicę w pliku cookie? - php, tablice, pliki cookie

Jak zaktualizować tablicę w pliku cookie? - php, tablice, pliki cookie

Zapisuję tablicę do koszyka w pliku cookie, aby wysłaćdo strony koszyka na zakupy. Ilekroć wchodzę na stronę z innego produktu i klikam na przycisk dodaj do koszyka, nie doda go do tablicy, ale wydaje się ją nadpisywać.

$uri = $_SERVER["REQUEST_URI"];
$pin = explode("/", $uri);
$id = $pin[3];

$product = $model->selectById($id, "carpet");
$product = $product->fetch(PDO::FETCH_ASSOC);

$site_url = site_url();
if(!$product){
header("Location: $site_url./404");
}

if(isset($_POST["add"])){
$cart = [];
$cart[$product["id"]] = [];
$cart[$product["id"]]["product_name"] = $product["name"];

setcookie("cart", serialize($cart), time()+3600);
$cart = unserialize($_COOKIE["cart"]);
dd($cart);
}

Odpowiedzi:

0 dla odpowiedzi № 1

Dałeś już odpowiedź: nadpisujesz koszyk za każdym razem, gdy ten skrypt działa. Zmiany:

$uri = $_SERVER["REQUEST_URI"];
$pin = explode("/", $uri);
$id = $pin[3];

$product = $model->selectById($id, "carpet");
$product = $product->fetch(PDO::FETCH_ASSOC);

$site_url = site_url();
if(!$product){
header("Location: $site_url./404");
}

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

if ( isset($_COOKIE["cart"]) )
$cart = unserialize($_COOKIE["cart"]); // if cookie is set, get the contents of it
else
$cart = []; // else create an empty cart

// append new product and add to cart
$cart[$product["id"]] = [];
$cart[$product["id"]]["product_name"] = $product["name"];

setcookie("cart", serialize($cart), time()+3600);
$cart = unserialize($_COOKIE["cart"]);
dd($cart);
}

0 dla odpowiedzi nr 2

Druga część pytania: Jak zwiększyć ilość zamówienia produktu:

    ...
// is this product alread in cart?
if ( isset($cart[$product["id"]])
$prod = $cart[$product["id"]]; // then pick it
else
{
// create a new product object
$prod = new stdClass();
// initialze with name and zer quantity
$prod->name = $product["name"];
$prod->quantity = 0;
}

// increment quantity
$prod->quantity ++;

// reassign to array
$cart[$product["id"]] = $prod;

...