【问题标题】:Products not adding to Codeigniter cart未添加到 Codeigniter 购物车的产品
【发布时间】:2015-02-21 06:01:34
【问题描述】:

我对 Codeigniter 购物车有疑问。我已经创建了代码并检查了它,但每次我添加相同的产品时,它只会更新产品的所有信息,但不会添加新的信息。例如,两件完全相同的衬衫,但尺寸或颜色不同。我在这里搜索了一个解决方案,但还没有想出一个。

我的控制器代码

public function addToCart() {
$data = $this->input->post();

$id = $data['id'];
$qty = $data['qty']; 
$color = $data['color'];
$cart = $this->cart->contents();
$exists = false;
$rowid = '';

foreach($cart as $item):
    if($item['id'] == $id && $item['color'] == $color):
        $exists = true;
        $rowid = $item['rowid'];
        $qty = $item['qty'] + $qty;
    else:
        // if statement does not equal
    endif;
endforeach;

if($exists):
    $this->product_model->update_cart_item($rowid, $qty);
    redirect('dashboard');
else:
    $this->product_model->add_cart_item();
    redirect('dashboard');
endif;

 }

我的型号代码

public function update_cart_item($rowid, $qty){
    $data = array(
            'rowid' => $rowid,
            'qty' => $qty
    );

$this->cart->update($data);
}

public function add_cart_item(){
    $id = $this->input->post('id');
    $name = $this->input->post('name');
    $qty = $this->input->post('qty');
    $price = $this->input->post('price');
    $color = $this->input->post('color');
    $photo = $this->input->post('photo');
    $type = $this->input->post('type');
    $data = array(
            'id' => $id,
            'qty' => $qty,
            'price' => $price,
            'name' => $name,
            'color' => $color,
            'photo' => $photo,
            'type' => $type
    );

$this->cart->insert($data); 
}

现有产品的更新部分工作正常。例如,没有相同产品但颜色不同的部分。

【问题讨论】:

    标签: php codeigniter shopping-cart


    【解决方案1】:

    由于您想对您的每个产品进行一些操作,请尝试以下操作:

    public function addToCart() {
        $data = $this->input->post();
    
        foreach($cart as $item):
    
            $id = $data['id'];
            $qty = $data['qty']; 
            $color = $data['color'];
            $cart = $this->cart->contents();
            $exists = false;
            $rowid = '';
    
            if($item['id'] == $id && $item['color'] == $color):
                $exists = true;
                $rowid = $item['rowid'];
                $qty = $item['qty'] + $qty;
    
                if($exists):
                    $this->product_model->update_cart_item($rowid, $qty);
                else:
                    $this->product_model->add_cart_item();
    
                endif;
            else:
                // if statement does not equal
            endif;
        endforeach;
        redirect('dashboard');
     }
    

    在检查任何下一个产品之前,您希望将 $exists 设置为 false。 毕竟,当循环中的所有内容都完成后,您只需要重定向到仪表板。希望它会起作用。

    【讨论】:

    • 我用了你做的,很遗憾也没有用。我认为问题似乎出在购物车本身。它不会创建具有不同颜色的新行 ID。也许我会通过保留名称的选项部分来传递它。
    • 将其通过购物车的选项区域仍然没有产生正确的结果。相同的产品但不同的类型仍在被覆盖。
    • 修正它有效。感谢您的帮助。
    • Np。很高兴你成功了。
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 2012-06-09
    相关资源
    最近更新 更多