La gestion de tables SQL supplémentaires

On donne et on décrit un script qui affiche automatiquement un formulaire de saisie à partir de la description des tables SQL.

Cette contribution, originellement dédiée à SPIP 1.8, est pourvue d’un Post-Scriptum et d’une nouvelle pièce jointe la faisant fonctionner sous Spip 1.9 en utilisant ses nouvelles fonctionnalités qui simplifient son utilisation.

La version de Spip disponible depuis l’été 2004 donne la possibilité d’adresser
n’importe quelle table SQL, pas seulement celles créées par défaut lors de l’installation de Spip.
Cette nouveauté repose sur une
description des tables SQL par des tableaux PHP selon un format précis utilisé dans
le fichier ecrire/inc_serialbase.php3.
Ces tableaux sont eux-mêmes des éléments du tableau global $tables_principales, qui est utilisé par l’installateur pour la création de ces tables, et par le compilateur de squelettes pour produire des pages HTML de lecture de ces tables. Mais à l’inverse on peut les utiliser pour produire des formulaires Web d’écriture de nouvelles entrées.

Cette contribution se présente donc sous la forme d’un fichier
insere_en_table.php, à installer dans ecrire/.
On lui donne en arguments d’URL le nom de la table et un fichier
dont le chargement provoque la création dans $tables_principales
d’un élément portant le nom de cette table. En particulier, la désignation du fichier
standard ecrire/inc_serialbase.php3
et d’une table standard, comme dans :

insere_en_table.php?table=breves&file=inc_serialbase

provoquera la construction d’un formulaire de saisie fonctionnellement proche de ecrire/breve_edit. Selon le type SQL des différents champs,
le script produira une balise de saisie différente (input, select, textarea) préalablement remplie si le type SQL précise une valeur par défaut.

Lorsqu’on cliquera sur le bouton de validation, le retour sera de même fonctionnellement proche de ce que fait ecrire/breve.
Toutefois, un tel automatisme exclut tout comportement nuancé quant
aux relations entre les champs et les droits de l’émetteur vis-à-vis de sa
demande d’insertion d’une nouvelle entrée, ce que fait ecrire/breve.
Ici, le formulaire demande immédiatement une insertion au serveur SQL.

Malgré ces limitations, ce script donne donc un aperçu de ce qu’il est possible de
faire en Spip à présent. Précisons que la présentation du formulaire repose sur l’appel
des fonctions d’habillage de l’espace privé (pour s’approcher de ce qu’on a d’habitude
pour les brèves ou les articles) mais qu’il est possible de le neutraliser (pour obtenir une présentation plus austère, à l’image des messages de forums) en mettant dans l’URL un troisième argument, mode, affecté à une valeur quelconque.

Ce script est issu de discussions sur les forums de mes précédentes contributions,
dont je remercie beaucoup les intervenants qui m’ont permis de grandement amélioré
mon premier jet. A noter que l’ancien script, nommé tablextra, n’est PAS compatible avec les spécifications finalement retenues pour la version officielle sur le site CVS-SPIP.


En Spip 1.9, il n’est plus nécessaire de décrire les tables dans un tableau PHP, Spip effectuant une requête SHOW au serveur SQL pour obtenir cette description. Il suffit donc de donner seulement le nom de la table à ce script pour obtenir le formulaire d’insertion. On peut aussi donner le nom d’un serveur en cas de Spip étendu à plusieurs bases de données. Ce nouveau script se nomme

inserer.php

et s’appelle avec les conventions de Spip 1.9, soit :

spip/ecrire/?exec=inserer&table=matable

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom