2017-06-06 4 views
0

私はクッキー内の既存の配列変数に値を追加したいと思います。PHP - ボタンクリック時にクッキー内の既存の配列に値を追加

は現在、私は、Ajaxを使用して、私のクッキーを設定します。

アヤックス:

function setcookie(productid){ 
    $.ajax({ 
      type: 'POST', 
      url: "setcookies.php", 
      data: { 
       id: "productid" 
      }, 
      success: function (e) { 
       alert(e); 
      } 
     }); 
} 

PHP setcookies.php

<?php 
$cookiename = "products"; 
$cart = array(); 

$pid = $_POST['id']; 
array_push($cart, $pid); 

setcookie($cookiename, serialize($cart), time() + 3600, "/"); 
$_COOKIE[$cookiename] = serialize($cart); 

私はaddproductボタンますsetcookie()関数が呼び出されますクリックします。 addproductボタンを3回クリックすると、製品の3つのIDをクッキー配列に追加する必要がありますが、私のページにクッキーが表示されるページにアクセスすると、最後に追加されたproductidのみが表示されます。

ありがとうございました。 MY WORKINGコードの

編集:コードの下

が私の最後に動作します: はわずかドミニクによって答えたコードを変更しました。あなたのコードで

$cookiename = "products"; 
$cart = null; 
$pid = $_POST['id']; 
if (!empty($_COOKIE[$cookiename])) { 
    $cart = unserialize($_COOKIE[$cookiename]); 
    array_push($cart, $pid); 
} else { 
    $cart = array(); 
    array_push($cart, $pid); 
} 
setcookie($cookiename, serialize($cart), time() + 3600, "/"); 
$_COOKIE[$cookiename] = serialize($cart); 
+0

を動作するはず? –

+0

@ka_linどうすればいいですか?クッキーが新しくて申し訳ありません。 – iamj

+0

@iamj:クライエント側のクッキーの説明については、https://stackoverflow.com/questions/14573223/set-cookie-and-get-cookie-with-javascriptを参照してください。 –

答えて

2

それは既存のコンテンツを削除しますので、あなたは[「製品」] 0要素を含む配列として$カートをインスタンス化し、$ _COOKIEにそれを置きます。

単純な要素を持つ配列しか持てない理由を説明します。

このコードを使用すると、クッキーのクライアント側を設定しないのはなぜ

<?php 
$cookiename = "products"; 

$cart = array(); 

if(!empty($_COOKIE[$cookiename])) { 
    $cart = $_COOKIE[$cookiename]; 
} 

$pid = $_POST['id']; 
array_push($cart, $pid); 

setcookie($cookiename, serialize($cart), time() + 3600, "/"); 
$_COOKIE[$cookiename] = serialize($cart); 
+0

お試しください;) – iamj

+0

ありがとうございます。 私はすでに自分のコードでこの問題を修正しています。 ちょっとあなたのコードを修正しました:) – iamj

+0

は魅力的に働いていました。 – Saibbyweb

関連する問題