更新Codeigniter中的用户详细信息

时间:2016-03-28 10:46:55

标签: php mysql codeigniter

我已经使用Codeignitor编写了自己知识的代码来更新用户详细信息,但是当我点击更新按钮用户帐户页面时没有任何反应。任何人都可以通过在我的代码下面使用以下内容来帮助我找到问题和解决方案:

控制器:

public function update_userdetail() {
    // Load form helper and validation library
    $this->load->helper('form');
    $this->load->library('form_validation');
    // Update field validation
    $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[4]|is_unique[users.username]', array('is_unique' => 'This username already exists.'));
    $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|is_unique[users.email]', array('is_unique' => 'This email already exists.'));
    if($this->form_validation->run() == false) {
        redirect('user/account');
    } else {
        // Set variable from Form
        $user_id    =   $this->input->post('user_id');
        $username   =   $this->input->post('username');
        $email      =   $this->input->post('email');
        if($this->user_model->update_user($user_id, $username, $email)) {
            $this->session->set_flashdata('notice','<div class="success">Your details updated Successfully!</div>');
            redirect('user/account');
        } else {    
            $this->session->set_flashdata('msg', '<div class="error">Problem with update your detail!</div>');
            redirect('user/account');
        }
    }
}

型号:

public function update_user($username, $email, $user_id) {  
        $data = array (
            'username'   => $username,
            'email'      => $email,
            'updated_at' => date('Y-m-j H:i:s'),
        );
        $this->db->where('id', $user_id);
        $this->db->update('users', $data);
        return; 
    }

形式:

<?php 
    $username   = ($this->session->userdata['username']);
    $email      = ($this->session->userdata['email']);
    $user_id    = ($this->session->userdata['user_id']);
    ?>
    <h3>Update detail</h3>
    <?php echo $this->session->flashdata('msg'); ?>
    <?php echo form_open(); ?>
    <input type="text" id="user_id" name="user_id" value="<?php echo $user_id; ?>">
    <div>
    <input type="text" id="username" name="username" placeholder="Username" value="<?php echo $username; ?>">
    <small class="error-text"><?php echo form_error('username'); ?></small>
    </div> 
    <div>
    <input type="email" id="email" name="email" placeholder="Enter your email" value="<?php echo $email; ?>">
    <small class="error-text"><?php echo form_error('email'); ?></small>
    </div>
    <div><?php echo form_submit('submit', 'Submit'); ?></div>
    <?php echo form_close(); ?>

2 个答案:

答案 0 :(得分:0)

您需要从autoload.php文件加载表单助手类:

位置:(application / config / autoload.php)

$autoload['helper'] = array('form');

第二个解决方案是,在Controller的构造函数中加载Form Helper。

public function __construct()
{
    parent::__construct();
    $this->load->helper('form');
}

答案 1 :(得分:0)

我发现了问题,它出现在模型上,它应该遵循:

public function update_user($user_id, $username, $email) //Change effect
{  
        $data = array (
            'username'   => $username,
            'email'      => $email,
            'updated_at' => date('Y-m-j H:i:s'),
        );
        $this->db->where('id', $user_id);
        return $this->db->update('users', $data); //Change effect
    }