如何将购物车中的多个产品作为单独的行插入数据库中



我是这方面的初学者,我提前道歉。我整晚都在冲浪,试图找到问题的答案。然后我看到了这个程序员平台。

这是我的问题,我的函数运行得很好。我有这个购物车,用户可以选择许多产品并提交它。但它只向我的数据库中插入一个值。有人能帮我吗?

shopping_cart

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Shopping_cart extends CI_Controller {
function index()
{
$this->load->model("shopping_cart_model");
$data["product"] = $this->shopping_cart_model->fetch_all();
$this->load->view("shopping_cart", $data);
if (isset($_POST['submitbtn'])) {
$data = array(
"product_name"  => $_POST["cart_name"],
"quantity"  => $_POST["cart_qty"],
"product_price"  => $_POST["cart_price"]
);
$this->db->insert('occasion', $data);
$this->session->set_flashdata("success", "Your account has been 
reserved");
redirect("shopping_cart","refresh");    
}
}
function add()
{
$this->load->library("cart");
$data = array(
"id"  => $_POST["product_id"],
"name"  => $_POST["product_name"],
"qty"  => $_POST["quantity"],
"price"  => $_POST["product_price"]
);
$this->cart->insert($data); //return rowid 
echo $this->view();
}
function load()
{
echo $this->view();
}
function remove()
{
$this->load->library("cart");
$row_id = $_POST["row_id"];
$data = array(
'rowid'  => $row_id,
'qty'  => 0
);
$this->cart->update($data);
echo $this->view();
}
function clear()
{
$this->load->library("cart");
$this->cart->destroy();
echo $this->view();
}
function view()
{
$this->load->library("cart");
$output = '';
$output .= '
<h3>Shopping Cart</h3><br />
<div class="table-responsive">
<div align="right">
<button type="button" id="clear_cart" class="btn btn-warning">Clear 
Cart</button>
</div>
<br />
<table class="table table-bordered">
<tr>
<th width="40%">Name</th>
<th width="15%">Quantity</th>
<th width="15%">Price</th>
<th width="15%">Total</th>
<th width="15%">Action</th>
</tr>';
$count = 0;
foreach($this->cart->contents() as $items)
{
$count++;
$output .= '
<tr> 
<td>'.$items["name"].' <input type="hidden" id="cart_name" name="cart_name" value="'.$items["name"].'" /></td>
<td>'.$items["qty"].' <input type="hidden" id="cart_qty" name="cart_qty" value="'.$items["qty"].'" /></td>
<td>'.$items["price"].' <input type="hidden" id="cart_price" name="cart_price" value="'.$items["price"].'" /></td>
<td>'.$items["subtotal"].'</td>
<td><button type="button" name="remove" class="btn btn-danger btn-xs remove_inventory" id="'.$items["rowid"].'">Remove</button></td>
</tr>
';
}
$output .= '
<tr>
<td colspan="4" align="right">Total</td>
<td>'.$this->cart->total().'</td>
</tr>
</table>
</div>
';
if($count == 0)
{
$output = '<h3 align="center">Cart is Empty</h3>';
}
return $output;
}
}
$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);
}

最新更新