Trouver et modifier un enregistrement en SQLite
Les mêmes fonctions PHP servent à passer toutes les requêtes à la base SQLite: exec ou query, selon que l'on veut encoyer ou recevoir des données. C'est surtout le contenu de la commande SQL qui changera selon que l'on veut trouver un enregistrement ou le modifier. Et SQL permet de trouver un enregistrement de différentes façons.
La fonction query est suivie soit par une boucle, soit une simple instruction
quand une seule ligne de la table est retournée.Pour pouvoir décrire ces commandes, nous avons ajouté deux scripts à notre liste: remplissage d'une base de donnée, affichage de son contenu entier.
Remplissage d'une base de données
Voir le script SQLite Fill.
Un tableau est créé pour l'exemple contenant une liste d'enregistrements que l'on insère par appels successifs de la commande INSERT, vue dans le chapitre précédent.
Afficher le contenu d'une base, dump
Voir le script SQLite Dump.
On exécute la commande SELECT sans condition particulière, avec la commande PHP arrayQuery qui assigne à un tableau les enregistrements trouvés, en l'occurence tout le contenu de la base de données.
Accéder à un enregistrement
On accède à un article dans la base à partir de son identifieur, assigné au champ ID. La requête est celle que nous avons vu pour effectuer une lecture, avec l'addition d'une clause conditionnelle:
WHERE ID = $id
$id étant la variable qui contient l'identifieur du billet. Le code sera donc:
$myid = "2";
$query = "SELECT post_title, post_content, post_author, post_date, guid
FROM $mytable WHERE (id=$myid)";
$results = $base->query($query);
$row = $results->fetchArray();
Voir le script d'accès selon ID.
Rechercher un billet
L'utilisateur ne connaît jamais l'ID d'un enregistrement, il accède à un billet à partir d'une liste, et dans ce cas le gestionnaire sait quel est l'ID du billet, ou il effectue une recherche et dans ce cas le gestionnaire obtient l'ID comme résultat de la recherche. Dans ce second cas la requête comprendra une clause WHERE adaptée à la recherche. L'élément LIKE s'utilise pour trouver une chaîne de caractère dans un champ de la base.
LIKE '%$word%'
La variable $word contient la chaîne que l'on recherche, les symbole % signifie que ce qui précède ou ce qui suit est indéfini. Le code deviendra:
$word = "post 3";
$query = "SELECT ID, post_content FROM $mytable WHERE post_content LIKE '%$word%' ";
$results = $base->query($query);
$row = $results->fetchArray();
La requête concerne les champs ID et post_content, dans la table $mytable, et la condition est que le champ post_content (le contenu du billet), contienne la chaîne assignée à la variable $word.
On récupère ensuite l'ID dans le tableau généré par la fonction arrayQuery.
$row['ID']
Voir le code du script de recherche d'ID.
Modifier un enregistrement
On modifie un billet avec une commande qui agit sur le contenu des tables, UPDATE, associée aux éléments SET pour assigner un nouveau contenu et WHERE pour sélectionner le billet.
$myid = "2";
$changed="Nouveau contenu du billet";
$query = "UPDATE $mytable SET post_content = '$changed' WHERE (id=$myid)";
$results = $base->exec($query);
Pour l'exemple on assigne directement un ID à la variable $myid et un nouveau contenu à $changed.
La commande UPDATE concerne la table $mytable, où l'on assigne le champ post_content avec le nouveau contenu, et comme précédemment on sélectionne le billet avec la clause WHERE.
Voir le code source de mise à jour d'un billet.
Téléchargement
- Le code source complet SQLite 2 dans une archive ZIP et le code source SQLite 3.