un simple select avec Code Igniter
Code igniter possède une librairie qui permet de manipuler les bases de données assez facilement.
Dans cet article nous allons voir comment utiliser cette librairie.
Les préparatifs
Pour illustrer cet article, nous allons créer un site très simple pour une école (avec l’utilisation de Code Igniter).
Comme nous allons manipuler une base de données, je vous invite à créer une base de données école et à exécuter ce script sql. (La structure et les données sont toutes prêtes
)
Configuration de Code Igniter pour la connexion à la BDD
Pour configurer la connexion de la base de données, il faut modifier le fichier database.php.
Pour le trouver, suivez le fil d’ariane ci-dessous:
ecole -> system -> application -> config -> database.php
ecole : notre racine
systeme : Code Igniter
application : le site web
config : le dossier de configuration
database.php : le fichier de configuration pour la connexion à la base de données
La configuration du fichier est très intuitive. Voilà, ce que j’ai mis :
$db['default']['hostname'] = "localhost"; $db['default']['username'] = "root"; $db['default']['password'] = ""; $db['default']['database'] = "ecole"; $db['default']['dbdriver'] = "mysql";
Le chargement automatique de librairie avec Code igniter
On peut définir les librairies qui vont se charger automatiquement dans nos contrôleurs et vues.
Pour ceci, il faut se tourner vers le fichier autoload.php qui se trouve dans le dossier config.
ecole -> system -> application -> config -> autoload.php
Dans notre exemple, pour manipuler la base de données nous allons nous servir de la librairie database.
$autoload['libraries'] = array('database');
C’est pratique quand on est feignant comme moi
.
Si la connexion se passe bien, dans la page d’accueil (pour ma part http://localhost/ecole/) vous devriez voir apparaître:
Si vous voyez un message d’erreur « A Database Error Occurred Unable to connect to your database server using the provided settings. » comme ceci :
C’est que la connexion s’est mal passée.
Il faut que vous vérifiez vos identifiants de connexion, ainsi que le bon fonctionnement de votre serveur de base de données (mysql, postgres …)
Notre premier select avec l’objet DB
Comme nous travaillons dans un environnement MVC, on va traiter nos requêtes dans la partie : Modèle.
Dans le framework Code Igniter, il faut se positionner dans le dossier models et créer un fichier ecoleMod.php
Si vous êtes perdus dans tous ces dossiers, suivez le guide juste en dessous :p
ecole -> system -> application -> models -> ecoleMod.php
Voici la structure type que nous allons adopter pour ecoleMod.php
class ecoleMod extends Model {
public function __construct()
{
parent::__construct();
}
//notre fonction
public function getEnfant()
{
}
}
Pour compliquer notre travail, dans un premier temps nous allons faire appel à notre modèle ecoleMod situé dans le contrôleur par défaut : welcome.php.
ecole -> system -> application -> controllers -> welcome.php
Dans index, il suffit de mettre :
function index()
{
$this->load->model('ecoleMod');
$this->ecoleMod->getEnfant();
}
Pour accéder à notre contrôleur, il suffit d’aller sur http://localhost/ecole.
Voilà, nous pouvons commencer ![]()
Pour manipuler la base de données, nous allons utiliser un objet très complet : db. De plus, nous allons voir ensemble les principales méthodes. Attention c’est très compliqué (non je plaisante :p)
Notre première requête
Nous allons faire une fonction qui renvoie la liste d’élève de notre classe.
Il y a 2 méthodes que l’on peut utiliser:
1 – Méthode passe partout.
2 – Méthode propre à la commande SELECT du SQL, qui peut être appliquée selon deux méthodes distinctes.
- Ma méthode passe partout query
La méthode query permet d’exécuter toutes les requêtes. Voici la syntaxe :
$this->db->query(Larequete);
Pour nous cela sera :
$oEleve = $this->db->query('SELECT id, nom, prenom FROM eleve');
- La méthode get propre aux requêtes SELECT.
Si elle n’a pas de restrictions, cette méthode réclame qu’un seul paramètre : le nom de la table
$oEleve=$this->db->get(‘NOM_DE_LA_TABLE‘);
Pour récupérer les élèves, cela donne :
$oEleve=$this->db->get('eleve');
Il est préférable d’utiliser cette commande, parce qu’elle permet de construire les requêtes plus
proprement. Aussi cela peut faciliter la relecture du code.:)
$oEleve, qu’es ce que c’est ?
C’est un objet où sont stockées les informations que la requête renvoie. Si vous avez une base de données mysql, vous aurez un objet du type CI_DB_mysql_result.
result_array();
Pour récupérer les informations de cet objet, nous allons faire appel à la méthode result_array(). Elle renvoie le résultat de la requête sous forme de tableau.
$oEleve=$this->db->get('eleve');
echo "<pre>";
var_dump($oEleve->result_array());
echo "</pre>";
Voici un extrait de résultats que renvoie result_array().
result();
Un autre méthode intéressante à voir : result().Elle renvoie le résultat de la requête sous forme de stdclass.
stdclass est une classe native de PHP. On peux affecter toutes sortes de propriété à cette classe passe partout. Pratique
Pour notre exemple, pour récupérer les données vous pouvez utiliser cette boucle :
foreach ($oEleve->result() as $row)
{
echo $row->id;
echo $row->nom;
echo $row->prenom;
}
Au final la fonction getEnfant de notre modèle ecoleMod va donner :
public function getEnfant()
{
$oEleve=$this->db->get('eleve');
return $oEleve->result();
}
Vous voyez le code est vraiment compliqué ! ![]()
Du Modèle à la Vue en passant par le Contrôleur
C’est là que nous allons nous motiver pour respecter une structure propre avec Code Igniter.
Nous allons créer notre contrôleur ecoleCtrl dans ce chemin :
ecole -> system -> application -> controllers -> welcome.php
Voici la structure de notre contrôleur :
class ecoleCtr extends Controller {
public function __construct()
{
parent::__construct();
}
public function listeEleve()
{
}
}
Attaquons nous à notre fonction listeEleve().
Déjà il faut inclure notre modèle ecoleMod : $this->load->model(‘ecoleMod’);
Nous allons faire appel à notre méthode getEnfant() avec :
$aData['aEleve'] = $this->ecoleMod->getEnfant();
Voici notre belle fonction listeEleve
public function listeEleve()
{
$this->load->model('ecoleMod');
$aData['aEleve'] = $this->ecoleMod->getEnfant();
}
Voici le lien de notre contrôleur ; http://localhost/ecole/index.php/ecoleCtr/listeEleve.
La vue
On va pouvoir finaliser les traîtements de nos élèves en les affichant dans notre vue listeEleve.php
ecole -> system -> application -> views-> listeEleve.php
Voici l’arborescence que vous devriez avoir.
Nous allons pouvoir traiter notre vue. Il n’y a rien de nouveau ça reste traditionnel.
<html> <body> <h1>Bienvenue</h1> <table> <tr><th>Id</th><th>Nom</th><th>Prenom</th></tr> <?php foreach ($aEleve as $oEleve): ?> <tr> <td><?=$oEleve->id?></td> <td><?=$oEleve->nom?></td> <td><?=$oEleve->prenom?></td> </tr> <?php endforeach;?> </table> </body> </html>
Ce qui va donner :
A travers toutes ces étapes on a pu voir les principales fonctions qui servent à récupérer les infomations de la base de données. Voici le pack qui continent tout le code source du site ecole.








(2 votes, moyenne: 4,00 max : 5)
avril 16th, 2009 at 9 h 38 min
Bonjour,
Très bon, tutoriel, une question lors de l’affichage du tableau, page blanche, rien de s’affiche.
Thank you !
avril 16th, 2009 at 14 h 22 min
Salut,
Merci pour ta remarque.
En fait il faut simplement faire un var_dump. En faisant :
echo « <pre> »;
var_dump($oEleve->result_array());
echo « </pre> »;
J’ai apporté la correction sur le tutoriel.
juillet 2nd, 2009 at 17 h 09 min
Bonjour,
J’aime beaucoup ce tutoriel cependant l’utilisation du short tag <?= n’est pas forcément conseillé. il est préférable d’utiliser <?php echo
Bonne soirée
septembre 8th, 2009 at 10 h 47 min
sympa ton tuto, par contre il faudrait revoir ton orthographe
octobre 10th, 2009 at 12 h 28 min
bjr,
Merci bqqqqqqqq pour ce tutoriel, je le trouve trop utile (^.^)
mias comm remarque je partage l’avis d’Alexandre, car ca pas marché avec <?=
donc pour ListeEleve
Bienvenue
IdNomPrenom
id ?>
nom ?>
prenom ?>
octobre 10th, 2009 at 12 h 30 min
pour ListeEleve
id ?>
nom ?>
prenom ?>
novembre 10th, 2010 at 20 h 11 min
Hum j’ai essayer d’appliquer le tuto avec ma base de donnée mais j’ai une erreur :
Parse error: syntax error, unexpected T_RETURN in /home/manikkam/public_html/T3/CodeIgniter/system/application/models/typemod.php on line 14
ligne 14 :
return $AllType->result();
Qqun pourrait m’aider a cerner le probleme ?
décembre 29th, 2010 at 15 h 20 min
pour voir s’afficher les données, remplacer la vue par :
Bienvenue
IdNomPrenom
id ?>
nom ?>
prenom ?>
décembre 29th, 2010 at 15 h 22 min
oups, les message a été coupé…
remplacer dans la vue
les id?>
par id ?>
février 28th, 2011 at 17 h 12 min
Bonjour,
j’ai téléchargé les sources et j’ai tout qui marche mais quand je vais la :
http://ks355277.kimsufi.com/~company/ecole/index.php/ecoleCtr/listeEleve
j’ai ce message :
An Error Was Encountered
Unable to locate the model you have specified: ecolemod
??
Merci de votre réponse