从购物车代码中删除不起作用

时间:2017-02-24 01:57:33

标签: php codeigniter

我正在进行电子商务练习 - 将商品添加到购物车,然后将其删除。 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>";
                }
            ?>

1 个答案:

答案 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的日志记录功能)并查看您的值是否与您认为的一样?

有时它更容易写出更基本的东西来让它工作......