从codeigniter编辑数据库记录

时间:2013-04-12 06:39:49

标签: codeigniter codeigniter-2

我正在建立一个网站,用户可以成为会员并拥有最小的个人资料。然而,如果该用户希望更新他的记录(关于我,电子邮件,电话号码等),我想要一个链接“编辑个人资料”。单击后,表单将加载输入字段,其中的值将从该用户的数据库记录中填充。他/她可以更改字段中的值,然后单击“保存更改”,然后将这些值提交到数据库。

我尝试过几次,但一直都失败了。下面是我尝试以表格形式加载数据的代码:

public function load_edit()
    {
        //check user logged in 
        if(($this->session->userdata('username')!=""))
        {
            $data;
            $result = $this->profileModel->load_user_editable_data($this->session->userdata('username'));
            //check user data loaded successfully
            if(isset($result))
            {
                //get the user information and store to $data array 
                foreach($result as &$value)
                {
                    $data = $value; 
                }

                $this->load->view('profile_edit', $data);
            }
        }else{
            $this->login();
        }       
    }

并更新数据库表中的记录:

public function update_edit()
    {

         $this->form_validation->set_rules('fullname', 'الاسم الكامل', 'isset|required|alpha_dash');


        if(isset($_POST))
        {
            //check user logged in 
            if(($this->session->userdata('username')!=""))
            {
                //check that there are no form validation errors
                if($this->form_validation->run() == FALSE)
                {   
                    $data = $this->profileModel->load_user_editable_data($this->session->userdata('username'));
                    $this->load->view('profile_edit', $data);
                }else{
                    $result = $this->profileModel->update_profile($this->session->userdata('username'));
                    if($result){

                        $this->load->view('profile_edit', $result);             
                    }
                }
            }
        }else{
            $this->load->view('error');
        }   
    }

我面对执行上面代码时面临的主要问题是,当我执行update_edit时,它总是告诉我表单验证失败,即使满足了字段的条件。

提前感谢您的帮助:)

2 个答案:

答案 0 :(得分:1)

我不知道验证规则 isset 。试试没有它。

如果问题仍然存在,请在检查是否为isset($ _ POST)之前尝试在update_edit中执行print_r($ _ POST)。还要检查您的Session变量用户名是否存在。

答案 1 :(得分:0)

您可以使用一个控制器功能轻松完成:

public function edit($user_id = null) {

        $data['url'] = "edit/$user_id"; // URL
        $this->load->vars($data); // Load URL for FORM
        $user = $this->profileModel->get_user($user_id); // Select USER by ID

    if($this->input->post('save')) {
        $this->form_validation->set_rules('username', 'Username', 'required');
        if($this->form_validation->run()) {

            $user['username'] = $this->input->post('username'); // Get new username
            $this->profileModel->edit($user); // Edit
            // redirect somewhere. Edit done!
        }
    }

    $this->load->view('content', 'profile_edit', $user);
}

这是一个简单的例子。您可以使用会话ID或带参数的ID(就像我做的那样)。

我希望你能理解