2013-04-12 93 views
1

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

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

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,它总是告诉我表单验证失败,即使满足了字段的条件。

感谢提前:)

+1

你还没有将$ data声明为数组,所以你一直覆盖它的值。 – Rooneyl

回答

1

的帮助,我不知道验证规则isset的。尝试没有它。

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

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(就像我做的那样)。

我希望你能理解

相关问题