Sommaire :
- (en cours de lecture) Présentation d'EasySQL
- Comment utiliser EasySQL
- Documentation d'EasySQL
Aujourd'hui je vais vous présenter une petite classe maison qui permet d'administrer une base de données sans connaissances techniques.
Ce module est né d'un constat : l'interface
d'administration d'un site est toujours la même.
D'abord, un module pour insérer du nouveau contenu dans les
tables.
Un module pour éditer du contenu déjà en mémoire.
Et un module pour en supprimer.
Bref : les trois instructions SQL de manipulation,
INSERT, UPDATE, DELETE.
Prenons l'exemple d'un blog constitué – pour simplifier
– de trois tables : les auteurs, les articles, les
commentaires.
Pour chacune de ces tables, on a besoin des trois opérations
citées plus haut : faut-il développer neuf pages, qu'il
faudra mettre à jour si on modifie le schéma des tables ?
D'où l'arrivée d'EasySQL.
Présentation
Si vous avez déjà développé un ou plusieurs sites web, vous
vous êtes sûrement rendus compte que la réalisation de
l'interface d'administration pouvait être assez fastidieuse,
alors que très peu de personnes en profiteront.
De façon basique, c'est toujours la même chose : permettre aux
administrateurs d'insérer, de mettre à jour et de supprimer
des données dans la base de données.
En soi, vous pourriez leur mettre PhpMyAdmin, ce qui conviendrait largement.. sauf que ! PhpMyAdmin est lourd, pas forcément intuitif pour un utilisateur lambda qui se retrouvera noyé dans le jargon technique, et offre trop de possibilités : même s'ils sont administrateurs, vous ne voulez pas forcément qu'ils puissent modifier le schéma de la table, ou supprimer des tables systèmes.
Plutôt de de développer une page pour chaque table, j'ai fini par créer EasySQL, une classe PHP qui permet d'administrer les données d'une table (uniquement ses données ; pas la structure). Le but était d'avoir quelque chose d'assez souple pour être utilisable dans tous les cas, et d'assez intuitif pour que même un technophobe puisse s'en sortir !
Concrètement, à quoi sert EasySQL ?
Ce module se charge de vos INSERT, UPDATE, DELETE : vous lui indiquez juste sur quelle(s) table(s) il doit travailler, et il fera son boulot en affichant des formulaires, en enregistrant les demandes de l'utilisateur, en contrôlant la cohérence des valeurs…
EasySQL est conçu pour une utilisation
relationnelle : ainsi, dans le formulaire d'ajout
d'article, le nom de l'auteur ne sera pas un champ de texte
mais une liste déroulante avec la liste des auteurs déjà
inscrits sur le site. Idem pour les commentaires : la
colonne indiquant à quel article se réfère le commentaire sera
une liste déroulante avec la liste des articles ! Et
l'ensemble est hautement configurable pour faciliter au
maximum l'administration : ce sera d'ailleurs
l'objet du second article que de donner des exemples
utilisables.
Bien évidemment, le but est de minimiser le code pour utiliser
la classe : toutes ces données sont donc générées
intelligemment, par inférence du type de la colonne, de son
nom, des clés étrangères… même si des paramètres
permettent de reprendre la main sur les choix automatiques.
Théoriquement, le code de votre côté ne dépassera pas 20
lignes !
Tu peux donner des exemples d'utilisation ?
Comme une image vaut mieux qu'un long discours, quelques exemples vont suivre…
Ajout de données
Cet exemple illustre l'ajout d'un article sur la table
Articles.
Schéma de la table :
- Titre : VARCHAR(50) ;
- Categorie : VARCHAR(50), noté comme une clé étrangère sur la table Categorie (voir plus bas pour la gestion des références) ;
- Article : TEXT. Par défaut, EasySQL n'affiche qu'un textarea, mais vous pouvez facilement le configurer pour afficher votre interface d'édition préférée.
Formulaire généré automatiquement :
Modification de données
La modification des données se fait en deux étapes : d'abord l'affichage d'un tableau avec la liste des tuples et un bouton « Éditer », puis un formulaire pour modifier les données sélectionnées.
Cet exemple illustre la modification d'un auteur dans la table
Auteurs.
Types :
- Pseudo : VARCHAR(50) ;
- Password : VARCHAR(40) : EasySQL crypte automatiquement les colonnes nommées Password avec l'algorithme sha1.
Pré-modifications
La liste des lignes en mémoire :
ID | Pseudo | Password |
---|---|---|
Lambda | 482fbdf856c5a7b9f6d7767c7ead2574b94aaffg | |
Niemand | de4d30f58d6e58cc894461503f5a9a1j242e4811 | |
Neamar | 73439211c0fb5c64b4455accccb02cece92969ea | |
SuperUser | 593gceg967c5a7b9f6d8856c7ead278hu5srrtty |
Modifications
Voilà le formulaire obtenu après clic sur le bouton « Éditer » de la ligne Neamar :
Suppression
La suppression se fait par un tableau qui affiche l'intégralité des lignes. Il suffit de cocher une petite croix en regard de chaque ligne que l'on souhaite supprimer pour nettoyer la table
Autour d'EasySQL
Limitations
- Technique : la première colonne doit être auto-increment, et de préférence Primary (ce n'est pas obligatoire mais très fortement recommandé)
- Pratique : une seule modification à la fois, impossible par exemple de « modifier le titre de tous les articles écrits par X » en une seule fois ; le but n'est pas d'offrir un shell SQL mais une interface simple.
Conseils
- Technique : préférez le moteur InnoDB pour vos tables (sauf si vous ne souhaitez pas gérer des relations). MyISAM (par défaut) est aussi supporté mais les contraintes ne sont plus gérées ; voir l'article suivant pour une présentation d'EasySQL avec MyISAM.
- Pratique : EasySQL se prête plus à l'administration de petites tables que de vraies bases : si vos tables ont plus de 100 000 tuples, les interfaces d'édition et de suppression (qui affichent toutes les lignes) perdront toute utilité.
⇒ Dans le prochain article, nous verrons comment utiliser concrètement EasySQL…