Code igniter et la base de données

Code igniter et la base de données

sommaire :

  1. Création du formulaire
  2. Envoi et traitement des données
  3. Modification Update avec CI
 

Nous allons voir comment interagir avec une base de données avec code igniter.
Dans ce tutoriel nous reprendrons l’exemple de cet article.

Création du formulaire

Pour créer notre formulaire, nous allons faire appel au helper (form).

code_igniter

Un helper est une librairie de code igniter.

Dans le controleur ecoleCtr, nous allons charger la vue ajoutEleve.

    public function __construct()
    {
        parent::__construct();
        $this->load->helper('form');
    }
    public function ajoutEleve()
    {
		$this->load->view('ajoutEleve');
    }

Maintenant dans la vue ajoutEleve nous allons utiliser la commande form_open pour construire le formulaire.

la synthaxe : form_open(méthode du contrôleur où seront envoyées les données du formulaire);

Pour nous ça va être :

<?=form_open('ecoleCtr/insertEleve');?>

<p>nom : <input type="text" name="nom"/></p>
<p>prenom : <input type="text" name="prenom"/></p>
<p><input type="submit" value="envoyer"/></p>

Attention les noms de champs doivent être les même que ceux de la base.
Cela va permettre d’insérer les données dans la base plus facilement.

Envoi et traitement des données

Stocker les données avec Code Ingiter se fait très rapidement :)

On va utiliser la méthode insert de la librairie db.

    public function insertEleve()
    {
		$this->db->insert('user',$_POST);
    }

Un fois que vous validez votre formulaire si vous tombez sur cette adresse :

http://example.com/index.php/eleveCtr/eleve_insert

C’est que vous avez oublier comme moi de remplir :

$config['base_url']	= "http://localhost/ecole";

dans system-> application -> config -> config.php

Redirection

On va rediriger notre utilisateur à la page où il y a la liste d’élève.

Avec Code Igniter pour faire des redirections on a besoin du helper url

       $this->load->helper('url');

La méthode redirect(chemin,type); s’occupe de la redirection.

Pour nous ça sera :

redirect('/ecoleCtr/listeEleve', 'refresh');

Modification Update avec CI

Maintenant que nous savons insérer des données nous allons apprendre à les modifier :)

Retournons dans notre vue listeEleve.php :)

ecole -> system -> application -> views-> listeEleve.php

Pour chaque élève, on va ajouter un lien vers un formulaire pour modifier les informations de cet élève.

Les liens avec anchor

La syntaxe n’est pas compliqué anchor(url,texte)

Donc dans notre exemple nous allons rediriger vers la méthode modifEleve de ecoleCtr;

<td><?=anchor('ecoleCtr/modifEleve/'.$oEleve->id, 'Modifier');?></td>

Rendez vous dans le modèle

ecole -> system -> application -> models -> ecoleMod.php

On va modifier notre fonction :

    public function getEnfant($aRestriction = null)
    {
    	if (is_array($aRestriction))
    	{
	    	foreach ($aRestriction as $sKey => $sValue)
	    	{
	    		$this->db->where($sKey, $sValue);
	    	}
    	}
    	$oEleve=$this->db->get('eleve');
    	return $oEleve->result();
    }

La clause $this->db->where

La clause $this->db->where va nous permettre de créer nos requête de projections.
Le premier paramètre est l’attribut de la table et le second est la valeur.
Par exemple :
$oEleve=$this->db->get(‘eleve’);
$this->db->where(‘nom’, ‘paul’);

donnera SELECT * FROM eleve WHERE nom = paul

On s’est occupé du modèle, on va pouvoir redescendre au contrôleur :D .
Bon là rien de nouveau :

    public function modifEleve()
    {
    	$this->load->model('ecoleMod');
    	$iIdEleve = $this->uri->segment(3);
		$aEleve = $this->ecoleMod->getEnfant(array('id'=>$iIdEleve));
		$aData['nom'] = $aEleve[0]->nom;
		$aData['prenom'] = $aEleve[0]->prenom;
		$aData['id'] = $aEleve[0]->id;
		$this->load->view('modifEleve',$aData);
    }

Pareil pour la vue modifEleve, on est sur du terrain connu

<html>
<body>
<h1>Modification d'un eleve</h1>

<?=form_open('ecoleCtr/updateEleve/'.$id);?>

<p>nom : <input type="text" name="nom" value ="<?=$nom?>"/></p>
<p>prenom : <input type="text" name="prenom" value ="<?=$prenom?>"/></p>
<p><input type="submit" value="envoyer"/></p>

</body>
</html>

La clause $this->db->update

pour faire un update avec un code igniter on a besoin de la méthodewhere et update.

$this->db->where(attribut,valeur)

Faites bien attention à cette méthode, une erreur et Code Igniter modifie tous les champs de la table.
(et oui ça m’est arrivé ^^)

$this->db->update(table,valeurs)

Notre méthode updateEleve va ressembler à ça :

    public function updateEleve()
    {
    	$this->db->where('id', $this->uri->segment(3));
		$this->db->update('eleve',$_POST);
		 redirect('/ecoleCtr/listeEleve', 'refresh');
    }

Voila ce tutoriel est terminé, votre base de données n’a plus qu’à bien se tenir.

Note de l'article




1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, moyenne: 1,67 max : 5)
Loading ... Loading ...

Donner votre avis :