Code igniter et la base de données
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).
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
.
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