我有采购订单表格,我将产品详细信息存储在会话中,即产品名称,数量,费率等。它工作正常。但是当我编辑该采购订单时,我正确获取了已经存储的会话数据,但是当用户输入另一个产品时,它会覆盖第一个记录。表示仅显示新添加的记录。旧记录消失。以下是我的采购订单表单添加到购物车按钮的代码。
function index(){
$data= array('product_id'=>$this->input->post('product_id'),
'quantity'=>$this->input->post('quantity'),
'unit'=>$this->input->post('unit'),
'unit_rate'=>$this->input->post('unit_rate'));
//Get the cart
$cart = $this->session->userdata('data');
//Add data to this temporary variable
$cart[] = $data;
//Set back the data
$this->session->set_userdata('data', $cart);
$post_array['cart']=$this->session->userdata('data')
?>
<tr>
<th>Product Name</th>
<th>Quantity</th>
<th>Unit</th>
<th>Unit Rate</th>
<th>Action</th>
</tr>
<?php
$i=0;
foreach($post_array['cart'] as $item){
$query = $this->db->query("SELECT name FROM phppos_items WHERE
item_id='".$item['product_id']."'");
foreach($query->result() as $row){
$product_name=$row->name;
}
echo "<tr>";
echo "<td>".$product_name."</td>";
echo "<td>".$item['quantity']."</td>";
echo "<td>".$item['unit']."</td>";
echo "<td>".$item['unit_rate']."</td>";
echo "<td><a href='javascript:void(0)' rownum='".$i."'
class='remove_from_cart'><img src='images/close.png'/></a></td>";
echo "</tr>";
$i++;
}
?>
<?php
}
我在这里得到了旧的会话数据数组。
$this->session->userdata('sess_products');
我想知道如何使用新数据更新该会话数组?我在编辑时也这么称呼。
嘿,
这与添加会话数据以进行更新的方式相同。
$this->会话>set_userdata("some_name","some_value");
点击此链接
你为什么不使用CODEIGNITER内置的购物库。
检查链接
使用分隔符连接多个事物
$item=$this->session->userdata('item');
$item=$update."+"."New item";
$price=$this->session->userdata('price');
$price=$price."+"."New price"; //add as much as u want(but you can store only 4kb in CI session. so restrict add multiple things in cart)
$this->session->set_userdata('item',$item);
$this->session->set_userdata('price',$price);
这可能会对您有所帮助