2013-01-25 53 views
0

我試圖提交其編輯用戶學者詳細一個編輯表單張貼同一控制器兩次, 這些細節都有唯一的ID在DB和我的短代碼看起來象下面這樣:使用flashdata而笨

class edit extends ci_controller 
{ 

function user_academics($id = NULL) 
    { 
     if(isset($id) == FALSE)  //if link is ./edit/user_academics 
     { 
      $id = NULL; 
      $link = site_url('profile'); 
      show_error("Invalid Page Request! <a href='$link' Go to Profile </a>"); 
     } 

     $user_id = $this->session->userdata('user_id');   
     $data['fill'] = $this->edit_model->get_user_academics($id); 

     if($user_id != $data['fill']['user_id']) // check if logged in user is accessing his record or others 
     { 
      $link = site_url('profile'); 
      show_error("This is an Invalid Request ! <a href='$link'>Go to Profile </a>"); 
     } 
     else // actual work starts here 
     { 
      $this->session->set_flashdata('ua_id',$id); // update_academics will get this data 

      $this->load->view('edit/edit_3_view',$data); 

     } 
    } 

function update_academics() 
    { 
     $ua_id = $this->session->flashdata('ua_id'); // flash data used here . 
     if(!$ua_id) 
     { 
      show_error('Sorry, This request is not valid!'); 

     } 
     $academics = array( 
      // All post values 
     ); 

     $this->edit_model->update_user_academics($academics,$ua_id); 
     //print_r($academics); 
     redirect('profile'); 

    } 

} 

現在的問題是 - 如果我打開兩個不同的記錄進行編輯,那麼它將只設置一個Session Flash值。 - 無論我編輯什麼,最新的閃存值的現有值都會更新。 如果我在上面的代碼中出現錯誤,請建議我使用另一種方法或糾正我。由於

+0

嘗試將$ id存儲在數組中。 $ data [] = $ id;然後傳遞數組或序列化數組並傳遞給flashdata – Matt

回答

1

保存在陣列flashdata,如:

$myArr = array('value 1', 'value 1'); 
//set it 
$this->session->set_flashdata('some_name', $myArr); 

,並考慮:

$dataArrs = $this->session->flashdata('some_name'); 
//loop thru $dataArrs to show the flashdata 
+0

好的,謝謝,我想我會再次使用id參數。和你的建議。 – Tejas

0

閃存數據簡直像變量,它只有在下一請求可用,可以繞過這一行爲通過使用兩個不同的鍵與記錄ID,以便當您使用閃存數據顯示消息時,您可以訪問具有特定記錄ID的鍵。