Bonjour je travaille actuellement sous Codeigniter et j'aimerai une aide par rapport à ma situation.

mon objectif creer un une vue qui contiendra un formulaire de modification des information sur un utilisateur (c'est a dire qu'il affichera les information d'un utilisateur sous forme de formulaire et que lon peut modifier )

maintenant là ou sa coince c'est que, jai fait une vue qui affiche les données (qui n'est pas modifiable) ensuite j'ai creer des lien "modifier" en face de chaque donnée d'utilisateur
le problemes est que l'on peut pas recupere l'id de lutilisateur sur lequel on a cliquer modifier, et l'envoyé au controleur de modification,
et qui lui vas le passer comme un parametre a la vue de modification

4 réponses


elvisogo
Auteur

le controleur

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Gestion extends CI_Controller // doit etre changer 
{
const NB_COMMENTAIRE_PAR_PAGE = 2; //nombre de commentaire par page 

    public function __construct()
    {
        //parent::Controller();
        parent::__construct();

        //  Chargement des ressources pour tout le contrôleur
        $this->load->database();
        $this->load->helper(array('url', 'assets'));
        $this->load->model('admin_gestion_model', 'gestion');
    }

    // ------------------------------------------------------------------------

    public function index($g_nb_commentaire = 1)
    {
        $this->voir($g_nb_commentaire);
    }

// ------------------------------------------------------------------------

    public function voir($g_nb_commentaire = 1)
    {
        $this->load->library('pagination');

    $data = array();

    $nb_commentaire_total = $this->gestion->count();

    if($g_nb_commentaire > 1)
    {
        if($g_nb_commentaire <= $nb_commentaire_total)
        {

            $nb_commentaire = intval($g_nb_commentaire);
        }
        else
        {

            $nb_commentaire = 1;
        }
    }
    else
    {

        $nb_commentaire = 1;
    }

    //  Mise en place de la pagination
    $this->pagination->initialize(array('base_url' => base_url() . 'index.php/gestion/voir/',
                        'total_rows' => $nb_commentaire_total,
                        'per_page' => self::NB_COMMENTAIRE_PAR_PAGE)); 

    $data['pagination'] = $this->pagination->create_links();
    $data['nb_commentaires'] = $nb_commentaire_total;

    $data['messages'] = $this->gestion->liste_utilisateur(self::NB_COMMENTAIRE_PAR_PAGE, $nb_commentaire-1);

    //  On charge la vue
    $this->load->view('Gestion/afficher', $data);
    }

// ------------------------------------------------------------------------

    public function ecrire()
{
    $this->load->library('form_validation');

    $this->form_validation->set_error_delimiters('<p class="form_erreur">', '</p>');
    $this->form_validation->set_rules('admin_name',  '"Admin_name"',  'trim|required|min_length[3]|max_length[25]|alpha_dash');

    $this->form_validation->set_rules('admin_password', '"Admin_password"',  'trim|required|min_length[3]|max_length[25]|alpha_dash');

    if($this->form_validation->run())
    {
        $this->gestion->ajouter_utilisateur($this->input->post('admin_name'),$this->input->post('admin_email'),$this->input->post('admin_password'),$this->input->post('admin_role'));

        echo  "loading ";

    }
    else
    {
        $this->load->view('Gestion/ecrire');
    }
}

    public function modifier($data)
    {

    $this->load->view(Gestion/modifier,$data);

    $this->load->library('form_validation');

    $this->form_validation->set_error_delimiters('<p class="form_erreur">', '</p>');

    $this->form_validation->set_rules('admin_name',  '"Admin_name"',  'trim|required|min_length[3]|max_length[25]|alpha_dash');

    $this->form_validation->set_rules('admin_password', '"Admin_password"',  'trim|required|min_length[3]|max_length[25]|alpha_dash');

    if($this->form_validation->run())
    {

        $this->gestion->ajouter_utilisateur($this->input->post('admin_name'),$this->input->post('admin_email'),$this->input->post('admin_password'),$this->input->post('admin_role'));

        echo  "loading ";

    }
    else
    {
        $this->load->view(Gestion/modifier,$data);
    }

    }

}
elvisogo
Auteur

le model

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Admin_gestion_model extends CI_Model
{
    protected $table = 'tbl_admin';

    /**
     *  Ajoute un utilisateur 
     */
    public function ajouter_utilisateur($admin_name, $admin_email, $admin_password, $admin_role)
    {

        $this->db->set('admin_name',  $admin_name);
        $this->db->set('admin_email',   $admin_email);
        $this->db->set('admin_password', $admin_password);
        $this->db->set('admin_role', $admin_role);

        //  Une fois que tous les champs ont bien été définis, on "insert" le tout
        return $this->db->insert($this->table);
    }

    /**
     *  Édite un utilisateur 
     */
    public function editer_utilisateur($admin_id,$admin_name,$admin_email, $admin_password, $admin_role)
    {
        $this->db->set('admin_name',  $admin_name);
        $this->db->set('admin_email',   $admin_email);
        $this->db->set('admin_password', $admin_password);
        $this->db->set('admin_role', $admin_role);

        //rechercher
        $this->db->where('admin_id',(int) $admin_id);
        return $this->db->update($this->table);

    }

    /**
     *  Supprime des utilisateur 
     */
    public function supprimer_utilisateur($admin_id)
    {
    return $this->db->where('admin_id', (int) $admin_id)
            ->delete($this->table); 
    }

    /**
     *  Retourne le nombre d'utilisateurs ayant une specificité 
     */
    public function rechercher($where = array())
    {
        return (int) $this->db->where($where)
                  ->count_all_results($this->table);
    }

    public function count()
    {
        return $this->db->count_all($this->table);
    }

    /**
     *  Retourne une liste des utilisateurs 
     */
    public function liste_utilisateur($nb = 10, $debut = 0)
    {
                        if(!is_integer($nb) OR $nb < 1 OR !is_integer($debut) OR $debut < 0)
                    {
                        return false;
                    }

                    return $this->db->select('*')
                            ->from($this->table)
                            ->order_by('admin_id', 'desc')
                            ->limit($nb, $debut)
                            ->get()
                            ->result();
    }       

}
elvisogo
Auteur

la vue afficher simple

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > 

    <head>
        <title> CodeIgniter</title>

    </head>

    <body>
        <div id="messages">

            <p>
                Il y a actuellement <?php echo $nb_commentaires; ?> commentaires. <br />
                <?php echo url('ajouter un nouvelle utilisateur', 'Gestion/ecrire'); ?>
            </p>

            <div class="pagination"><?php echo $pagination; ?></div>

            <?php foreach($messages as $message): ?>
                <div id="num_<?php echo  $message->admin_id; ?>" class="message">

                    <p>
                        <a href="#num_<?php echo $message->admin_id; ?>">#</a>
                         <span class="name"><?php echo htmlentities($message->admin_name); ?></span>

                        <span class="email"><?php echo htmlentities($message->admin_email); ?></span>

                        <span class="role"><?php echo $message->admin_role; ?></span>
                    </p>

                </div>

                <?php echo url('modifier utilisateur', 'Gestion/modifier'); ?>

            <?php endforeach; ?>

            <div class="pagination"><?php echo $pagination; ?></div>

        </div>
    </body>

</html>
elvisogo
Auteur

la vue de modification qui pose probleme

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > 
    <head>
        <title>Un livre d'or avec CodeIgniter</title>
        <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $this->config->item('charset'); ?>" />
        <link rel="stylesheet" type="text/css" media="screen" href="<?php echo css_url('livreor/style'); ?>" /> <!--il faut changer cette ligne  -->
    </head>
    <body>
        <form method="post" action="">

        <div>
            <label>
                    admin_name :   <input type="text" name="admin_name" value="<?php echo $message->admin_name; ?>" />
            </label>
                                        <?php echo form_error('admin_name'); ?>
        </div>

            <div>
                <label>
                       admin_email: <input type="text" name="admin_email" value="<?php echo $message->admin_email; ?>"" />
                </label>
                                                    <?php echo form_error('admin_email'); ?>    
            </div>

            <div>
                <label>
                       admin_password : <input type="text" name="admin_password" value="<?php echo $message->admin_password; ?>" />
                </label>
                                                    <?php echo form_error('admin_password'); ?> 
            </div>

            <!--le prenom de l'assuré -->
            <div>
                <label>
                       admin_role : <input type="text" name="admin_role" value="<?php echo $message->admin_role; ?>" />
                </label>
                                                    <?php echo form_error('admin_role'); ?> 
            </div>

            <p>
                <input type="submit" value="Valider" />
            </p>
        </form>
    </body>
</html>