Welcome Guest, Not a member yet? Register   Sign In
[Solved] Problem with User section
#1

(This post was last modified: 08-02-2017, 02:22 AM by wendaf. Edit Reason: Thanks to Wouter60 he solved my problem )

Hello ,
I have a problem with the interface i can't find how to show user informations with the specific id in my views  i have do a edit section but he don't actualize now , i do disconnect an re-connect to my account for to take effect.

this is my code :


User_model.php :

Code:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

/**
* User_model class.
*
* @extends CI_Model
*/
class User_model extends CI_Model {

    /**
     * __construct function.
     *
     * @access public
     * @return void
     */
    public function __construct() {
        
        parent::__construct();
        $this->load->database();
        
    }
    
    /**
     * create_user function.
     *
     * @access public
     * @param mixed $username
     * @param mixed $email
     * @param mixed $password
     * @return bool true on success, false on failure
     */
    public function create_user($username, $email, $password) {
        
        $data = array(
            'pseudo'   => $username,
            'email'      => $email,
            'pass'   => $this->hash_password($password),
        );
        
        return $this->db->insert('accounts', $data);
        
    }
    
    /**
     * resolve_user_login function.
     *
     * @access public
     * @param mixed $username
     * @param mixed $password
     * @return bool true on success, false on failure
     */
    public function resolve_user_login($username, $password) {
        
        $this->db->select('pass');
        $this->db->from('accounts');
        $this->db->where('pseudo', $username);
        $hash = $this->db->get()->row('pass');
        
        return $this->verify_password_hash($password, $hash);
        
    }
    
    /**
     * get_user_id_from_username function.
     *
     * @access public
     * @param mixed $username
     * @return int the user id
     */
    public function get_user_id_from_username($username) {
        
        $this->db->select('guid');
        $this->db->from('accounts');
        $this->db->where('pseudo', $username);

        return $this->db->get()->row('guid');
        
    }
    
    /**
     * get_user function.
     *
     * @access public
     * @param mixed $user_id
     * @return object the user object
     */
    public function get_user($user_id) {
        
        $this->db->from('accounts');
        $this->db->where('guid', $user_id);
        return $this->db->get()->row();
        
    }
    
    /**
     * hash_password function.
     *
     * @access private
     * @param mixed $password
     * @return string|bool could be a string on success, or bool false on failure
     */
    private function hash_password($password) {
        
        return password_hash($password, PASSWORD_BCRYPT);
        
    }
    
    /**
     * verify_password_hash function.
     *
     * @access private
     * @param mixed $password
     * @param mixed $hash
     * @return bool
     */
    private function verify_password_hash($password, $hash) {
        
        return password_verify($password, $hash);
        
    }
    
    /**
     * account_update function.
     *
     * @access public
     * @param mixed $username
     * @param mixed $email
     * @param mixed $password
     * @return bool true on success, false on failure
     */
    public function update_user($pseudo, $pseudo_dofus, $email, $pseudo_youtube, $sexe, $travail, $url_dofus) {
        
        $guid = $this->session->userdata('user_id');
        
        $data = array(
            
            'pseudo'         => $pseudo,
            'pseudo_dofus'   => $pseudo_dofus,
            'email'          => $email,
            'pseudo_youtube' => $pseudo_youtube,
            'sexe'           => $sexe,
            'travail'        => $travail,
            'url_dofus'      => $url_dofus,
        );
        
         $this->db->where('guid', $guid);

         return $this->db->update('accounts', $data);
        
    }
    
}


The User controller :

Code:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

/**
* User class.
*
* @extends CI_Controller
*/
class User extends CI_Controller {

    /**
     * __construct function.
     *
     * @access public
     * @return void
     */
    public function __construct() {
        
        parent::__construct();
        $this->load->library(array('session'));
        $this->load->helper(array('url'));
        $this->load->model('user_model');
        
    }
    
    
    public function index() {
        
         //If no session, redirect to login page
        redirect('home/');
        
        
    }
    
    /**
     * register function.
     *
     * @access public
     * @return void
     */
    public function register() {
        
        // create the data object
        $data = new stdClass();
        
        // load form helper and validation library
        $this->load->helper('form');
        $this->load->library('form_validation');
        
        // set validation rules
        $this->form_validation->set_rules('pseudo', 'pseudo', 'trim|required|alpha_numeric|min_length[4]|is_unique[accounts.pseudo]', array('is_unique' => 'Ce pseudo est déjà choisis. Veuillez en choisir un nouveau.'));
        $this->form_validation->set_rules('mail', 'mail', 'trim|required|valid_email|is_unique[accounts.email]',
        array('is_unique' => 'L\'adresse mail est déjà utilisé.  Veuillez en choisir une nouvelle.'));
        $this->form_validation->set_rules('password', 'password', 'trim|required|min_length[6]',
        array('min_length' => 'Le mot de passe doit comporter au moins 6 caractères.'));
        $this->form_validation->set_rules('conf_password', 'conf_password', 'trim|required|matches[password]',
        array('matches' => 'Les mots de passes ne sont pas identiques.'));
        
        if ($this->form_validation->run() === false) {
            
            // validation not ok, send validation errors to the view
            $this->load->view('layout/header');
            $this->load->view('user/register', $data);
            $this->load->view('layout/footer');
            
        } else {
            
            // set variables from the form
            $username = $this->input->post('pseudo');
            $email    = $this->input->post('mail');
            $password = $this->input->post('password');
            
            if ($this->user_model->create_user($username, $email, $password)) {
                
                // user creation ok
                $this->load->view('layout/header');
                $this->load->view('user/register_success', $data);
                $this->load->view('layout/footer');
                
            } else {
                
                // user creation failed, this should never happen
                $data->error = 'Un problème est surveneu lors de la création de votre compte. Veuillez réessayer.';
                
                // send error to the view
                $this->load->view('layout/header');
                $this->load->view('user/register', $data);
                $this->load->view('layout/footer');
                
            }
            
        }
        
    }
        
    /**
     * login function.
     *
     * @access public
     * @return void
     */
    public function login() {
        
        // create the data object
        $data = new stdClass();
        
        // load form helper and validation library
        $this->load->helper('form');
        $this->load->library('form_validation');
        
        // set validation rules
        $this->form_validation->set_rules('username', 'Username', 'required|alpha_numeric');
        $this->form_validation->set_rules('password', 'Password', 'required');
        
        
        if ($this->form_validation->run() == false) {
            
            // validation not ok, send validation errors to the view
            $this->load->view('layout/header');
            $this->load->view('user/login');
            $this->load->view('layout/footer');
            
        } else {
            
            // set variables from the form
            $username = $this->input->post('username');
            $password = $this->input->post('password');
            
            if ($this->user_model->resolve_user_login($username, $password)) {
                
                $user_id = $this->user_model->get_user_id_from_username($username);
                $user    = $this->user_model->get_user($user_id);
                
                // set session user datas
                $_SESSION['user_id']        = (int)$user->guid;
                $_SESSION['username']       = (string)$user->pseudo;
                $_SESSION['email']          = (string)$user->email;
                $_SESSION['pseudo_dofus']   = (string)$user->pseudo_dofus;
                $_SESSION['pseudo_youtube'] = (string)$user->pseudo_youtube;
                $_SESSION['sexe']           = (string)$user->sexe;
                $_SESSION['travail']        = (string)$user->travail;
                $_SESSION['url_dofus']      = (string)$user->url_dofus;
                $_SESSION['logged_in']      = (bool)true;
                
                // user login ok
                $this->load->view('layout/header');
                $this->load->view('user/login_success', $data);
                $this->load->view('layout/footer');
                
            } else {
                
                // login failed
                $data->error = 'Mauvais nom d\'utlisateur ou mot de passe !';
                
                // send error to the view
                $this->load->view('layout/header');
                $this->load->view('user/login', $data);
                $this->load->view('layout/footer');
                
            }
            
        }
        
    }
    
    /**
     * logout function.
     *
     * @access public
     * @return void
     */
    public function logout() {
        
        // create the data object
        $data = new stdClass();
        
        if(!$this->session->has_userdata('guid')){
            
            // remove session datas
            foreach ($_SESSION as $key => $value) {
                unset($_SESSION[$key]);
            }
            
            // user logout ok
            $this->load->view('layout/header');
            $this->load->view('user/logout_success', $data);
            $this->load->view('layout/footer');
            
        } else {
            
            // there user was not logged in, we cannot logged him out,
            // redirect him to site root
            redirect('/');
            
        }
        
    }
    
     /**
    * account function.
    *
    * @access public
    * @return void
    */
   public function account() {
        
        // load form helper and validation library
        $this->load->helper('form');
        $this->load->library('form_validation');
        
        // set validation rules
        $this->form_validation->set_rules('pseudo', 'pseudo', 'required|alpha_numeric');
        $this->form_validation->set_rules('pseudo_dofus', 'pseudo_dofus', 'required');
        $this->form_validation->set_rules('email', 'email', 'required');
        $this->form_validation->set_rules('pseudo_youtube', 'pseudo_youtube', 'required');
        $this->form_validation->set_rules('sexe', 'sexe', 'required|alpha_numeric');
        $this->form_validation->set_rules('travail', 'travail', 'required');
        $this->form_validation->set_rules('url_dofus', 'url_dofus', 'required');
        
        
        if ($this->form_validation->run() == false) {
            
            // validation not ok, send validation errors to the view
            $this->load->view('layout/header');
            $this->load->view('user/account');
            $this->load->view('layout/footer');
            
        } else {
            
            // set variables from the form
            $pseudo = $this->input->post('pseudo');
            $pseudo_dofus = $this->input->post('pseudo_dofus');
            $email = $this->input->post('email');
            $pseudo_youtube = $this->input->post('pseudo_youtube');
            $sexe = $this->input->post('sexe');
            $travail = $this->input->post('travail');
            $url_dofus = $this->input->post('url_dofus');
                

            if ($this->user_model->update_user($pseudo, $pseudo_dofus, $email, $pseudo_youtube, $sexe, $travail, $url_dofus)) {
                
                // user account update
                $this->load->view('layout/header');
                $this->load->view('user/account_update');
                $this->load->view('layout/footer');
                
            } else {

           // there user was not logged in, we cannot logged him out,
           // redirect him to site root
           redirect('/');

       }

   }
    }
    
}


And the view : 

Code:
<?php if (isset($_SESSION['username']) && $_SESSION['logged_in'] === true) : ?>

<!--=== Content Part ===-->    
<div class="container content">    
        <div class="row">
            <?php if (validation_errors()) : ?>
                <div class="col-md-12">
                    <div class="alert alert-danger" role="alert">
                        <?= validation_errors() ?>
                    </div>
                </div>
            <?php endif; ?>
            <?php if (isset($error)) : ?>
                <div class="col-md-12">
                    <div class="alert alert-danger" role="alert">
                        <?= $error ?>
                    </div>
                </div>
            <?php endif; ?>    
     </div>
</div>

<!-- -->
<section>
    <div class="container">

        <!-- RIGHT -->
        <div class="col-lg-9 col-md-9 col-sm-8 col-lg-push-3 col-md-push-3 col-sm-push-4 margin-bottom-80">

            <ul class="nav nav-tabs nav-top-border">
                <li class="active"><a href="#info" data-toggle="tab">Informations personelles</a></li>
                <li><a href="#avatar" data-toggle="tab">Avatar</a></li>
                <li><a href="#password" data-toggle="tab">Changer mon mot de passe</a></li>
                
            </ul>

            <div class="tab-content margin-top-20">

                <!-- PERSONAL INFO TAB -->
                <div class="tab-pane fade in active" id="info">
                <?= form_open() ?>
                    <form role="form" action="#" method="post">
                        <div class="form-group">
                            <label class="control-label">Pseudo*</label>
                            <input type="text" value="<?= $this->session->userdata('username'); ?>" class="form-control" name="pseudo">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Pseudo Dofus Touch*</label>
                            <input type="text" value="<?= $this->session->userdata('pseudo_dofus'); ?>" class="form-control" name="pseudo_dofus">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Email*</label>
                            <input type="text" value="<?= $this->session->userdata('email'); ?>" class="form-control" name="email">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Pseudo Youtube*</label>
                            <input type="text" value="<?= $this->session->userdata('pseudo_youtube'); ?>" class="form-control" name="pseudo_youtube">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Sexe</label>
                            <input type="text" value="<?= $this->session->userdata('sexe'); ?>" class="form-control" name="sexe">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Travail/Études irl</label>
                            <input type="text" value="<?= $this->session->userdata('travail'); ?>" class="form-control" name="travail">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Url vers votre page perso dofus</label>
                            <input type="text" value="<?= $this->session->userdata('url_dofus'); ?>" class="form-control" name="url_dofus">
                        </div>
                        <div class="margiv-top10">
                            <button class="btn btn-primary"><i class="fa fa-check"></i>Confirmer les changements</button>
                        </div>
                    </form>
                    <p>* : champs obligatoires</p>
                </div>
                <!-- /PERSONAL INFO TAB -->

                <!-- AVATAR TAB -->
                <div class="tab-pane fade" id="avatar">

                    <form class="clearfix" action="#" method="post" enctype="multipart/form-data">
                        <div class="form-group">

                            <div class="row">

                                <div class="col-md-3 col-sm-4">

                                    <div class="thumbnail">
                                        <img class="img-responsive" src="<?= img_url('avatar/default.jpg') ?>" alt="" />
                                    </div>

                                </div>

                                <div class="col-md-9 col-sm-8">

                                    <div class="sky-form nomargin">
                                        <label class="label">Selectionner un fichier dans l'ordinateur</label>
                                        <label for="file" class="input input-file">
                                            <div class="button">
                                                <input type="file" id="file" onchange="this.parentNode.nextSibling.value = this.value">Parcourir
                                            </div><input type="text" readonly>
                                        </label>
                                    </div>

                                    <a href="#" class="btn btn-danger btn-xs noradius"><i class="fa fa-times"></i> Supprimer l'avatar</a>

                                </div>

                            </div>

                        </div>

                        <div class="margiv-top10">
                            <a href="#" class="btn btn-primary">Confirmer les changements </a>
                            <a href="#" class="btn btn-default">Retour </a>
                        </div>
                        </form>
                        <p>* : champs obligatoires</p>
                        </div>
                <!-- /AVATAR TAB -->

                <!-- PASSWORD TAB -->
                <div class="tab-pane fade" id="password">

                    <form action="#" method="post">

                        <div class="form-group">
                            <label class="control-label">Mot de passe actuel*</label>
                            <input type="password" class="form-control">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Nouveau mot de passe*</label>
                            <input type="password" class="form-control">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Re taper le nouveau mot de passe*</label>
                            <input type="password" class="form-control">
                        </div>

                        <div class="margiv-top10">
                            <a href="#" class="btn btn-primary"><i class="fa fa-check"></i> Changer mon mot de passe</a>
                            <a href="#" class="btn btn-default">Retour </a>
                        </div>

                    </form>
                    
                    <p>* : champs obligatoires</p>

                </div>
                <!-- /PASSWORD TAB -->

                <!-- PRIVACY TAB -->
                <div class="tab-pane fade" id="privacy">

                    <form action="#" method="post">
                        <div class="sky-form">

                            <table class="table table-bordered table-striped">
                                <tbody>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <div class="inline-group">
                                                <label class="radio nomargin-top nomargin-bottom">
                                                    <input type="radio" name="radioOption" checked=""><i></i> Yes
                                                </label>

                                                <label class="radio nomargin-top nomargin-bottom">
                                                    <input type="radio" name="radioOption" checked=""><i></i> No
                                                </label>
                                            </div>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <label class="checkbox nomargin">
                                                <input type="checkbox" name="checkbox" checked=""><i></i> Yes
                                            </label>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <label class="checkbox nomargin">
                                                <input type="checkbox" name="checkbox" checked=""><i></i> Yes
                                            </label>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <label class="checkbox nomargin">
                                                <input type="checkbox" name="checkbox" checked=""><i></i> Yes
                                            </label>
                                        </td>
                                    </tr>
                                </tbody>
                            </table>

                        </div>

                        <div class="margin-top-10">
                            <a href="#" class="btn btn-primary"><i class="fa fa-check"></i> Save Changes </a>
                            <a href="#" class="btn btn-default">Cancel </a>
                        </div>

                    </form>

                </div>
                <!-- /PRIVACY TAB -->

            </div>

        </div>

        
        <!-- LEFT -->
        <div class="col-lg-3 col-md-3 col-sm-4 col-lg-pull-9 col-md-pull-9 col-sm-pull-8">
        
            <div class="thumbnail text-center">
                <img src="<?= img_url('avatar/default.jpg') ?>" alt="" />
                <h2 class="size-18 margin-top-10 margin-bottom-0"><?= $this->session->userdata('username'); ?></h2>
                <h3 class="size-11 margin-top-0 margin-bottom-10 text-muted">DEVELOPER</h3>
            </div>

            


            <!-- info -->
            

        </div>
        
    </div>
</section>
<!-- / -->

   <?php else :  redirect('/'); ?>
   
   <?php endif; ?>
Reply
#2

Get the user information from your database, preferrably by using a model.
Call the model function from within your controller.
Then, let your controller output the data by loading a view.

Basic example

Model:
PHP Code:
public function get_user($id)
{
 
 $query $this->db->where('id',$id)->get('users');
 
 return $query->row();


Controller:
PHP Code:
public function show_user($id)
{
 
  $this->load->model('user_model');
 
  $data['record'] = $this->user_model->get_user($id);
 
  $this->load->view('user_detail',$data);


View:
Code:
<p><?= $record->id;?></p>
<p><?= $record->name;?></p>
<p><?= $record->pseudo;?></p>
Reply
#3

Thanks for help but he say that error :

[Image: 1501601803-erreur.png]

my code :

User controller : 
Code:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

/**
* User class.
*
* @extends CI_Controller
*/
class User extends CI_Controller {

    /**
     * __construct function.
     *
     * @access public
     * @return void
     */
    public function __construct() {
        
        parent::__construct();
        $this->load->library(array('session'));
        $this->load->helper(array('url'));
        $this->load->model('user_model');
        
    }
    
    
    public function index() {
        
         //If no session, redirect to login page
        redirect('home/');
        
        
    }
    
    /**
     * register function.
     *
     * @access public
     * @return void
     */
    public function register() {
        
        // create the data object
        $data = new stdClass();
        
        // load form helper and validation library
        $this->load->helper('form');
        $this->load->library('form_validation');
        
        // set validation rules
        $this->form_validation->set_rules('pseudo', 'pseudo', 'trim|required|alpha_numeric|min_length[4]|is_unique[accounts.pseudo]', array('is_unique' => 'Ce pseudo est déjà choisis. Veuillez en choisir un nouveau.'));
        $this->form_validation->set_rules('mail', 'mail', 'trim|required|valid_email|is_unique[accounts.email]',
        array('is_unique' => 'L\'adresse mail est déjà utilisé.  Veuillez en choisir une nouvelle.'));
        $this->form_validation->set_rules('password', 'password', 'trim|required|min_length[6]',
        array('min_length' => 'Le mot de passe doit comporter au moins 6 caractères.'));
        $this->form_validation->set_rules('conf_password', 'conf_password', 'trim|required|matches[password]',
        array('matches' => 'Les mots de passes ne sont pas identiques.'));
        
        if ($this->form_validation->run() === false) {
            
            // validation not ok, send validation errors to the view
            $this->load->view('layout/header');
            $this->load->view('user/register', $data);
            $this->load->view('layout/footer');
            
        } else {
            
            // set variables from the form
            $username = $this->input->post('pseudo');
            $email    = $this->input->post('mail');
            $password = $this->input->post('password');
            
            if ($this->user_model->create_user($username, $email, $password)) {
                
                // user creation ok
                $this->load->view('layout/header');
                $this->load->view('user/register_success', $data);
                $this->load->view('layout/footer');
                
            } else {
                
                // user creation failed, this should never happen
                $data->error = 'Un problème est surveneu lors de la création de votre compte. Veuillez réessayer.';
                
                // send error to the view
                $this->load->view('layout/header');
                $this->load->view('user/register', $data);
                $this->load->view('layout/footer');
                
            }
            
        }
        
    }
        
    /**
     * login function.
     *
     * @access public
     * @return void
     */
    public function login() {
        
        // create the data object
        $data = new stdClass();
        
        // load form helper and validation library
        $this->load->helper('form');
        $this->load->library('form_validation');
        
        // set validation rules
        $this->form_validation->set_rules('username', 'Username', 'required|alpha_numeric');
        $this->form_validation->set_rules('password', 'Password', 'required');
        
        
        if ($this->form_validation->run() == false) {
            
            // validation not ok, send validation errors to the view
            $this->load->view('layout/header');
            $this->load->view('user/login');
            $this->load->view('layout/footer');
            
        } else {
            
            // set variables from the form
            $username = $this->input->post('username');
            $password = $this->input->post('password');
            
            if ($this->user_model->resolve_user_login($username, $password)) {
                
                $user_id = $this->user_model->get_user_id_from_username($username);
                $user    = $this->user_model->get_user($user_id);
                
                // set session user datas
                $_SESSION['user_id']        = (int)$user->guid;
                $_SESSION['username']       = (string)$user->pseudo;
                $_SESSION['email']          = (string)$user->email;
                $_SESSION['pseudo_dofus']   = (string)$user->pseudo_dofus;
                $_SESSION['pseudo_youtube'] = (string)$user->pseudo_youtube;
                $_SESSION['sexe']           = (string)$user->sexe;
                $_SESSION['travail']        = (string)$user->travail;
                $_SESSION['url_dofus']      = (string)$user->url_dofus;
                $_SESSION['logged_in']      = (bool)true;
                
                // user login ok
                $this->load->view('layout/header');
                $this->load->view('user/login_success', $data);
                $this->load->view('layout/footer');
                
            } else {
                
                // login failed
                $data->error = 'Mauvais nom d\'utlisateur ou mot de passe !';
                
                // send error to the view
                $this->load->view('layout/header');
                $this->load->view('user/login', $data);
                $this->load->view('layout/footer');
                
            }
            
        }
        
    }
    
    /**
     * logout function.
     *
     * @access public
     * @return void
     */
    public function logout() {
        
        // create the data object
        $data = new stdClass();
        
        if(!$this->session->has_userdata('guid')){
            
            // remove session datas
            foreach ($_SESSION as $key => $value) {
                unset($_SESSION[$key]);
            }
            
            // user logout ok
            $this->load->view('layout/header');
            $this->load->view('user/logout_success', $data);
            $this->load->view('layout/footer');
            
        } else {
            
            // there user was not logged in, we cannot logged him out,
            // redirect him to site root
            redirect('/');
            
        }
        
    }
    
         /**
    * account function.
    *
    * @access public
    * @return void
    */
    public function show_user($id)
    {
       $this->load->model('User_model');
       $data['accounts'] = $this->user_model->get_account($id);
       $this->load->view('user/account',$data);
    }

    
     /**
    * account function.
    *
    * @access public
    * @return void
    */
   public function account() {

        
        
        // load form helper and validation library
        $this->load->helper('form');
        $this->load->library('form_validation');
        
        // set validation rules
        $this->form_validation->set_rules('pseudo', 'pseudo', 'required|alpha_numeric');
        $this->form_validation->set_rules('pseudo_dofus', 'pseudo_dofus', 'required');
        $this->form_validation->set_rules('email', 'email', 'required');
        $this->form_validation->set_rules('pseudo_youtube', 'pseudo_youtube', 'required');
        $this->form_validation->set_rules('sexe', 'sexe', 'required|alpha_numeric');
        $this->form_validation->set_rules('travail', 'travail', 'required');
        $this->form_validation->set_rules('url_dofus', 'url_dofus', 'required');
        
        
        if ($this->form_validation->run() == false) {
            
            // validation not ok, send validation errors to the view
            $this->load->view('layout/header');
            $this->load->view('user/account');
            $this->load->view('layout/footer');
            
        } else {
            
            // set variables from the form
            $pseudo = $this->input->post('pseudo');
            $pseudo_dofus = $this->input->post('pseudo_dofus');
            $email = $this->input->post('email');
            $pseudo_youtube = $this->input->post('pseudo_youtube');
            $sexe = $this->input->post('sexe');
            $travail = $this->input->post('travail');
            $url_dofus = $this->input->post('url_dofus');
                

            if ($this->user_model->update_user($pseudo, $pseudo_dofus, $email, $pseudo_youtube, $sexe, $travail, $url_dofus)) {
                
                // user account update
                $this->load->view('layout/header');
                $this->load->view('user/account_update');
                $this->load->view('layout/footer');
                
            } else {

           // there user was not logged in, we cannot logged him out,
           // redirect him to site root
           redirect('/');

       }

   }
    }
    
}


User_model :

Code:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

/**
* User_model class.
*
* @extends CI_Model
*/
class User_model extends CI_Model {

    /**
     * __construct function.
     *
     * @access public
     * @return void
     */
    public function __construct() {
        
        parent::__construct();
        $this->load->database();
        
    }
    
    /**
     * create_user function.
     *
     * @access public
     * @param mixed $username
     * @param mixed $email
     * @param mixed $password
     * @return bool true on success, false on failure
     */
    public function create_user($username, $email, $password) {
        
        $data = array(
            'pseudo'   => $username,
            'email'      => $email,
            'pass'   => $this->hash_password($password),
        );
        
        return $this->db->insert('accounts', $data);
        
    }
    
    /**
     * resolve_user_login function.
     *
     * @access public
     * @param mixed $username
     * @param mixed $password
     * @return bool true on success, false on failure
     */
    public function resolve_user_login($username, $password) {
        
        $this->db->select('pass');
        $this->db->from('accounts');
        $this->db->where('pseudo', $username);
        $hash = $this->db->get()->row('pass');
        
        return $this->verify_password_hash($password, $hash);
        
    }
    
    /**
     * get_user_id_from_username function.
     *
     * @access public
     * @param mixed $username
     * @return int the user id
     */
    public function get_user_id_from_username($username) {
        
        $this->db->select('guid');
        $this->db->from('accounts');
        $this->db->where('pseudo', $username);

        return $this->db->get()->row('guid');
        
    }
    
    /**
     * get_user function.
     *
     * @access public
     * @param mixed $user_id
     * @return object the user object
     */
    public function get_user($user_id) {
        
        $this->db->from('accounts');
        $this->db->where('guid', $user_id);
        return $this->db->get()->row();
        
    }
    
    /**
     * hash_password function.
     *
     * @access private
     * @param mixed $password
     * @return string|bool could be a string on success, or bool false on failure
     */
    private function hash_password($password) {
        
        return password_hash($password, PASSWORD_BCRYPT);
        
    }
    
    /**
     * verify_password_hash function.
     *
     * @access private
     * @param mixed $password
     * @param mixed $hash
     * @return bool
     */
    private function verify_password_hash($password, $hash) {
        
        return password_verify($password, $hash);
        
    }
        /**
     * account function.
     *
     * @access public
     * @param mixed $username
     * @param mixed $email
     * @param mixed $password
     * @return bool true on success, false on failure
     */
    public function get_account($id)
    {
      $query = $this->db->where('guid',$id)->get('accounts');
      return $query->row();
    }
    
    /**
     * account_update function.
     *
     * @access public
     * @param mixed $username
     * @param mixed $email
     * @param mixed $password
     * @return bool true on success, false on failure
     */
    public function update_user($pseudo, $pseudo_dofus, $email, $pseudo_youtube, $sexe, $travail, $url_dofus) {
        
        $guid = $this->session->userdata('user_id');
        
        $data = array(
            
            'pseudo'         => $pseudo,
            'pseudo_dofus'   => $pseudo_dofus,
            'email'          => $email,
            'pseudo_youtube' => $pseudo_youtube,
            'sexe'           => $sexe,
            'travail'        => $travail,
            'url_dofus'      => $url_dofus,
        );
        
         $this->db->where('guid', $guid);

         return $this->db->update('accounts', $data);
        
    }
    
}


and the user views : 

Code:
<?php if (isset($_SESSION['username']) && $_SESSION['logged_in'] === true) : ?>

<!--=== Content Part ===-->    
<div class="container content">    
        <div class="row">
            <?php if (validation_errors()) : ?>
                <div class="col-md-12">
                    <div class="alert alert-danger" role="alert">
                        <?= validation_errors() ?>
                    </div>
                </div>
            <?php endif; ?>
            <?php if (isset($error)) : ?>
                <div class="col-md-12">
                    <div class="alert alert-danger" role="alert">
                        <?= $error ?>
                    </div>
                </div>
            <?php endif; ?>    
     </div>
</div>

<!-- -->
<section>
    <div class="container">

        <!-- RIGHT -->
        <div class="col-lg-9 col-md-9 col-sm-8 col-lg-push-3 col-md-push-3 col-sm-push-4 margin-bottom-80">

            <ul class="nav nav-tabs nav-top-border">
                <li class="active"><a href="#info" data-toggle="tab">Informations personelles</a></li>
                <li><a href="#avatar" data-toggle="tab">Avatar</a></li>
                <li><a href="#password" data-toggle="tab">Changer mon mot de passe</a></li>
                
            </ul>

            <div class="tab-content margin-top-20">

                <!-- PERSONAL INFO TAB -->
                <div class="tab-pane fade in active" id="info">
                <?php foreach($accounts as $account) { ?>
                <?= form_open() ?>
                    <form role="form" action="#" method="post">
                        <div class="form-group">
                            <label class="control-label">Pseudo*</label>
                            <input type="text" value="<?= $account->pseudo;?>" class="form-control" name="pseudo">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Pseudo Dofus Touch*</label>
                            <input type="text" value="<?= $this->session->userdata('pseudo_dofus'); ?>" class="form-control" name="pseudo_dofus">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Email*</label>
                            <input type="text" value="<?= $this->session->userdata('email'); ?>" class="form-control" name="email">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Pseudo Youtube*</label>
                            <input type="text" value="<?= $this->session->userdata('pseudo_youtube'); ?>" class="form-control" name="pseudo_youtube">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Sexe</label>
                            <input type="text" value="<?= $this->session->userdata('sexe'); ?>" class="form-control" name="sexe">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Travail/Études irl</label>
                            <input type="text" value="<?= $this->session->userdata('travail'); ?>" class="form-control" name="travail">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Url vers votre page perso dofus</label>
                            <input type="text" value="<?= $this->session->userdata('url_dofus'); ?>" class="form-control" name="url_dofus">
                        </div>
                        <div class="margiv-top10">
                            <button class="btn btn-primary"><i class="fa fa-check"></i>Confirmer les changements</button>
                        </div>
                    </form>
                    <?php } ?>
                    <p>* : champs obligatoires</p>
                </div>
                <!-- /PERSONAL INFO TAB -->

                <!-- AVATAR TAB -->
                <div class="tab-pane fade" id="avatar">

                    <form class="clearfix" action="#" method="post" enctype="multipart/form-data">
                        <div class="form-group">

                            <div class="row">

                                <div class="col-md-3 col-sm-4">

                                    <div class="thumbnail">
                                        <img class="img-responsive" src="<?= img_url('avatar/default.jpg') ?>" alt="" />
                                    </div>

                                </div>

                                <div class="col-md-9 col-sm-8">

                                    <div class="sky-form nomargin">
                                        <label class="label">Selectionner un fichier dans l'ordinateur</label>
                                        <label for="file" class="input input-file">
                                            <div class="button">
                                                <input type="file" id="file" onchange="this.parentNode.nextSibling.value = this.value">Parcourir
                                            </div><input type="text" readonly>
                                        </label>
                                    </div>

                                    <a href="#" class="btn btn-danger btn-xs noradius"><i class="fa fa-times"></i> Supprimer l'avatar</a>

                                </div>

                            </div>

                        </div>

                        <div class="margiv-top10">
                            <a href="#" class="btn btn-primary">Confirmer les changements </a>
                            <a href="#" class="btn btn-default">Retour </a>
                        </div>
                        </form>
                        <p>* : champs obligatoires</p>
                        </div>
                <!-- /AVATAR TAB -->

                <!-- PASSWORD TAB -->
                <div class="tab-pane fade" id="password">

                    <form action="#" method="post">

                        <div class="form-group">
                            <label class="control-label">Mot de passe actuel*</label>
                            <input type="password" class="form-control">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Nouveau mot de passe*</label>
                            <input type="password" class="form-control">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Re taper le nouveau mot de passe*</label>
                            <input type="password" class="form-control">
                        </div>

                        <div class="margiv-top10">
                            <a href="#" class="btn btn-primary"><i class="fa fa-check"></i> Changer mon mot de passe</a>
                            <a href="#" class="btn btn-default">Retour </a>
                        </div>

                    </form>
                    
                    <p>* : champs obligatoires</p>

                </div>
                <!-- /PASSWORD TAB -->

                <!-- PRIVACY TAB -->
                <div class="tab-pane fade" id="privacy">

                    <form action="#" method="post">
                        <div class="sky-form">

                            <table class="table table-bordered table-striped">
                                <tbody>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <div class="inline-group">
                                                <label class="radio nomargin-top nomargin-bottom">
                                                    <input type="radio" name="radioOption" checked=""><i></i> Yes
                                                </label>

                                                <label class="radio nomargin-top nomargin-bottom">
                                                    <input type="radio" name="radioOption" checked=""><i></i> No
                                                </label>
                                            </div>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <label class="checkbox nomargin">
                                                <input type="checkbox" name="checkbox" checked=""><i></i> Yes
                                            </label>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <label class="checkbox nomargin">
                                                <input type="checkbox" name="checkbox" checked=""><i></i> Yes
                                            </label>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <label class="checkbox nomargin">
                                                <input type="checkbox" name="checkbox" checked=""><i></i> Yes
                                            </label>
                                        </td>
                                    </tr>
                                </tbody>
                            </table>

                        </div>

                        <div class="margin-top-10">
                            <a href="#" class="btn btn-primary"><i class="fa fa-check"></i> Save Changes </a>
                            <a href="#" class="btn btn-default">Cancel </a>
                        </div>

                    </form>

                </div>
                <!-- /PRIVACY TAB -->

            </div>

        </div>

        
        <!-- LEFT -->
        <div class="col-lg-3 col-md-3 col-sm-4 col-lg-pull-9 col-md-pull-9 col-sm-pull-8">
        
            <div class="thumbnail text-center">
                <img src="<?= img_url('avatar/default.jpg') ?>" alt="" />
                <h2 class="size-18 margin-top-10 margin-bottom-0"><?= $this->session->userdata('username'); ?></h2>
                <h3 class="size-11 margin-top-0 margin-bottom-10 text-muted">DEVELOPER</h3>
            </div>

            


            <!-- info -->
            

        </div>
        
    </div>
</section>
<!-- / -->

   <?php else :  redirect('/'); ?>
   
   <?php endif; ?>
Reply
#4

Why would you need a foreach ... loop to handle multiple accounts, if your model returns only one account?
Besides that, right below the line with foreach, you are opening a form twice:
PHP Code:
<?= form_open() ?>
     <form role="form" action="#" method="post"> 
The first line is the form_open() function in the form helper, this creates the <form .. > tag for you.
The second line is opening another form!
Line 75 closes one of the forms, but the other one stays open.

The syntax
PHP Code:
<?php foreach ( ... as ... ) { ?>
...
<?php ?>

is difficult to read, especially if you have nested foreach or if {} structures in your view.
Try the alternative syntax:

PHP Code:
<?php foreach (... as ... ) : ?>
...
<?php endforeach; ?>
Reply
#5

(This post was last modified: 08-01-2017, 02:12 PM by wendaf.)

ah okay thanks for the form i have forget this   Big Grin  

and for the error i delete the foreach and i got this erros now  Sad :
[Image: 1501621790-erruer.png]


this is my news controller code :

PHP Code:
<?php
defined
('BASEPATH') OR exit('No direct script access allowed');

/**
 * User class.
 * 
 * @extends CI_Controller
 */
class User extends CI_Controller {

    
/**
     * __construct function.
     * 
     * @access public
     * @return void
     */
    
public function __construct() {
        
        
parent::__construct();
        
$this->load->library(array('session'));
        
$this->load->helper(array('url'));
        
$this->load->model('user_model');
        
    }
    
    
    public function 
index() {
        
         
//If no session, redirect to login page
        
redirect('home/');
        
        
    }
    
    
/**
     * register function.
     * 
     * @access public
     * @return void
     */
    
public function register() {
        
        
// create the data object
        
$data = new stdClass();
        
        
// load form helper and validation library
        
$this->load->helper('form');
        
$this->load->library('form_validation');
        
        
// set validation rules
        
$this->form_validation->set_rules('pseudo''pseudo''trim|required|alpha_numeric|min_length[4]|is_unique[accounts.pseudo]', array('is_unique' => 'Ce pseudo est déjà choisis. Veuillez en choisir un nouveau.'));
        
$this->form_validation->set_rules('mail''mail''trim|required|valid_email|is_unique[accounts.email]',
        array(
'is_unique' => 'L\'adresse mail est déjà utilisé.  Veuillez en choisir une nouvelle.'));
        
$this->form_validation->set_rules('password''password''trim|required|min_length[6]',
        array(
'min_length' => 'Le mot de passe doit comporter au moins 6 caractères.'));
        
$this->form_validation->set_rules('conf_password''conf_password''trim|required|matches[password]',
        array(
'matches' => 'Les mots de passes ne sont pas identiques.'));
        
        if (
$this->form_validation->run() === false) {
            
            
// validation not ok, send validation errors to the view
            
$this->load->view('layout/header');
            
$this->load->view('user/register'$data);
            
$this->load->view('layout/footer');
            
        } else {
            
            
// set variables from the form
            
$username $this->input->post('pseudo');
            
$email    $this->input->post('mail');
            
$password $this->input->post('password');
            
            if (
$this->user_model->create_user($username$email$password)) {
                
                
// user creation ok
                
$this->load->view('layout/header');
                
$this->load->view('user/register_success'$data);
                
$this->load->view('layout/footer');
                
            } else {
                
                
// user creation failed, this should never happen
                
$data->error 'Un problème est surveneu lors de la création de votre compte. Veuillez réessayer.';
                
                
// send error to the view
                
$this->load->view('layout/header');
                
$this->load->view('user/register'$data);
                
$this->load->view('layout/footer');
                
            }
            
        }
        
    }
        
    
/**
     * login function.
     * 
     * @access public
     * @return void
     */
    
public function login() {
        
        
// create the data object
        
$data = new stdClass();
        
        
// load form helper and validation library
        
$this->load->helper('form');
        
$this->load->library('form_validation');
        
        
// set validation rules
        
$this->form_validation->set_rules('username''Username''required|alpha_numeric');
        
$this->form_validation->set_rules('password''Password''required');
        
        
        if (
$this->form_validation->run() == false) {
            
            
// validation not ok, send validation errors to the view
            
$this->load->view('layout/header');
            
$this->load->view('user/login');
            
$this->load->view('layout/footer');
            
        } else {
            
            
// set variables from the form
            
$username $this->input->post('username');
            
$password $this->input->post('password');
            
            if (
$this->user_model->resolve_user_login($username$password)) {
                
                
$user_id $this->user_model->get_user_id_from_username($username);
                
$user    $this->user_model->get_user($user_id);
                
                
// set session user datas
                
$_SESSION['user_id'       = (int)$user->guid;
                
$_SESSION['username'      = (string)$user->pseudo;
                
$_SESSION['email'         = (string)$user->email;
                
$_SESSION['pseudo_dofus'  = (string)$user->pseudo_dofus;
                
$_SESSION['pseudo_youtube'] = (string)$user->pseudo_youtube;
                
$_SESSION['sexe'          = (string)$user->sexe;
                
$_SESSION['travail'       = (string)$user->travail;
                
$_SESSION['url_dofus'     = (string)$user->url_dofus;
                
$_SESSION['logged_in'     = (bool)true;
                
                
// user login ok
                
$this->load->view('layout/header');
                
$this->load->view('user/login_success'$data);
                
$this->load->view('layout/footer');
                
            } else {
                
                
// login failed
                
$data->error 'Mauvais nom d\'utlisateur ou mot de passe !';
                
                
// send error to the view
                
$this->load->view('layout/header');
                
$this->load->view('user/login'$data);
                
$this->load->view('layout/footer');
                
            }
            
        }
        
    }
    
    
/**
     * logout function.
     * 
     * @access public
     * @return void
     */
    
public function logout() {
        
        
// create the data object
        
$data = new stdClass();
        
        if(!
$this->session->has_userdata('guid')){
            
            
// remove session datas
            
foreach ($_SESSION as $key => $value) {
                unset(
$_SESSION[$key]);
            }
            
            
// user logout ok
            
$this->load->view('layout/header');
            
$this->load->view('user/logout_success'$data);
            
$this->load->view('layout/footer');
            
        } else {
            
            
// there user was not logged in, we cannot logged him out,
            // redirect him to site root
            
redirect('/');
            
        }
        
    }
    
         
/**
     * account function.
     *
     * @access public
     * @return void
     */
    
public function account($id)
    {
     
  $data['accounts'] = $this->user_model->get_account($id);
     
  $this->load->view('layout/header');
     
  $this->load->view('user/account',$data);
     
  $this->load->view('layout/footer');
    } 

    
     
/**
     * account function.
     *
     * @access public
     * @return void
     */
 
   public function account_edit() {

        
        
        
// load form helper and validation library
        
$this->load->helper('form');
        
$this->load->library('form_validation');
        
        
// set validation rules
        
$this->form_validation->set_rules('pseudo''pseudo''required|alpha_numeric');
        
$this->form_validation->set_rules('pseudo_dofus''pseudo_dofus''required');
        
$this->form_validation->set_rules('email''email''required');
        
$this->form_validation->set_rules('pseudo_youtube''pseudo_youtube''required');
        
$this->form_validation->set_rules('sexe''sexe''required|alpha_numeric');
        
$this->form_validation->set_rules('travail''travail''required');
        
$this->form_validation->set_rules('url_dofus''url_dofus''required');
        
        
        if (
$this->form_validation->run() == false) {
            
            
// validation not ok, send validation errors to the view
            
$this->load->view('layout/header');
            
$this->load->view('user/account');
            
$this->load->view('layout/footer');
            
        } else {
            
            
// set variables from the form
            
$pseudo $this->input->post('pseudo');
            
$pseudo_dofus $this->input->post('pseudo_dofus');
            
$email $this->input->post('email');
            
$pseudo_youtube $this->input->post('pseudo_youtube');
            
$sexe $this->input->post('sexe');
            
$travail $this->input->post('travail');
            
$url_dofus $this->input->post('url_dofus');
                

            if (
$this->user_model->update_user($pseudo$pseudo_dofus$email$pseudo_youtube$sexe$travail$url_dofus)) {
                
                
// user account update
                
$this->load->view('layout/header');
                
$this->load->view('user/account_update');
                
$this->load->view('layout/footer');
                
            } else {

 
           // there user was not logged in, we cannot logged him out,
 
           // redirect him to site root
 
           redirect('/');

 
       }

 
   }
    }
    



and my news views code 

PHP Code:
<?php if (isset($_SESSION['username']) && $_SESSION['logged_in'] === true) : ?>

<!--=== Content Part ===-->    
 <div class="container content">    
        <div class="row">
            <?php if (validation_errors()) : ?>
                <div class="col-md-12">
                    <div class="alert alert-danger" role="alert">
                        <?= validation_errors() ?>
                    </div>
                </div>
            <?php endif; ?>
            <?php if (isset($error)) : ?>
                <div class="col-md-12">
                    <div class="alert alert-danger" role="alert">
                        <?= $error ?>
                    </div>
                </div>
            <?php endif; ?>    
     </div>
</div>

<!-- -->
<section>
    <div class="container">

        <!-- RIGHT -->
        <div class="col-lg-9 col-md-9 col-sm-8 col-lg-push-3 col-md-push-3 col-sm-push-4 margin-bottom-80">

            <ul class="nav nav-tabs nav-top-border">
                <li class="active"><a href="#info" data-toggle="tab">Informations personelles</a></li>
                <li><a href="#avatar" data-toggle="tab">Avatar</a></li>
                <li><a href="#password" data-toggle="tab">Changer mon mot de passe</a></li>
                
            </ul>

            <div class="tab-content margin-top-20">

                <!-- PERSONAL INFO TAB -->
                <div class="tab-pane fade in active" id="info">
                <?= form_open() ?>
                        <div class="form-group">
                            <label class="control-label">Pseudo*</label>
                            <input type="text" value="<?= $accounts->pseudo;?>" class="form-control" name="pseudo">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Pseudo Dofus Touch*</label>
                            <input type="text" value="<?= $this->session->userdata('pseudo_dofus'); ?>" class="form-control" name="pseudo_dofus">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Email*</label>
                            <input type="text" value="<?= $this->session->userdata('email'); ?>" class="form-control" name="email">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Pseudo Youtube*</label>
                            <input type="text" value="<?= $this->session->userdata('pseudo_youtube'); ?>" class="form-control" name="pseudo_youtube">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Sexe</label>
                            <input type="text" value="<?= $this->session->userdata('sexe'); ?>" class="form-control" name="sexe">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Travail/Études irl</label>
                            <input type="text" value="<?= $this->session->userdata('travail'); ?>" class="form-control" name="travail">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Url vers votre page perso dofus</label>
                            <input type="text" value="<?= $this->session->userdata('url_dofus'); ?>" class="form-control" name="url_dofus">
                        </div>
                        <div class="margiv-top10">
                            <button class="btn btn-primary"><i class="fa fa-check"></i>Confirmer les changements</button>
                        </div>
                <?php form_close() ?>
                    <p>* : champs obligatoires</p>
                </div>
                <!-- /PERSONAL INFO TAB -->

                <!-- AVATAR TAB -->
                <div class="tab-pane fade" id="avatar">

                    <form class="clearfix" action="#" method="post" enctype="multipart/form-data">
                        <div class="form-group">

                            <div class="row">

                                <div class="col-md-3 col-sm-4">

                                    <div class="thumbnail">
                                        <img class="img-responsive" src="<?= img_url('avatar/default.jpg'?>" alt="" />
                                    </div>

                                </div>

                                <div class="col-md-9 col-sm-8">

                                    <div class="sky-form nomargin">
                                        <label class="label">Selectionner un fichier dans l'ordinateur</label>
                                        <label for="file" class="input input-file">
                                            <div class="button">
                                                <input type="file" id="file" onchange="this.parentNode.nextSibling.value = this.value">Parcourir
                                            </div><input type="text" readonly>
                                        </label>
                                    </div>

                                    <a href="#" class="btn btn-danger btn-xs noradius"><i class="fa fa-times"></i> Supprimer l'avatar</a>

                                </div>

                            </div>

                        </div>

                        <div class="margiv-top10">
                            <a href="#" class="btn btn-primary">Confirmer les changements </a>
                            <a href="#" class="btn btn-default">Retour </a>
                        </div>
                        </form>
                        <p>* : champs obligatoires</p>
                        </div>
                <!-- /AVATAR TAB -->

                <!-- PASSWORD TAB -->
                <div class="tab-pane fade" id="password">

                    <form action="#" method="post">

                        <div class="form-group">
                            <label class="control-label">Mot de passe actuel*</label>
                            <input type="password" class="form-control">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Nouveau mot de passe*</label>
                            <input type="password" class="form-control">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Re taper le nouveau mot de passe*</label>
                            <input type="password" class="form-control">
                        </div>

                        <div class="margiv-top10">
                            <a href="#" class="btn btn-primary"><i class="fa fa-check"></i> Changer mon mot de passe</a>
                            <a href="#" class="btn btn-default">Retour </a>
                        </div>

                    </form>
                    
                    <p>* : champs obligatoires</p>

                </div>
                <!-- /PASSWORD TAB -->

                <!-- PRIVACY TAB -->
                <div class="tab-pane fade" id="privacy">

                    <form action="#" method="post">
                        <div class="sky-form">

                            <table class="table table-bordered table-striped">
                                <tbody>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <div class="inline-group">
                                                <label class="radio nomargin-top nomargin-bottom">
                                                    <input type="radio" name="radioOption" checked=""><i></i> Yes
                                                </label>

                                                <label class="radio nomargin-top nomargin-bottom">
                                                    <input type="radio" name="radioOption" checked=""><i></i> No
                                                </label>
                                            </div>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <label class="checkbox nomargin">
                                                <input type="checkbox" name="checkbox" checked=""><i></i> Yes
                                            </label>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <label class="checkbox nomargin">
                                                <input type="checkbox" name="checkbox" checked=""><i></i> Yes
                                            </label>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <label class="checkbox nomargin">
                                                <input type="checkbox" name="checkbox" checked=""><i></i> Yes
                                            </label>
                                        </td>
                                    </tr>
                                </tbody>
                            </table>

                        </div>

                        <div class="margin-top-10">
                            <a href="#" class="btn btn-primary"><i class="fa fa-check"></i> Save Changes </a>
                            <a href="#" class="btn btn-default">Cancel </a>
                        </div>

                    </form>

                </div>
                <!-- /PRIVACY TAB -->

            </div>

        </div>

        
        <!-- LEFT -->
        <div class="col-lg-3 col-md-3 col-sm-4 col-lg-pull-9 col-md-pull-9 col-sm-pull-8">
        
            <div class="thumbnail text-center">
                <img src="<?= img_url('avatar/default.jpg'?>" alt="" />
                <h2 class="size-18 margin-top-10 margin-bottom-0"><?= $this->session->userdata('username'); ?></h2>
                <h3 class="size-11 margin-top-0 margin-bottom-10 text-muted">DEVELOPER</h3>
            </div>

            


            <!-- info -->
            

        </div>
        
    </div>
</section>
<!-- / -->

    <?php else :  redirect('/'); ?>
    
    <?php endif; ?>


and i do not edit the  User_model
Reply
#6

(08-01-2017, 02:00 PM)wendaf Wrote: ah okay thanks for the form i have forget this   Big Grin  

and for the error i delete the foreach and i got this erros now  Sad :
[Image: 1501621790-erruer.png]


this is my news controller code :

PHP Code:
<?php
defined
('BASEPATH') OR exit('No direct script access allowed');

/**
 * User class.
 * 
 * @extends CI_Controller
 */
class User extends CI_Controller {

    
/**
     * __construct function.
     * 
     * @access public
     * @return void
     */
    
public function __construct() {
        
        
parent::__construct();
        
$this->load->library(array('session'));
        
$this->load->helper(array('url'));
        
$this->load->model('user_model');
        
    }
    
    
    public function 
index() {
        
         
//If no session, redirect to login page
        
redirect('home/');
        
        
    }
    
    
/**
     * register function.
     * 
     * @access public
     * @return void
     */
    
public function register() {
        
        
// create the data object
        
$data = new stdClass();
        
        
// load form helper and validation library
        
$this->load->helper('form');
        
$this->load->library('form_validation');
        
        
// set validation rules
        
$this->form_validation->set_rules('pseudo''pseudo''trim|required|alpha_numeric|min_length[4]|is_unique[accounts.pseudo]', array('is_unique' => 'Ce pseudo est déjà choisis. Veuillez en choisir un nouveau.'));
        
$this->form_validation->set_rules('mail''mail''trim|required|valid_email|is_unique[accounts.email]',
        array(
'is_unique' => 'L\'adresse mail est déjà utilisé.  Veuillez en choisir une nouvelle.'));
        
$this->form_validation->set_rules('password''password''trim|required|min_length[6]',
        array(
'min_length' => 'Le mot de passe doit comporter au moins 6 caractères.'));
        
$this->form_validation->set_rules('conf_password''conf_password''trim|required|matches[password]',
        array(
'matches' => 'Les mots de passes ne sont pas identiques.'));
        
        if (
$this->form_validation->run() === false) {
            
            
// validation not ok, send validation errors to the view
            
$this->load->view('layout/header');
            
$this->load->view('user/register'$data);
            
$this->load->view('layout/footer');
            
        } else {
            
            
// set variables from the form
            
$username $this->input->post('pseudo');
            
$email    $this->input->post('mail');
            
$password $this->input->post('password');
            
            if (
$this->user_model->create_user($username$email$password)) {
                
                
// user creation ok
                
$this->load->view('layout/header');
                
$this->load->view('user/register_success'$data);
                
$this->load->view('layout/footer');
                
            } else {
                
                
// user creation failed, this should never happen
                
$data->error 'Un problème est surveneu lors de la création de votre compte. Veuillez réessayer.';
                
                
// send error to the view
                
$this->load->view('layout/header');
                
$this->load->view('user/register'$data);
                
$this->load->view('layout/footer');
                
            }
            
        }
        
    }
        
    
/**
     * login function.
     * 
     * @access public
     * @return void
     */
    
public function login() {
        
        
// create the data object
        
$data = new stdClass();
        
        
// load form helper and validation library
        
$this->load->helper('form');
        
$this->load->library('form_validation');
        
        
// set validation rules
        
$this->form_validation->set_rules('username''Username''required|alpha_numeric');
        
$this->form_validation->set_rules('password''Password''required');
        
        
        if (
$this->form_validation->run() == false) {
            
            
// validation not ok, send validation errors to the view
            
$this->load->view('layout/header');
            
$this->load->view('user/login');
            
$this->load->view('layout/footer');
            
        } else {
            
            
// set variables from the form
            
$username $this->input->post('username');
            
$password $this->input->post('password');
            
            if (
$this->user_model->resolve_user_login($username$password)) {
                
                
$user_id $this->user_model->get_user_id_from_username($username);
                
$user    $this->user_model->get_user($user_id);
                
                
// set session user datas
                
$_SESSION['user_id'       = (int)$user->guid;
                
$_SESSION['username'      = (string)$user->pseudo;
                
$_SESSION['email'         = (string)$user->email;
                
$_SESSION['pseudo_dofus'  = (string)$user->pseudo_dofus;
                
$_SESSION['pseudo_youtube'] = (string)$user->pseudo_youtube;
                
$_SESSION['sexe'          = (string)$user->sexe;
                
$_SESSION['travail'       = (string)$user->travail;
                
$_SESSION['url_dofus'     = (string)$user->url_dofus;
                
$_SESSION['logged_in'     = (bool)true;
                
                
// user login ok
                
$this->load->view('layout/header');
                
$this->load->view('user/login_success'$data);
                
$this->load->view('layout/footer');
                
            } else {
                
                
// login failed
                
$data->error 'Mauvais nom d\'utlisateur ou mot de passe !';
                
                
// send error to the view
                
$this->load->view('layout/header');
                
$this->load->view('user/login'$data);
                
$this->load->view('layout/footer');
                
            }
            
        }
        
    }
    
    
/**
     * logout function.
     * 
     * @access public
     * @return void
     */
    
public function logout() {
        
        
// create the data object
        
$data = new stdClass();
        
        if(!
$this->session->has_userdata('guid')){
            
            
// remove session datas
            
foreach ($_SESSION as $key => $value) {
                unset(
$_SESSION[$key]);
            }
            
            
// user logout ok
            
$this->load->view('layout/header');
            
$this->load->view('user/logout_success'$data);
            
$this->load->view('layout/footer');
            
        } else {
            
            
// there user was not logged in, we cannot logged him out,
            // redirect him to site root
            
redirect('/');
            
        }
        
    }
    
         
/**
     * account function.
     *
     * @access public
     * @return void
     */
    
public function account($id)
    {
     
  $data['accounts'] = $this->user_model->get_account($id);
     
  $this->load->view('layout/header');
     
  $this->load->view('user/account',$data);
     
  $this->load->view('layout/footer');
    } 

    
     
/**
     * account function.
     *
     * @access public
     * @return void
     */
 
   public function account_edit() {

        
        
        
// load form helper and validation library
        
$this->load->helper('form');
        
$this->load->library('form_validation');
        
        
// set validation rules
        
$this->form_validation->set_rules('pseudo''pseudo''required|alpha_numeric');
        
$this->form_validation->set_rules('pseudo_dofus''pseudo_dofus''required');
        
$this->form_validation->set_rules('email''email''required');
        
$this->form_validation->set_rules('pseudo_youtube''pseudo_youtube''required');
        
$this->form_validation->set_rules('sexe''sexe''required|alpha_numeric');
        
$this->form_validation->set_rules('travail''travail''required');
        
$this->form_validation->set_rules('url_dofus''url_dofus''required');
        
        
        if (
$this->form_validation->run() == false) {
            
            
// validation not ok, send validation errors to the view
            
$this->load->view('layout/header');
            
$this->load->view('user/account');
            
$this->load->view('layout/footer');
            
        } else {
            
            
// set variables from the form
            
$pseudo $this->input->post('pseudo');
            
$pseudo_dofus $this->input->post('pseudo_dofus');
            
$email $this->input->post('email');
            
$pseudo_youtube $this->input->post('pseudo_youtube');
            
$sexe $this->input->post('sexe');
            
$travail $this->input->post('travail');
            
$url_dofus $this->input->post('url_dofus');
                

            if (
$this->user_model->update_user($pseudo$pseudo_dofus$email$pseudo_youtube$sexe$travail$url_dofus)) {
                
                
// user account update
                
$this->load->view('layout/header');
                
$this->load->view('user/account_update');
                
$this->load->view('layout/footer');
                
            } else {

 
           // there user was not logged in, we cannot logged him out,
 
           // redirect him to site root
 
           redirect('/');

 
       }

 
   }
    }
    



and my news views code 

PHP Code:
<?php if (isset($_SESSION['username']) && $_SESSION['logged_in'] === true) : ?>

<!--=== Content Part ===-->    
 <div class="container content">    
        <div class="row">
            <?php if (validation_errors()) : ?>
                <div class="col-md-12">
                    <div class="alert alert-danger" role="alert">
                        <?= validation_errors() ?>
                    </div>
                </div>
            <?php endif; ?>
            <?php if (isset($error)) : ?>
                <div class="col-md-12">
                    <div class="alert alert-danger" role="alert">
                        <?= $error ?>
                    </div>
                </div>
            <?php endif; ?>    
     </div>
</div>

<!-- -->
<section>
    <div class="container">

        <!-- RIGHT -->
        <div class="col-lg-9 col-md-9 col-sm-8 col-lg-push-3 col-md-push-3 col-sm-push-4 margin-bottom-80">

            <ul class="nav nav-tabs nav-top-border">
                <li class="active"><a href="#info" data-toggle="tab">Informations personelles</a></li>
                <li><a href="#avatar" data-toggle="tab">Avatar</a></li>
                <li><a href="#password" data-toggle="tab">Changer mon mot de passe</a></li>
                
            </ul>

            <div class="tab-content margin-top-20">

                <!-- PERSONAL INFO TAB -->
                <div class="tab-pane fade in active" id="info">
                <?= form_open() ?>
                        <div class="form-group">
                            <label class="control-label">Pseudo*</label>
                            <input type="text" value="<?= $accounts->pseudo;?>" class="form-control" name="pseudo">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Pseudo Dofus Touch*</label>
                            <input type="text" value="<?= $this->session->userdata('pseudo_dofus'); ?>" class="form-control" name="pseudo_dofus">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Email*</label>
                            <input type="text" value="<?= $this->session->userdata('email'); ?>" class="form-control" name="email">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Pseudo Youtube*</label>
                            <input type="text" value="<?= $this->session->userdata('pseudo_youtube'); ?>" class="form-control" name="pseudo_youtube">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Sexe</label>
                            <input type="text" value="<?= $this->session->userdata('sexe'); ?>" class="form-control" name="sexe">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Travail/Études irl</label>
                            <input type="text" value="<?= $this->session->userdata('travail'); ?>" class="form-control" name="travail">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Url vers votre page perso dofus</label>
                            <input type="text" value="<?= $this->session->userdata('url_dofus'); ?>" class="form-control" name="url_dofus">
                        </div>
                        <div class="margiv-top10">
                            <button class="btn btn-primary"><i class="fa fa-check"></i>Confirmer les changements</button>
                        </div>
                <?php form_close() ?>
                    <p>* : champs obligatoires</p>
                </div>
                <!-- /PERSONAL INFO TAB -->

                <!-- AVATAR TAB -->
                <div class="tab-pane fade" id="avatar">

                    <form class="clearfix" action="#" method="post" enctype="multipart/form-data">
                        <div class="form-group">

                            <div class="row">

                                <div class="col-md-3 col-sm-4">

                                    <div class="thumbnail">
                                        <img class="img-responsive" src="<?= img_url('avatar/default.jpg'?>" alt="" />
                                    </div>

                                </div>

                                <div class="col-md-9 col-sm-8">

                                    <div class="sky-form nomargin">
                                        <label class="label">Selectionner un fichier dans l'ordinateur</label>
                                        <label for="file" class="input input-file">
                                            <div class="button">
                                                <input type="file" id="file" onchange="this.parentNode.nextSibling.value = this.value">Parcourir
                                            </div><input type="text" readonly>
                                        </label>
                                    </div>

                                    <a href="#" class="btn btn-danger btn-xs noradius"><i class="fa fa-times"></i> Supprimer l'avatar</a>

                                </div>

                            </div>

                        </div>

                        <div class="margiv-top10">
                            <a href="#" class="btn btn-primary">Confirmer les changements </a>
                            <a href="#" class="btn btn-default">Retour </a>
                        </div>
                        </form>
                        <p>* : champs obligatoires</p>
                        </div>
                <!-- /AVATAR TAB -->

                <!-- PASSWORD TAB -->
                <div class="tab-pane fade" id="password">

                    <form action="#" method="post">

                        <div class="form-group">
                            <label class="control-label">Mot de passe actuel*</label>
                            <input type="password" class="form-control">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Nouveau mot de passe*</label>
                            <input type="password" class="form-control">
                        </div>
                        <div class="form-group">
                            <label class="control-label">Re taper le nouveau mot de passe*</label>
                            <input type="password" class="form-control">
                        </div>

                        <div class="margiv-top10">
                            <a href="#" class="btn btn-primary"><i class="fa fa-check"></i> Changer mon mot de passe</a>
                            <a href="#" class="btn btn-default">Retour </a>
                        </div>

                    </form>
                    
                    <p>* : champs obligatoires</p>

                </div>
                <!-- /PASSWORD TAB -->

                <!-- PRIVACY TAB -->
                <div class="tab-pane fade" id="privacy">

                    <form action="#" method="post">
                        <div class="sky-form">

                            <table class="table table-bordered table-striped">
                                <tbody>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <div class="inline-group">
                                                <label class="radio nomargin-top nomargin-bottom">
                                                    <input type="radio" name="radioOption" checked=""><i></i> Yes
                                                </label>

                                                <label class="radio nomargin-top nomargin-bottom">
                                                    <input type="radio" name="radioOption" checked=""><i></i> No
                                                </label>
                                            </div>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <label class="checkbox nomargin">
                                                <input type="checkbox" name="checkbox" checked=""><i></i> Yes
                                            </label>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <label class="checkbox nomargin">
                                                <input type="checkbox" name="checkbox" checked=""><i></i> Yes
                                            </label>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.</td>
                                        <td>
                                            <label class="checkbox nomargin">
                                                <input type="checkbox" name="checkbox" checked=""><i></i> Yes
                                            </label>
                                        </td>
                                    </tr>
                                </tbody>
                            </table>

                        </div>

                        <div class="margin-top-10">
                            <a href="#" class="btn btn-primary"><i class="fa fa-check"></i> Save Changes </a>
                            <a href="#" class="btn btn-default">Cancel </a>
                        </div>

                    </form>

                </div>
                <!-- /PRIVACY TAB -->

            </div>

        </div>

        
        <!-- LEFT -->
        <div class="col-lg-3 col-md-3 col-sm-4 col-lg-pull-9 col-md-pull-9 col-sm-pull-8">
        
            <div class="thumbnail text-center">
                <img src="<?= img_url('avatar/default.jpg'?>" alt="" />
                <h2 class="size-18 margin-top-10 margin-bottom-0"><?= $this->session->userdata('username'); ?></h2>
                <h3 class="size-11 margin-top-0 margin-bottom-10 text-muted">DEVELOPER</h3>
            </div>

            


            <!-- info -->
            

        </div>
        
    </div>
</section>
<!-- / -->

    <?php else :  redirect('/'); ?>
    
    <?php endif; ?>


and i do not edit the  User_model

Your error screenshot shows that you don't parse any value into the controller's User::account().
your '$id' doesn't have default value, so that error might be the expected result.
Reply
#7

(This post was last modified: 08-03-2017, 10:26 AM by wendaf.)

OH thanks it work great now Smile
you can closed the thread
Reply




Theme © iAndrew 2016 - Forum software by © MyBB