SPIP - Contrib

SPIP - Contrib

[ar] [en] [es] [fr] [it]

176 visiteurs en ce moment

fontsizeup fontsizedown
Accueil du site > Contribs > Documentation > Tutoriaux Multitables & Multibases > La gestion de tables SQL supplémentaires
[25 commentaires]

La gestion de tables SQL supplémentaires

dimanche 31 juillet 2005, par Déesse A.

  • Digg
  • Del.icio.us
  • Facebook
  • Google
  • Technorati
0 vote

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.

P.-S.

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

Retour en haut de la page

25 Messages de forum

Voir toute la discussion

Pages 1 | 2 | 3

  • Répondre à ce message

    22 mars 2008 23:18 , par mendesrocc

    En version 1.8.2 d il faut exécuter l’url suivante :

    ecrire/insere_en_table.php ?table=spip_ma_table&file=inc_serialbase

    et modifier le fichier inc_serialbase.php3 pour enlever la gestion du préfixe lrs de l’insert.

    Bon le résultat est intéressant mais pas ouf !!!

    Connaissez-vous un script pour une gestion complète de formulaire ? Je dois réaliser une application pour enquête de satisfaction.

    merci d’avance.

  • Répondre à ce message

    18 février 2007 22:39 , par Christophe Boutin

    Voir le Plugin dont cette contrib est à l’origine : Gestion des données SQL avec TableDATA

    Bien à vous,

    Christophe

  • Répondre à ce message

    6 février 2007 23:40 , par Christophe Boutin

    Bonsoir,

    Avec l’aide des articles de Spip-Contrib, j’ai même réussi à le transformer en Plugin. Il y a donc également un bouton pour le lancer dans la zone privée. Et j’ai ajouté une liste de choix pour la table sur laquelle on veut travailler.

    J’aimerai beaucoup que l’un d’entre vous puisse l’essayer et me dire ce qu’il en pense, cela m’encouragerait très certainement à faire mieux...

    Merci encore à ce site, dans lequel j’apprends beaucoup de chose !

    J’ai donc modifié l’article 1604 proposé en validation. Et il est possible de pré-télécharger le plugin sur : http://colliervoye.free.fr/spip/

    Christophe (mon mél est dans le fichier en téléchargement @+)

    Voir en ligne : pré-téléchargement de mon plugin TableData (gestion table extra - tables MySql supplémentaires)

  • Répondre à ce message

    6 février 2007 00:57 , par Christophe Boutin

    Bonsoir,

    J’ai beaucoup apprécié cette contrib. Mais j’ai eu la même réaction que toi, alors j’ai cherché et j’ai finalement dû me jeter à l’eau : Je me suis donc inspiré de cette contrib pour créer un module de gestion : lister, ajouter, modifier les enregistrements.

    J’ai proposé ce module pour approbation, j’espère qu’il sera bientôt publié : article 1604, intitulé ’Tables SQL supplémentaires - TableDATA -’ C’est mon premier post, j’espère vite le voir en ligne.

    En attendant, il est téléchargeable sur : http://colliervoye.free.fr/spip/Tab...

    Bien à vous,

    Christophe

    Voir en ligne : TableDATA.zip (télécharger)

  • Répondre à ce message

    10 octobre 2006 18:48 , par lcdh

    Bonjour Emmanuel,

    Magnifique ! Juste une chose : quelle modif faire pour pouvoir aussi éditer des données déjà saisies ?

    Pour le moment ce script permet d’entrer toutes les infos qu’on veut, mais pour le cas où on souhaite modifier des données déjà entrées et présentes en base ... ?

  • Répondre à ce message

    31 août 2006 21:21 , par francois

    1) Merci

    2) Dans votre article, vous dite que l’on accède au script ainsi :

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

    Y a-t-il moyen d’ajouter, dans l’écran d’administration de SPIP un tel lien ou est-on obligé de le saisir à la main à chaque fois (on peut en faire un favori dans son navigateur, bien sûr, mais c’est moins convivial) ?

  • Répondre à ce message

    30 août 2006 17:09 , par Déesse A.

    1) en l’état, non. Mais on peut faire que, pour chaque table T, il existe un tableau $T_nom indexé par les noms des champs et ayant pour valeurs les "noms intelligibles" de ces champs. Il suffira alors de modifier un seul endroit dans le script. Ce tableau pourrait etre dans mes_fonctions.php, ou, mieux, dans un fichier T.php qui serait chargé lorsqu’on invoque ce script.

    2) je ne comprends pas la question.

  • Répondre à ce message

    27 août 2006 21:45 , par francois

    Merci pour cet article très intéressant, qui entraîne deux questions :

    1) y a-t-il moyen de donner des noms intelligibles pour les champs dans le formulaire qui s’affiche ?

    2) comment ajouter un lien dans l’admin pointant sur cette page ?

  • Répondre à ce message

    12 juin 2006 19:23 , par Déesse A.

    Pour les warnings, je viens de poster une version qui les élimine, mais à part ça chez moi ça marche avec la 1.9b3.

  • Répondre à ce message

    12 juin 2006 18:58 , par Vincent ROBERT

    Salut Emmanuel,

    Je viens de tester ton script inserer.php, et je n’ai pas réussi à le faire fonctionner.

    J’ai obtenu l’erreur suivante :

    J’ai les différentes URLs suivantes :

    J’ai testé sur "brèves" avant de me lancer dans la création d’une nouvelle table, et comme depuis le 30/04/2006 de nombreux fichiers ont été renommés et/ou déplacé, je me demande si un lien n’est pas brisé.

    J’avais placé le script renommé en .php dans le répertoire exec de ecrire.

Pages 1 | 2 | 3

Répondre à cet article

Retour en haut de la page

Ça discute par ici