2011-11-16 130 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