$data = array(
"product_name" => $_POST["cart_name"],
"quantity" => $_POST["cart_qty"],
"product_price" => $_POST["cart_price"]
);
$this->db->insert('occasion', $data);
1) при условии, что вы проверяете корзину покупок с помощью $ _POST ['submitbtn'] Похоже, вы просто вставляете один продукт.
2) Почему вы получаете продукт от $ _POST, еслиВы уже храните их в карточной библиотеке?
Может быть, это может помочь:
foreach($this->cart->contents() as $items)
{
$data = array(
"product_name" => $items["name"],
"quantity" => $items["qty"],
"product_price" => $items["price"]
);
$this->db->insert('occasion', $data);
}