2012-11-25 41 views
0

我對CI真的很陌生,今天一直在嘗試創建一個更新表單類,但我正陷入死衚衕。我有我的功能設置來創建表單並將數據發佈到數據庫,我現在需要能夠更新此。Codeigniter更新表單

我的編輯表單功能如下:

public function edit_event() 
{ 

    $vars = array(); 

    $data['form_url'] = $this->form_url; 

    if ($form_id = $this->EE->input->get('form_id')) 
    { 
     $data['form_id'] = $form_id; 
    } 

    return $this->EE->load->view('edit_event', $data, TRUE); 
} 

和函數中加載的edit_event文件是:

<?php 

    $this->EE=& get_instance(); 

    $this->load->helper('form'); 

     $attributes = array('class' => 'event_form', 'id' => 'my_event_form'); 

    echo form_open($form_url.AMP.'method=update_form', $attributes); 

     $this->EE->load->library('table'); 
     $this->EE->table->set_heading(
      'Preference', 
      'Setting' 
     ); 



     $query = $this->EE->db->query("SELECT * FROM exp_events WHERE id = '$form_id'"); 

     foreach($query->result_array() as $row) 
      { 

       $this->EE->table->add_row(
        form_label('Application Key', 'app_key'), 
        form_input('app_key',$row['app_key']) 
       ); 

       $this->EE->table->add_row(
        form_label('Access Token', 'access_token'), 
        form_input('access_token',$row['access_token']) 
       ); 

       $this->EE->table->add_row(
        form_label('User Key', 'user_key'), 
        form_input('user_key',$row['user_key']) 
       ); 

      } 

     echo $this->EE->table->generate(); 


     echo form_reset('reset', 'Clear Form'); 
     echo form_submit('mysubmit', 'Submit Post!'); 


    echo form_close(); 

?> 

然後我有我的更新表單功能:

public function update_form() 

{ 

    $form_id = $this->EE->input->get('form_id'); 

    $data['form_id'] = $form_id; 

    $form_data = array(
     'app_key'  => $this->EE->input->post('app_key'), 
     'access_token' => $this->EE->input->post('access_token'), 
     'user_key'  => $this->EE->input->post('user_key') 
    ); 


    $this->EE->db->where('id', $form_id);  
    $this->EE->db->update('exp_events', $form_data); 


    $this->EE->functions->redirect($this->base_url); 

} 

刪除$ form_if選項時,我可以獲取要更新的數據,但會更新d中的每個項目atabase。我顯然需要這個只更新正在編輯的窗體的窗體ID的數據。現在,當我提交更新表單時,我被重定向到了我的$ base_url,這是正確的,但是沒有數據被更新,因此我在定義表單id時顯然做錯了什麼?

正如我所說我是新來的,所以如果有人注意到任何首選的方法隨時讓我知道:)。

任何指針讚賞。

在此先感謝。

回答

0

您需要在您的形式「隱藏」的領域,隨着form_id。目前你的'form_id'不是你的輸入的一部分,所以當你去獲取form_id時它是失敗的。

變化

echo $this->EE->table->generate(); 
    echo form_reset('reset', 'Clear Form'); 
    echo form_submit('mysubmit', 'Submit Post!'); 

echo $this->EE->table->generate(); 
    echo form_hidden('form_id', $form_id); 
    echo form_reset('reset', 'Clear Form'); 
    echo form_submit('mysubmit', 'Submit Post!'); 
+0

感謝您的答覆。這就說得通了!!我已經添加了隱藏字段,但是當我提交表單時,字段沒有更新。只要我刪除$ form_id = $ this-> EE-> input-> get('form_id'); $ data ['form_id'] = $ form_id;從update_form函數中,立即爲所有表單提供數據更新。所以我必須在某處用EE-> db->更新出錯。 – Ben

+0

您在查看POST時正在查看GET。 '$ form_id = $ this-> EE-> input-> post('form_id');'。 –

+0

AHA! Gotcha,謝謝Derek! ShiftExchange你的意見也有很大的幫助,所以謝謝:) – Ben