购物车:将更多的商品添加到购物车数组中



如何向购物车中添加多个项目?

这是html表单,

<form action="cart.php?action=add" method="post" id="form-cart">
    <input type="text" name="cart[unique_id]" value="<?php echo $product->unique_id;?>" size="3" maxlength="3" />
    <input type="text" name="cart[quantity_stock]" value="<?php echo $product->in_stock;?>" size="3" maxlength="3" />
    <input type="submit" value="Add to cart" />
</form>

这是cart类中的add_item方法,

 public function add_item($info)
{
    # Check if the content array does not exist yet.
    if (isset($this->content[0]['unique_id'])) 
    {
        $i = 0;
        $this->content[$i]['unique_id'] = $this->content[$i]['unique_id'];
        $this->content[$i]['quantity_request']++;
        $this->content[$i]['quantity_stock'] = $this->content[$i]['quantity_stock'];
        $this->content[$i]['time_created'] = time();
        $i += $i;
        # Check if the quantity request exceeds quanity in stock.
        if($this->content[$i]['quantity_request'] > $this->content[$i]['quantity_stock'])
        {
            # If it does, then set the quantity request to quanity in stock.
            $this->content[$i] = array(
                'unique_id' => $this->content[$i]['unique_id'], 
                'quantity_request' => $this->content[$i]['quantity_stock'], 
                'quantity_stock' => $this->content[$i]['quantity_stock'],
                'time_created' => time(),
                'error' => 'The quantity you requested on this item is exceeding the quantity in our stock.'
            );
        }
    } 
    else 
    {
        //$this->content[$unique_id] = array('quantity_request' => 1, 'quantity_stock' => $this->content[$unique_id]['quantity_stock'],'time_created' => time());
        # Create the content array, $unique_id as the key.
        # If it does, then set the quantity request to quanity in stock.
        $this->content[0] = array(
            'unique_id' => $info['unique_id'],
            'quantity_request' => 1,
            'quantity_stock' => $info['quantity_stock'],
            'time_created' => time()
        );
    }
}

那么,在类中已经有了一个项之后,

array
  0 => 
    array
      'unique_id' => string '1386638969582999' (length=16)
      'quantity_request' => int 1
      'quantity_stock' => string '10' (length=2)
      'time_created' => int 1322429496

当我像这样提交另一项时,数组应该增加另一项,

html

<form action="cart.php?action=add" method="post" id="form-cart">
    <input type="text" name="cart[<?php echo $product->unique_id;?>][quantity_stock]" value="<?php echo $product->in_stock;?>" size="3" maxlength="3" />
    <input type="submit" value="Add to cart" />
</form>
php,

array
  0 => 
    array
      'unique_id' => string '1386638969582999' (length=16)
      'quantity_request' => int 1
      'quantity_stock' => string '11' (length=2)
      'time_created' => int 1322429496
  1 => 
    array
      'unique_id' => string '1386638969582900' (length=16)
      'quantity_request' => int 1
      'quantity_stock' => string '10' (length=2)
      'time_created' => int 1322429400

但是我总是只得到一件物品,而要求的数量却越来越多,

array
      0 => 
        array
          'unique_id' => string '1386638969582999' (length=16)
          'quantity_request' => int 2
          'quantity_stock' => string '10' (length=2)
          'time_created' => int 1322429496

注意现在在'quantity_request' => int 2

中变成了2

quantity_request只有在再次点击相同的unique_id时才会增加。

我该怎么做?

编辑:

html

<form action="cart.php?action=add" method="post" id="form-cart">
    <input type="text" name="cart[<?php echo $product->unique_id;?>][quantity_stock]" value="<?php echo $product->in_stock;?>" size="3" maxlength="3" />
    <input type="submit" value="Add to cart" />
</form>
php,

public function add_item($item_array)
    {
        foreach ($item_array as $unique_id => $info)
        {
            # Check if the content array does not exist yet.
            if (isset($this->content[$unique_id])) 
            {
                $this->content[$unique_id]['quantity_request']++;
                $this->content[$unique_id]['quantity_stock'] = $this->content[$unique_id]['quantity_stock'];
                $this->content[$unique_id]['time_created'] = time();
                # Check if the quantity request exceeds quanity in stock.
                if($this->content[$unique_id]['quantity_request'] > $this->content[$unique_id]['quantity_stock'])
                {
                    # If it does, then set the quantity request to quanity in stock.
                    $this->content[$unique_id] = array(
                        'quantity_request' => $this->content[$unique_id]['quantity_stock'], 
                        'quantity_stock' => $this->content[$unique_id]['quantity_stock'],
                        'time_created' => time(),
                        'error' => 'The quantity you requested on this item is exceeding the quantity in our stock.'
                    );
                }
            } 
            else 
            {
                //$this->content[$unique_id] = array('quantity_request' => 1, 'quantity_stock' => $this->content[$unique_id]['quantity_stock'],'time_created' => time());
                # Create the content array, $unique_id as the key.
                # If it does, then set the quantity request to quanity in stock.
                $this->content[$unique_id] = array(
                    'quantity_request' => 1,
                    'quantity_stock' => $info['quantity_stock'],
                    'time_created' => time()
                );
            }
        }
    }

您在开始时将$i重置为0,从而使$i++无关,因此当您添加另一个条目时,它将覆盖旧条目。试试$this->content[],这样它只会添加到最后一个

相关内容

  • 没有找到相关文章

最新更新