2011-11-16 80 views
3

所以我通常對PHP和MySQL以及MVC應用程序都很陌生。請原諒我,如果這是一個已經得到解答的問題,我找不到任何透明的東西,並且顯示出完整的MVC流程。使用CodeIgniter更新MySQL表中的行

所以我有一個HTML表格,裏面填充了數據填充的輸入,我爲每行生成一個表格作爲一個單獨的表格,併爲每個表格提交一個提交按鈕。我想要更新按鈕只更新與生成的表單關聯的行。

如果從模型中刪除this->db->where('id', $id);,它將使用相同的信息更新表中的所有行,並且不會更新任何內容。

任何幫助或實現此目的的替代方法將不勝感激。控制器功能也不是很糟糕,我認爲。

謝謝。

VIEW

<?php foreach($log->result() as $row): ?> 
<?=form_open('hq/update_entry');?> 
    <table class="editLog"> 
     <tr> 
      <td><?php 
       $data = array(
        'name' => 'no', 
        'value' => $row->no 
       ); 
       echo form_input($data); 
       ?></td> 
      <td><?php 
       $data = array(
        'name' => 'date', 
        'value' => $row->date 
       ); 
       echo form_input($data); 
       ?></td> 
      <td><?php 
       $data = array(
        'name' => 'artist', 
        'value' => $row->artist 
       ); 
       echo form_input($data); 
       ?></td> 
      <td><?php 
       $data = array(
        'name' => 'title', 
        'value' => $row->title 
       ); 
       echo form_input($data); 
       ?></td> 
      <td><?php 
       $data = array(
        'name' => 'long', 
        'value' => $row->long 
       ); 
       echo form_input($data); 
       ?></td> 
      <td><?php 
       $data = array(
        'name' => 'lat', 
        'value' => $row->lat 
       ); 
       echo form_input($data); 
       ?></td> 
       <td> 
      <?php 
       echo form_hidden('id', $row->id); 
       $data = array(
        'class' => 'updateSubmit', 
        'value' => '✚' 
       ); 
       echo form_submit($data); 
      ?></td> 
     </tr> 
    </table> 
<?=form_close();?> 

控制器

function update_entry() 
{ 
    $this->load->model('update_entry_model'); 

    if($query = $this->update_entry_model->update()) 
    { 
     $this->index(); 
    } 
    else 
    { 
     redirect('hq'); 
    } 
} 

模型

<?php 
    class Update_entry_model extends CI_Model { 
     function update() 
     { 
      $data = array(
       'no' => $this->input->post('no'), 
       'date' => $this->input->post('date'), 
       'artist' => $this->input->post('artist'), 
       'title' => $this->input->post('title'), 
       'long' => $this->input->post('long'), 
       'lat' => $this->input->post('lat') 
      ); 
      $this->db->where('id', $id); 
      $this->db->update('entries', $data); 
     } 
    } 

回答

3

沒有做進一步的調查,我看到,在模型函數update()方法,你缺少

$id = $this->input->post('id'); 

之所以加入this->db->where('id', $id);沒有任何更新是因爲$ ID當前未設置爲任意值。

+1

感謝您指出我的基本錯誤!現在完美運作。 – chrstphrknwtn