2017-01-24 15 views
0

私のクライアントはOpencart v2.1.0.2を使用しています。問題は、カートから1つのアイテムを削除し、他のすべてのアイテムも削除されることです。はい、それは削除機能のために呼び出す行をカスタムテンプレートを使用して、ここだだ:opencartカートから1つの項目を削除すると、すべてが削除されます

<td class="text-center"><button type="button" onclick="cart.remove('<?php echo $product['cart_id']; ?>');" title="<?php echo $button_remove; ?>" class="btn btn-danger btn-xs"><i class="fa fa-times"></i></button></td> 

また、私は、このボタンをクリックしたときのjsファイルが呼び出されているかを調べる必要があります。それがお手伝いします場合は、これは私は、これは、カートからアイテムを削除するときに実行をopencart cart.phpライブラリから関数だと思う:

public function remove($cart_id) { 
    $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE cart_id = '" . (int)$cart_id . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "'"); 
} 

答えて

0
DELETE FROM 

はすべてを削除します。削除しようとしている商品のIDが不足しています。

WHEREは、cart_id、customer_id、およびsession_idのみを指定します。このクエリは、その条件に一致するものをすべて削除します。それは特定の製品に磨きをかけることはないので、それらをすべて取ります。

それはプロダクトIDのために使用するものの変数を知ることがなければ、適切なクエリは次のようなものになるだろう:ほとんどの製品IDコールの$ _GET要求さ

public function remove($cart_id) { 
     $this->db->query("DELETE '".(int)$this->request->post['product_id']."' FROM " . DB_PREFIX . "cart WHERE cart_id = '" . (int)$cart_id . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "'"); 
} 

(int)$this->request->get['product_id']。 別のインスタンスは次のようになります$ _POSTコール

ポスト/ GETが動作しない場合、テンプレートも$product_idような何かを行うので、その使用して、変数かどうか確認するため (int)$this->request->post['product_id']

クエリが強化されると、javascriptボタンはカートID(商品ではない)のみを指定します。私の例を働かせたいなら、あなたのプロダクトIDを入手してください。 product_idとcart_idの両方を渡す必要があります。そうでなければ、cart_idなしで、他の買い物客が同じ商品を同時に持っている場合、買い物客を取り除くと、その商品がすべて削除されます。

関連する問題