如何向购物车中添加多个项目?
这是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
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[],这样它只会添加到最后一个