【问题标题】:Codeigniter Updating database row by passing id in uriCodeigniter 通过在 uri 中传递 id 来更新数据库行
【发布时间】:2013-08-01 01:34:13
【问题描述】:

列表(视图1)中的每一行都有一个编辑按钮。单击该编辑按钮时,将打开一个站点,我可以在其中编辑行字段(视图2)。它将行的 id 正确传递给 view2(下面示例中的 id 11),我在模型中调用哪个 uri 段以使用来自控制器的数组数据更新第 11 行,该数组数据也传递给模型。但它仍然没有更新。感谢您的帮助。

(视图 1):

//clicking edit button - redirects and passes row id 11 to view 2
<a href='<?= site_url("admin/admins/update_site/$admin->id") ?>'><img src='<?= base_url('media/admin/images/icons/config.png'); ?>'/></a>

(视图 2):

// view 2 opens where I can edit the row fields 
//url is now: www.site.com/admin/admins/update_site/11:

<form action="<?= site_url('admin/admins/update'); ?>" method="POST">
    Username: <br>
    <input type='text' name='username'/><br>
    Password: <br>
    <input type='password' name='password' /><br>
    <input type='submit' name='submit' value='Save' />
</form>

控制器:

//making an array with updated data and send it to the model
public function update(){
   $update = array(
        'username' => $this->input->post('username'),
        'password' => $this->input->post('password')
   );

  $this->load->model('admin/admins_model');
  $this->admins_model->update_admin($update);
  redirect(site_url('admin/admins/read'));
}

型号:

//update row 11 (from uri segment) the with the array data from controller 
public function update_admin($update){
    $this->db->where('id', $this->uri->segment(4));
    $this->db->update('admins', $update);
}

【问题讨论】:

    标签: php mysql codeigniter crud


    【解决方案1】:

    我建议你在你的表单中为 id 添加隐藏字段,这里的问题是你的表单操作没有第 4 段。

    视图2:

    <form action="<?= site_url('admin/admins/update'); ?>" method="POST">
        Username: <br>
        <input type='text' name='username'/><br>
        Password: <br>
        <input type='password' name='password' /><br>
        <input type='hidden' name='id' value="<?php $this->uri->segment(4) ?>"/>
        <input type='submit' name='submit' value='Save' />
    </form>
    

    型号:

    //update row 11 (from uri segment) the with the array data from controller 
    public function update_admin($update){
        $this->db->where('id', $this->input->post('id'));
        $this->db->update('admins', $update);
    }
    

    【讨论】:

      【解决方案2】:

      编辑您的路线,使其接受这样的 url:admin/admins/update/1 然后您可以简单地将参数添加到您的控制器 function update($id) 以便 $id 将存储 1。我建议您使用您的路线 /(:num) 到防止非数字字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-08
        • 1970-01-01
        • 2016-02-13
        • 1970-01-01
        • 1970-01-01
        • 2014-04-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多