行记录未在codeigniter中更新

时间:2011-05-20 05:54:39

标签: php codeigniter

我在下面的代码中需要帮助。我使用codeigniter作为我的开发框架

查看

<table>
                        <tr>
                            <th>ID</th>
                            <th>Username</th>
                            <th>Email Address</th>
                            <th>Actions</th>
                        </tr>
                        <?php foreach($query as $row){?>
                        <tr>
                            <td><?php print $row->id; ?></td>
                            <td><?php print $row->username; ?></td>
                            <td><?php print $row->email; ?></td>
                            <td><?=anchor('userslist/get_Admin/'.$row->id, 'Edit');?>&nbsp;|&nbsp;<?=anchor('userslist/deleteAdmin/'.$row->id, 'Delete');?></td>
                        </tr>
                        <?php }?>
                    </table>

控制器

        function get_Admin($id)
    {
        $data['query']=$this->usermodel->get_Admin($id);
        $this->load->view('admin/users/edit-user-template',$data);
    }

查看(更新表格)

<table>
    <tr>
        <th colspan="2">Update an Admin Account</th>
    </tr>
     <?php echo form_open('userslist/update_admin'); ?>
    <tr>
        <td>Username</td>
        <td>
        <?php
            $data = array('name'=>'username', 'id'=>'username', 'class'=>'signup-txtbox', 'value'=>$query['username']);
            echo form_input($data);
        ?>
        </td>
    </tr>
    <tr>
        <td>Email</td>
        <td>
        <?php
            $data = array('name'=>'email', 'id'=>'email', 'class'=>'signup-txtbox', 'value'=>$query['email']);
            echo form_input($data);
        ?>
        </td>
    </tr>
    <tr>
        <td>Password</td>
        <td>
        <?php
            $data = array('name'=>'password', 'id'=>'password', 'class'=>'signup-txtbox', 'value'=>'');
            echo form_input($data);
        ?>
        </td>
    </tr>
    <tr>
        <td>Confirm Password</td>
        <td>
        <?php
            $data = array('name'=>'password2', 'id'=>'password2', 'class'=>'signup-txtbox', 'value'=>'');
            echo form_input($data);
        ?>
        </td>
    </tr>
    <tr>
    <tr>
        <td>&nbsp;</td>
        <td>
        <?php
            $data = array('name'=>'submit', 'id'=>'submit', 'class'=>'signup-btn', 'value'=>'Update Acccount');
            echo form_submit($data);
        ?>
        </td>
    </tr>
    <tr>
        <td colspan="2"><?php echo validation_errors('<p class="error">'); ?></td>
    </tr>
</table>

控制器

        function update_admin()
        {
            $this->usermodel->update_admin();
            redirect('userslist');

}

模型

        function update_admin()
    {
        $update_admin_data = array(
                'username' => $this->input->post('username'),
                'email' => $this->input->post('email'),
                'password ' => md5($this->input->post('password '))
            );
            $this->db->where('id',$id);
            $update = $this->db->update('users', $update_admin_data);
            return $update;
    }

整个代码不会更新选定的记录,它只是在没有更新的情况下重定向到页面。可能的解决方案是什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

您缺少$id属性。在第二个视图中更新表单提交:

<?php echo form_open('userslist/update_admin/'.$query['id']); ?>

修复第二个控制器:

function update_admin($id)
        {
            $this->usermodel->update_admin($id);
            redirect('userslist');
}

最后,修复您的update_admin模型函数,以便像这样开始:

 function update_admin($id)
    {

答案 1 :(得分:0)

我相信这是你的问题所在

$this->db->where('id',$id);

变量$id未在您的模型函数中定义,因此当您尝试执行时$this->db->where('id',$id); $ id不是变量,因此无法找到任何内容......因此无法更新。

如果$id是uri的一部分,请执行以下操作:

$id = $this->uri->segment(3) //or whatever the segment is going to be