0

セッションを使用して単純なショッピング カートにデータを入力してitemAmountitem_idますが、session['cart'].

ここでインクリメントしようとしています$itemAmount = $eachItem['itemAmount'];が、うまくいきません。

これは私が今持っているものです。

更新しました; より良い名前のコードですが、cart_item_amount をインクリメントするのではなく、毎回新しいアイテムを作成する時点で、cart_item_amount をインクリメントするための助けが必要です。

<?php
if (!isset($_SESSION)) {
  session_start();
}
// create the cart session
if(!isset($_SESSION['cart'])) {
    $_SESSION['cart'] = array();
}
?>
<?php
// if all posts are fine
if(isset($_POST['item_id'])) {

    // set post values
    $post_item_id = $_POST['item_id'];
    $post_item_name = $_POST['item_name'];
    $post_options = $_POST['item_options'];
    $post_item_extras = $_POST['item_extras'];

    // set initial item amount
    $item_total = 1;

    foreach($_SESSION['cart'] as $key => $value) {

        if($value['cart_item_id'] == $post_item_id) {

            $value['cart_item_amount']++;
            $item_total = $value['cart_item_amount'];

        }else{

        }
    }
    // if option selected
    if(isset($post_options)) {

        // split to get two separate values
        list($post_item_cost, $post_option_name) = explode("-", $post_options, 2);

    }

    // loop through extras          
    if(isset($post_item_extras)) {

        foreach($post_item_extras as $key => $value) {

            // split to get two separate values
            list($post_extra_cost, $post_extra_name) = explode("-", $value, 2);

            // create extras array
            $item_extras[] = array(
                'cart_extra_cost' => $post_extra_cost,
                'cart_extra_name' => $post_extra_name
            );

        }
    }

    // add each item to an array
    $cart_row = array(
        'cart_item_id' => $post_item_id,
        'cart_item_name' => $post_item_name,
        'cart_option_name' => $post_option_name,
        'cart_item_cost' => $post_item_cost,
        'cart_item_amount' => $item_total,
        // add the extras array
        'cart_item_extras' => $item_extras 
    );

        // add new row to the session Cart
        $_SESSION['cart'][] = $cart_row;
}
?>

Array
(
    [cart] => Array
        (
            [0] => Array
                (
                    [cart_item_id] => 76
                    [cart_item_name] => Cheese Burger
                    [cart_option_name] => Small
                    [cart_item_cost] => 1.00
                    [cart_item_amount] => 1
                    [cart_item_extras] => 
                )

            [1] => Array
                (
                    [cart_item_id] => 76
                    [cart_item_name] => Cheese Burger
                    [cart_option_name] => Small
                    [cart_item_cost] => 1.00
                    [cart_item_amount] => 2
                    [cart_item_extras] => 
                )

            [2] => Array
                (
                    [cart_item_id] => 76
                    [cart_item_name] => Cheese Burger
                    [cart_option_name] => Small
                    [cart_item_cost] => 1.00
                    [cart_item_amount] => 3
                    [cart_item_extras] => 
                )

        )

)
4

2 に答える 2

1
if($eachItem['itemID'] = $_POST['item_id']) {

= は比較演算子ではありません 。http://php.net/manual/en/language.operators.comparison.phpを参照してください。

する必要があります

if($eachItem['itemID'] == $_POST['item_id']) {
于 2013-04-06T10:40:53.877 に答える
0

これを使用するだけで機能しました。

foreach($_SESSION['cart'] as $key => $value) {

    if($value['cart_item_id'] == $post_item_id) {

         $_SESSION['cart'][$key]['cart_item_amount']++;

         return false;

}
于 2013-04-07T08:06:01.930 に答える