-1

以下を実行していますが、うまくいきません。いくつ追加しても、配列には1つのアイテムしかありません

誰かが私が間違っていることを教えてもらえますか

session_start();

$pid = mysql_real_escape_string(trim($_GET["pid"]));
$price = mysql_real_escape_string(trim($_GET["price"]));
$quantity = mysql_real_escape_string(trim($_GET["quantity"]));

if (!isset($_SESSION['cart'])) {
    $_SESSION['cart'] = array();

    $_SESSION['cart']['pid'] = $pid;
    $_SESSION['cart']['total_price'] = $price;
    $_SESSION['cart']['total_items'] = $quantity;

}else{
    $_SESSION['cart']['pid'] = $pid;
    $_SESSION['total_price'] += $price;
    $_SESSION['total_items']  += $quantity;
}
4

4 に答える 4

1

配列の値をリセットしているようです。$ _SESSION ['cart'] ['pid']を設定するたびに、最後の値を上書きします。ただし、total_priceとtotal_quantityはおそらく正しく増分していますか?

$_SESSION['cart']['pid'][] = $pid;代わりに使用してください。複数のアイテムを持つことができるように、「pid」の配列が必要です。[]演算子は、値を配列として扱い、新しい値を配列の最後にプッシュするようにphpに指示します。

編集:if['pid']がpidの配列になるように、の下での初期化は次のようになります。

$_SESSION['cart'] = array();
$_SESSION['cart']['pid'] = array(); //this might be redundant...but I always initialize my variables
$_SESSION['cart']['pid'][] = $pid;
$_SESSION['cart']['total_price'] = $price;
$_SESSION['cart']['total_items'] = $quantity;

あなたの下でelseあなたは得るでしょう:

$_SESSION['cart']['pid'][] = $pid;
$_SESSION['cart']['total_price'] += $price;
$_SESSION['cart']['total_items'] += $quantity;

else注:他の回答で言及されているように、の下のtotal_priceとtotal_itemsの['cart']を忘れました。

于 2012-04-25T19:03:18.113 に答える
0

elseステートメントの最後のセッション変数で['cart']を忘れました。

phpの配列参照関数のリストについては、これを参照してください。

于 2012-04-25T19:02:28.510 に答える
0

['cart'] を下の 2 つの $_SESSION セッターに追加するのを忘れたようです:

$_SESSION['total_price'] += $price;
$_SESSION['total_items']  += $quantity;

への変更

$_SESSION['cart']['total_price'] += $price;
$_SESSION['cart']['total_items']  += $quantity;
于 2012-04-25T19:00:22.463 に答える
0
$_SESSION['cart']['pid'] = $pid; 
$_SESSION['total_price'] += $price; 
$_SESSION['total_items']  += $quantity; 

あなたのelseステートメントで['cart']を忘れました..次のようにする必要があります。

$_SESSION['cart']['pid'] = $pid; 
$_SESSION['cart']['total_price'] += $price; 
$_SESSION['cart']['total_items']  += $quantity; 
于 2012-04-25T19:01:12.637 に答える