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

Php 从购物车中删除代码不起作用,php,codeigniter,Php,Codeigniter,我正在做一个电子商务练习——将物品添加到购物车,然后将其移除。项目/购物车是存储在会话中并在控制器功能中操作的项目id和数量值-除了产品id之外,没有从数据库中提取任何内容。添加到购物车或更新正在工作,但删除不起作用 据我所知,用于添加或删除的函数很简单——一个应该增加一个值,另一个应该减少。代码如下。有什么想法吗 从篮子中取出: public function remove_from_basket($item_id) { // remove an item fr

我正在做一个电子商务练习——将物品添加到购物车,然后将其移除。项目/购物车是存储在会话中并在控制器功能中操作的项目id和数量值-除了产品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>";
            }
         }
致电:

<?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>";
                }
            ?>
在您的代码中,您有:

$quantity -= $this->session->post('qty');
这应该是:

$quantity -= $this->input->post('qty');

试试看。。。还需要考虑到低于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);死亡每个步骤(或使用CI的日志功能)并查看您的值是否与您认为的值相同


有时候写出来更简单,更简单,让它工作起来…

感谢所有的建议-这似乎是Opera中生成的HTML按钮没有正确激活的问题,而不是PHP代码的问题。我没有根本原因(可能是空格或格式),但从头重写html段修复了按钮操作。
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);
        }

    }