[英]insert new record and update existing at the same time in codeigniter
這是我保存和更新采購訂單的代碼。
function save(&$purchase_data,$purchase_id)
{
$success=false;
//Run these queries as a transaction, we want to make sure we do all or nothing
$this->db->trans_start();
if($purchase_data)
{
if (!$purchase_id or !$this->exists($purchase_id))
{
//$purchase_data['purchase_id'] = $purchase_id = $purchase_data['purchase_id'];
$success = $this->db->insert('purchase_order',$purchase_data);
$post_array['cart']=$this->session->userdata('data');
/*print_r($post_array);
exit;*/
$purchase_id=$this->db->insert_id();
$i=0;
foreach($post_array['cart'] as $item)
{
//echo "<pre>"; print_r($item); echo "</pre>";
$query = $this->db->query("SELECT name FROM phppos_items WHERE item_id='".$item['product_id']."'");
foreach ($query->result() as $row)
{
$product_name=$row->name;
}
$product_id=$item['product_id'];
$quantity=$item['quantity'];
$unit=$item['unit'];
$unit_rate=$item['unit_rate'];
$query = $this->db->query("insert into phppos_productdetails(product_id,product_name,quantity,unit,unit_rate,purchase_id) values ('$product_id','$product_name','$quantity','$unit','$unit_rate','$purchase_id')");
$i++;
}
}
else
{
$this->db->where('purchase_id', $purchase_id);
$success = $this->db->update('purchase_order',$purchase_data);
//$this->session->set_userdata('sess_products');
$post_array['cart']=$this->session->userdata('sess_products');
$i=0;
foreach($post_array['cart'] as $item)
{
echo "<pre>"; print_r($item); echo "</pre>";
$query = $this->db->query("SELECT name FROM phppos_items WHERE item_id='".$item['product_id']."'");
foreach ($query->result() as $row)
{
$product_name=$row->name;
}
$product_id=$item['product_id'];
$quantity=$item['quantity'];
$unit=$item['unit'];
$unit_rate=$item['unit_rate'];
$query = $this->db->query("update phppos_productdetails set product_id='$product_id',product_name='$product_name',quantity='$quantity',unit='$unit',unit_rate='$unit_rate' where purchase_id='$purchase_id'");
$i++;
}
}
}
$this->db->trans_complete();
return $success;
}
保存代碼正常工作,但是在編輯時,只有新插入的記錄被保存到數據庫中。 這是用於從數據庫獲取產品詳細信息並將其存儲在編輯時的會話中的代碼。
function get_update_product(){
$purchase_id=$_POST['purchase_id'];
if($purchase_id!=''){
//$post_array['cart']='';
$res = $this->db->query("select * from phppos_productdetails WHERE purchase_id='$purchase_id'");
?>
<tr>
<th>Product Name</th>
<th>Quantity</th>
<th>Unit</th>
<th>Unit Rate</th>
<th>Action</th>
</tr>
<?php
$i=0;
foreach($res->result() as $row ){
$sess_products[$i]['product_id'] = $row->product_id;
$sess_products[$i]['quantity'] = $row->quantity;
$sess_products[$i]['unit'] = $row->unit;
$sess_products[$i]['unit_rate'] = $row->unit_rate;
$this->session->set_userdata('sess_products',$sess_products);
//$post_array['cart']=$this->session->userdata('sess_products');
$query = $this->db->query("SELECT name FROM phppos_items WHERE item_id='".$row->product_id."'");
foreach($query->result() as $row1 ){
$product_name=$row1->name;
}
echo "<tr>";
echo "<td><input type='hidden' style='width:80%;' value='".$row->product_id."' name='product_id[]'/></td>";
echo "<td><input type='hidden' style='width:80%;' value='".$product_name."' name='product_name[]'/></td>";
echo "</tr>";
echo "<tr>";
echo "<td style='width:40%;'>".$product_name."</td>";
echo "<td><input type='text' class='quantity' style='width:100%;' value='".$row->quantity."' name='quantity[]'/></td>";
echo "<td><input type='text' class='quantity' style='width:100%;' value='".$row->unit."' name='unit[]'/></td>";
echo "<td><input type='text' class='quantity' style='width:100%;' value='".$row->unit_rate."' name='unit_rate[]'/></td>";
echo "<td><a href='javascript:void(0)' rownum='".$i."' class='remove_from_update_cart'><img src='images/close.png'/></a></td>";
echo "</tr>";
$i++;
}
}
}
有人對此有任何想法嗎?
您可以通過以下行在codeigniter中更新會話
$this->session->set_userdata('your_session_variable',$products);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.