2012-11-14 163 views
0

我有一種模式中的表單,用於對記錄進行更新。表單似乎沒有問題,瀏覽器中的URL指向正確的位置(domain.net/cities/update_city/1),但沒有顯示任何視圖,並且記錄從不更新。我搜索了互聯網,但大多數教程似乎略過更新或硬編碼更新的id。我只用了一週CI。CodeIgniter更新不能正常工作

型號代碼

// Edit City 
function edit_city($city_id) { 
    $data = array('city_name' => $this->input->post('city_name')); 
    $this->db->where('city_id', $city_id); 
    $this->db->update('cities', $data); 
} 

查看代碼(表格是在模式和jQuery的被city_id加)

<div class="modal-body"> 
    <?php $this->load->helper('form'); ?> 
     <?php echo form_open('/cities/update_city/'); ?> 
     <label class="control-label" for="name">City</label> 
     <input type="text" name="city_name" id="city_name" value=""/><br /> 
     <input type="submit" name="submit" class="btn-small btn-primary" value="Edit City" /> 
     <button class="btn-small" data-dismiss="modal">Cancel</button> 
    <?php echo form_close(); ?> 
</div> 
<script> 
    // scripts for modal windows 
     $(document).on("click", ".edit-modal", function() { 
     var city_name = $(this).data('name'); 
     var city_id = $(this).data('id'); 
     $(".modal-body #city_name").val(city_name); 
     //set the forms action to include the city_id 
     $(".modal-body form").attr('action','/cities/update_city/'+city_id); 
     $('#editCityDialog').modal('show'); 
    });  

控制器代碼

// Update City 
function update_city($city_id) { 
$this->load->model('cities_model'); 

    if ($this->input->post('submit')) { 
     $data = array('city_name' => $this->input->post('city_name')); 

     $this->cities_model->edit_city('cities', array('city_id' => $city_id),$data); 
     redirect('/cities'); 
    } 
} 

回答

1

下面是一個例子,你可以使用它來輕鬆更新(我對英語不好,不好意思)。

型號:

class Cities_model extends CI_Model{ 
    function edit($table,$where,$data){ 
     foreach ($where as $key => $value){ 
      $this->db->where($key,$value); 
     } 
     $this->db->update($table,$data);   
    } 
} 

控制器:

function update_city($city_id){ 
    $this->load->model('cities_model'); 
     if($this->input->post('submit'){ 
     $data = array('city_name' => $this->input->post('city_name')); 

     $this->cities_model->edit('cities',array('city_id' => $city_id),$data); //(table,where,data); see in model. 
     redirect(''); 
     } 
    } 

*如果你去一個鏈接爲 「HTTP://......update_city/2」 和功能update_city ($ city_id),$ city_id將接收爲「2」,您不需要寫uri_segment來獲取$ city_id。希望可以幫助您

編輯:

控制器:

function update_city($city_id) { 
$this->load->model('cities_model'); 

if ($this->input->post('submit')) { 
    $this->cities_model->edit_city($city_id); 
    redirect('/cities'); 
} 

}

+0

感謝試圖幫助我。我更新了上面的代碼以匹配您的控制器代碼。我不明白你的模型代碼與$表$ $哪裏和$數據。自從表格以後,我不會將這些傳遞給模型,並且此函數的位置始終相同。當提交表單時,城市視圖現在顯示出來,所以我越來越接近,儘管記錄沒有更新。 –

+0

我已編輯您的控制器代碼,請參閱我的文章底部。嘗試一下。 我想告訴你很多事情,但我不能。我的英語非常糟糕! –

+0

工作,謝謝。我將不得不打印出來,花一些時間瀏覽代碼,以便我能夠準確理解發生了什麼。 –