Как добавить несколько товаров в корзину?
Это 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>
Это метод add_item
в классе cart
,
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
Обратите внимание, что сейчасстало 2 в '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()
);
}
}
}