2011-05-13 138 views
0

我正在嘗試爲CRUD活動編寫一個簡潔的更新控制器。這是基本的代碼:使用CI CRUD傳遞數據從數據庫更新表格

控制器:

function update($id) 
    {   
     $this->form_validation->set_rules('name','Name','required');    
     $this->form_validation->set_rules('age','Age','required|is_numeric');   
     $this->form_validation->set_rules('country','Country',''); 

     $this->form_validation->set_error_delimiters('<br /><span class="error">', '</span>'); 

     if ($this->form_validation->run() == FALSE) { 

      //Failed validation or first run 
      $data = $this->my_model->get_record($id); 

      $this->load->view('myform_view', $data); 

     } else { 

      //Validation success, update DB 

     } 
    } 

查看:

<?php 

$attributes = array('class' => '', 'id' => ''); 
echo form_open('my_form', $attributes); ?> 

<p> 
     <label for="name">Name</label> 
     <?php echo form_error('name'); ?> 
     <br /><input id="name" type="text" name="name" value="<?php echo set_value('name'); ?>" /> 
</p> 

<p> 
     <label for="age">Age</label> 
     <?php echo form_error('age'); ?> 
     <br /><input id="age" type="text" name="age" value="<?php echo set_value('age'); ?>" /> 
</p> 

<p> 
     <label for="country">Country</label> 
     <?php echo form_error('country'); ?> 
     <br /><input id="country" type="text" name="country" value="<?php echo set_value('country'); ?>" /> 
</p> 


<p> 
     <?php echo form_submit('submit', 'Submit'); ?> 
</p> 

<?php echo form_close(); ?> 

這是基本的結構,但是第一次的形式運行,沒有經過驗證的數據。因此我必須從數據庫中抓取這個。什麼是最好的方式將它傳遞給第一次運行的視圖?然後一旦表單被提交,如果驗證失敗,我希望失敗的數據顯示不再從數據庫重新加載。什麼是最好的方法來做到這一點?

回答

1

您應該有另一種查看方面的方法。然後根據「更新」方法提交表單。在那裏,你現在定義了form_validation。

我問了一個類似的問題。看到這個link

+0

世界上沒有辦法給它的所有壓縮成一個控制器?另外我如何填充視圖文件。目前我使用set_value()。 – Alex 2011-05-13 21:18:08

+1

我已經更新了我的答案。我想你在問我剛纔問過的同樣的事情。 – luckytaxi 2011-05-13 22:06:59

0

搶在更新控制器的數據先爲編輯如

$query = $this->db->where('id',$id)->get('table_name'); 
$data['edit'] = $query->result_array(); 

,然後將其簽入視圖文件

value="<?php if(isset($edit[0]['age'])){echo $edit[0]['age'];}else{echo set_value('age');}?>"