2015-01-21 88 views
0

我有一個採購訂單,用於存儲會話中的產品詳細信息,即產品名稱,數量,費率等並將其保存到數據庫。在編輯採購訂單時,從數據庫獲取產品詳細信息並將其存儲在會話中,並將新產品詳細信息添加到會話數組中。它工作正常。但是當我提交表單時,只有最後一條記錄,即新添加的記錄被插入到數據庫中。只有最後一行插入到數據庫中

這裏您可以假設我在下訂單後編輯購物車。 我的問題是,添加,刪除購物車中的物品後,下單是邏輯上正確或不?如果是,那麼如何?

這是我保存和更新採購訂單的代碼。

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; 
    } 
+0

凡你定義了'$ purchase_id'? – 2015-01-21 06:07:03

+0

@IndrasinhBihola請參閱我上面的編輯.. – 2015-01-21 06:10:57

+0

您的內部查詢是基於'$ purchase_id'在整個流程中保持相同,這是一個問題 – 2015-01-21 06:21:31

回答

0

您的疑問:

$query = $this->db->query("update phppos_productdetails set product_name='$product_name',product_id='$product_id',quantity='$quantity',unit='$unit',unit_rate='$unit_rate' where purchase_id='$purchase_id'");" 

通過觀察上面的查詢在此查詢使用像參數 $ PRODUCT_NAME是出於內心的foreach範圍。
因此,它只需要最後一條記錄並將其插入到數據庫中。
如果將此查詢放在內部foreach循環中,則會根據需要插入適當的記錄。

希望這會幫助你。

0

你已經把(其中purchase_id =「$ purchase_id」「) 因此當循環執行最後一次更新的所有記錄與purchase_id爲$ purchase_id

相關問題