2013-04-12 2 views
1

Je construis un site où l'utilisateur peut devenir membre et avoir un profil minimal. Néanmoins, dans le cas où cet utilisateur souhaite mettre à jour ses enregistrements (A propos de moi, Email, Numéro de téléphone, etc), je souhaite avoir un lien "Modifier le profil". Une fois cliqué, un formulaire est chargé avec des champs de saisie avec des valeurs remplies à partir de l'enregistrement de base de données de cet utilisateur. Il/elle peut changer les valeurs dans les champs et cliquer sur Enregistrer les modifications, puis celles-ci sont validées dans la base de données.modifier l'enregistrement de base de données à partir de codeigniter

J'ai essayé de le faire plusieurs fois mais j'ai échoué. Voici le code que j'ai essayé de charger des données sous forme:

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(); 
     }  
    } 

et mettre à jour enregistrement dans la table de base de données:

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'); 
     } 
    } 

Le principal problème que je confronté à l'exécution de code ci-dessus, est que d'une certaine manière quand J'exécute update_edit, il me dit toujours que la validation du formulaire a échoué et même si la condition du champ est remplie.

Merci pour l'aide à l'avance :)

+1

vous n'avez pas les données déclarées $ comme un tableau, vous gardez la valeur d'écraser lui. – Rooneyl

Répondre

1

Je ne suis pas au courant de la règle de validation isset. Essayez sans ça. Si le problème persiste, essayez print_r ($ _ POST) dans update_edit, avant de vérifier si isset ($ _ POST). Vérifiez également si votre nom d'utilisateur de la variable Session est présent.

0

Vous pouvez le faire avec une fonction de contrôleur et plus facile:

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); 
} 

Voici simple exemple. Vous pouvez le faire avec ID de session, ou ID avec paramètre (comme je l'ai fait).

J'espère que vous comprendrez

Questions connexes