Clearbricks
Parcourir la série : premier - dernier
Clearbricks : quelques autres fonctions de dbLayer
Dans le billet d'introduction (qu'il est préférable d'avoir lu avant d'aborder ce billet) nous avons vu comment effectuer des requêtes avec la fonction select()
de dbLayer. Après avoir découvert comment lire les enregistrements dans la base de données, nous allons ici voir comment insérer, mettre à jour et effacer des enregistrements.
Voici pour rappel la table des lecteurs que nous avons utilisé comme exemple dans le billet d'introduction :
La table lecteurs
id | nom | role |
---|---|---|
1 | Pierre | clown |
2 | Paul | développeur |
3 | Jacques | soutien moral |
4 | Olivier | chef |
5 | Kozlika | fée |
Le curseur
Pour insérer ou mettre à jour un enregistrement avec dbLayer, il faut d'abord ouvrir un curseur. Cela se fait avec la commande openCursor()
et permet de définir sur quelle table on va agir. Ici ce sera la table lecteurs.
Ouvrons un curseur :
$cur = $con->openCursor('lecteurs');
$cur
est un cursor, ou curseur en français. Nous allons lui attribuer des variables qui correspondent aux colonnes de la table et des valeurs grâce à la syntaxe suivante :
$cur->variable = valeur;
Exemples :
Pour définir le nom :
$cur->nom = 'César';
Pour définir le rôle :
$cur->role = 'empereur';
Insérer un enregistrement avec la fonction insert()
Un nouveau lecteur est arrivé, il s'appelle Hector et son rôle est "évangéliste". Comment faire pour l'ajouter à la table des lecteurs ? On ouvre un curseur, on lui attribue des valeurs :
$cur = $con->openCursor('lecteurs'); $cur->nom = 'Hector'; $cur->role = 'évangéliste';
Ensuite on utilise la fonction insert(), elle va récupérer les variables et les valeurs pour les insérer dans la table :
$cur->insert();
Voici le code complet :
$cur = $con->openCursor('lecteurs'); $cur->nom = 'Hector'; $cur->role = 'évangéliste'; $cur->insert();
Et la table après l'insertion :
id | nom | role |
---|---|---|
1 | Pierre | clown |
2 | Paul | développeur |
3 | Jacques | soutien moral |
4 | Olivier | chef |
5 | Kozlika | fée |
6 | Hector | évangéliste |
Un enregistrement a été créé. Notez que l'id de cet enregistrement vaut 6 car la base de données a été configurée pour incrémenter l'id à chaque nouvel enregistrement.
Modifier un enregistrement avec la fonction update()
Pierre n'est plus clown, il est devenu professeur. Comment mettre à jour l'enregistrement de la table qui le concerne ? On ouvre un curseur et on attribue les nouvelles valeurs :
$cur = $con->openCursor('lecteurs'); $cur->role = 'professeur';
Puis on utilise la fonction update()
, Le mot-clé WHERE
permet de définir quel enregistrement nous allons mettre à jour, ici on veut modifier l'enregistrement de Pierre donc nous allons sélectionner l'enregistrement où le nom est "Pierre" :
$cur->update('WHERE nom = \'Pierre\';');
Voici le code complet :
$cur = $con->openCursor('lecteurs'); $cur->role = 'professeur'; $cur->update('WHERE nom = \'Pierre\';');
Et le résultat :
id | nom | role |
---|---|---|
1 | Pierre | professeur |
2 | Paul | développeur |
3 | Jacques | soutien moral |
4 | Olivier | chef |
5 | Kozlika | fée |
6 | Hector | évangéliste |
L'enregistrement a été mis à jour.
Effacer un enregistrement avec la fonction execute()
Il n'y a pas de fonction spéciale pour effacer un enregistrement, nous allons utiliser la commande execute()
qui sert à exécuter des requêtes SQL.
Jacques n'est plus lecteur, Comment effacer l'enregistrement qui le concerne ? Voici la requête SQL qui va effacer l'enregistrement avec l'id
3 : DELETE FROM lecteurs WHERE id = 3;
On exécute la requête :
$query = 'DELETE FROM lecteurs WHERE id = 3;'; $con->execute($query);
Et la table devient :
id | nom | role |
---|---|---|
1 | Pierre | professeur |
2 | Paul | développeur |
4 | Olivier | chef |
5 | Kozlika | fée |
6 | Hector | évangéliste |
Notez qu'on aurait pu réaliser la même action avec cette requête SQL :
$query = 'DELETE FROM lecteurs WHERE nom = \'Jacques\';';
Quelques fonctions supplémentaires pour les recordsets
Ces fonctions permettent d'obtenir des informations sur les requêtes SELECT décrites dans le billet d'introduction.
isEmpty()
Cette fonction retourne true
si un recordset
est vide ou false
sinon. Elle s'utilise dans une condition, pour voir si un recordset contient des enregistrements. Ici on va afficher les noms des lecteurs dont l'id est supérieur à 3 :
$query = 'SELECT nom FROM lecteurs WHERE id > 3;'; $rs = $con->select($query); if ($rs->isEmpty()) { echo('aucun lecteur'); } else { while ($rs->fetch()) {echo($rs->f('nom').' ');} }
Ce code affichera "aucun lecteur" si le recordset est vide et affichera les noms des lecteurs s'il y en a.
Pour ne pas afficher de message spécifique en cas de recordset vide on utilisera le code suivant :
$query = 'SELECT nom FROM lecteurs WHERE id > 3;'; $rs = $con->select($query); if (!$rs->isEmpty()) { while ($rs->fetch()) {echo($rs->f('nom').' ');} }
count()
Cette fonction retourne le nombre d'enregistrements présents dans un recordset :
$query = 'SELECT nom FROM lecteurs WHERE id > 3;'; $rs = $con->select($query); echo('nombre d\'enregistrements : '.$rs->count());
Ceci affichera par exemple "nombre d'enregistrements : 2".
Conclusion
Grâce au billet précédent et à ce billet, vous savez lire et modifier des enregistrements dans des tables d'une base de données. Pour apprendre comment créer ou modifier des tables, voyez la documentation de Dotclear. Vous êtes prêts à gérer des tables dans une base de données avec Clearbricks.