Sommaire :

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 :

Édition en ligne
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

Suppression de lignes de la table Articles
ID Titre Categorie Article

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…