我正在进行电子商务练习 - 将商品添加到购物车,然后将其删除。 items / cart是项目ID和数量值,存储在会话中并在Controller函数中操作 - 除了产品ID之外,没有从数据库中提取任何内容。添加到购物车或更新是有效的,但删除不是。
从我所知道的,添加或删除的功能很简单 - 一个应该增加一个值,另一个减少。代码如下。有什么想法吗?
从篮子中移除:
public function remove_from_basket($item_id)
{
// remove an item from a cart
$quantity = $this->session->userdata($item_id);
$quantity -= $this->session->post('qty');
$this->session->set_userdata($item_id, $quantity);
redirect('/eCommerceItems/eCommerce_basket');
}
Called from
<?php
$total=0;
foreach ($items as $item)
{
$temp = $item['price'] * $this->session->userdata($item['id']);
$total += $temp;
if ($this->session->userdata($item['id']) > 0)
{
echo "<div class='item'>
<div class='description'>
<p>Name: {$item['name']}</p>
<p>Price: {$item['price']}</p>
<p>Quantity: {$this->session->userdata($item['id'])}</p>
<form action '/eCommerceItems/remove_from_basket/{$item['id']}' method='post'>
<select name='qty'>";
for($i=1;$i <= $this->session->userdata($item['id']);$i++)
{
echo "<option>{$i}</option>";
}
echo "</select>
<input type='submit' value='Remove'>
</form>
</div>
</div>";
}
}
添加到购物篮
public function add_to_basket($item_id)
{
//Add an item to a cart
$quantity = $this->session->userdata($item_id);
$quantity += $this->input->post('qty');
$this->session->set_userdata($item_id, $quantity);
redirect('/eCommerceItems');
}
来自:
<?php
foreach($items as $item)
{
echo "<div class='item'>
<div class='description'>
<p>Name: {$item['name']}</p>
<p>Description: {$item['description']}</p>
<p>Price: \${$item['price']}</p>
<p>Quantity Available: {$item['quantity']}</p>
<p>Item ID is: {$item['id']}</p>
<form action='/eCommerceItems/add_to_basket/{$item['id']}' method='post'>
<select name='qty'>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
<input type='submit' value='Add to basket'>
</form>
</div>
</div>";
}
?>
答案 0 :(得分:0)
给它一个去...还需要考虑低于0我会假设?
public function remove_from_basket($item_id)
{
// remove an item from a cart
$increment = $this->input->post('qty');
$quantity = $this->session->userdata($item_id);
$newQuantity = $quantity - $increment;
if ($newQuantity > 1) {
$this->session->set_userdata($item_id, $Quantity);
} else {
$this->session->unset_userdata($item_id);
}
}
如果您仍然遇到问题,我建议print_r($variable); die;
每一步(或使用CI的日志记录功能)并查看您的值是否与您认为的一样?
有时它更容易写出更基本的东西来让它工作......