SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 320 visiteurs en ce moment

Accueil > Documentation > Tutoriaux Multitables & Multibases > La gestion de tables SQL supplémentaires

La gestion de tables SQL supplémentaires

31 juillet 2005 – par Déesse A. – 25 commentaires

3 votes

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

Dernière modification de cette page le 14 octobre 2007

Retour en haut de la page

Vos commentaires

  • Le 3 août 2005 à 14:47, par Bourgeon En réponse à : > La gestion de tables SQL supplémentaires

    L’exemple :

    insere_en_table.php ?table=breves&file=inc_serialbase

    il faut écrire ceci pour que ça marche :

    insere_en_table.php ?table=spip_breves&file=inc_serialbase

    Testé sous spip 1.8.2 pr2

    • Le 14 août 2005 à 08:08, par ? En réponse à : > La gestion de tables SQL supplémentaires

      oui, en fait ce script remonte à une version alpha de la 1.8 et on a changé la gestion des préfixes de table pour la sortie de la 1.8 officielle.

    • Le 22 mars 2008 à 23:18, par mendesrocc En réponse à : > La gestion de tables SQL supplémentaires

      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

  • Le 10 octobre 2006 à 18:48, par lcdh En réponse à : Insérer ok mais éditer ?

    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 ... ?

    • Le 6 février 2007 à 00:57, par Christophe Boutin En réponse à : Re : Insérer ok mais éditer ?

      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/TableDATA.zip

      Bien à vous,

      Christophe

    • Le 6 février 2007 à 23:40, par Christophe Boutin En réponse à : Re : Insérer ok mais éditer ?

      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 @+)

    • Le 18 février 2007 à 22:39, par Christophe Boutin En réponse à : Insérer ok mais éditer ?

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

      Bien à vous,

      Christophe

    Répondre à ce message

  • Le 27 août 2006 à 21:45, par francois En réponse à : La gestion de tables SQL supplémentaires

    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 ?

    • Le 30 août 2006 à 17:09, par Déesse A. En réponse à : La gestion de tables SQL supplémentaires

      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.

    • Le 31 août 2006 à 21:21, par francois En réponse à : La gestion de tables SQL supplémentaires

      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

  • Le 12 juin 2006 à 18:58, par cent21 En réponse à : La gestion de tables SQL supplémentaires

    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.

    Répondre à ce message

  • Le 12 mai 2006 à 01:23, par pstmartin En réponse à : La gestion de tables SQL supplémentaires

    Bonjour,
    c’est bien beau d’ajouter des tables, mais comment fait-on pour qu’elles soient sauvegardées/restaurées depuis la partie privée du site ?

    Répondre à ce message

  • Le 7 décembre 2005 à 23:31, par piercol En réponse à : La gestion de tables SQL supplémentaires

    Bonjour,
    j’ai été très intéressé par votre contribution sur les tables supplémentaires, mécanisme que je recherchais pour compléter les fonctionnalités du site que je gère.
    -  En ce qui concerne le nom à donner à la table, dans le fichier inc_serialbase, il doit tenir compte du fait que le système génère un préfixe spip_ à la fin de la saisie des données dans le formulaire. Ainsi une nouvelle base nommée « matable » dans inc_serialbase sera mise à jour sur le serveur sous le nom « spip_matable ». Il faut donc au préalable créer sur le serveur par Mysql une base ayant le nom « spip_matable ». En pratiquant ainsi, ça marche.
    -  La fonction insere_en_table.php que vous avez conçue permet de créer de nouveaux enregistrements dans cette table supplémentaire. Quelle méthode utiliser pour modifier des enregistrements existants de cette table supplémentaire, dans l’interface /ecrire ?

    J’ai bâti un gros site avec SPIP (http://www.paysdematha.com), mais je n’avais jusqu’à présent modifié aucun des fichiers du répertoire /ecrire/ , ne connaissant rien au php. Mais il va bien falloir que je mette un peu les mains dans le cambouis.
    Cordialement

    Répondre à ce message

  • Le 16 août 2005 à 00:05, par jojo En réponse à : > La gestion de tables SQL supplémentaires

    super ça marche mais comment intégrer le formulaire dans l’espace privé pour que les rédacteurs puissent entrer les données ?

    Répondre à ce message

  • Le 5 août 2005 à 14:43, par yorghos En réponse à : > La gestion de tables SQL supplémentaires

    Désolé pour le message anonyme de tout à l’heure.
    Deux remarques :

    1) Il existe une incompatibilité entre la déclaration dans l’url et la commande INSERT qui redéclare la variable globale prefix.

    2) Comme dit dans le précédent message, les tables additionnelles sont dans mes_fonctions.

    Solution qui marche très bien : Il faut ajouter include (« ../mes_fonctions.php3 ») ; juste après l’include de inc.php3 et déclarer les tables dans l’url sans le prefixe, comme dans le fichier mes_fonctions.php3.

    • Le 14 août 2005 à 08:13, par ? En réponse à : > La gestion de tables SQL supplémentaires

      1. pourrais-tu expliciter le problème ? s’il s’agit de déclarer le prefixe de table dans l’URL, effectivement c’est impossible, car sinon plusieurs sites Spip utilisant un meme compte SQL pourraient se modifier mutuellement

      2. a signaler qu’on peut aussi mettre les tables dans mes_options.

    Répondre à ce message

  • Le 5 août 2005 à 11:29, par ? En réponse à : > La gestion de tables SQL supplémentaires

    Salut,
    Attendue avec impatience ta contribution. Je n’arrive pourtant pas à lui faire utiliser une table additionnelle déclarée dans mes_fonctions. C’est pourtant là que ce trouvent les tables additionnelles. Je présume que la raison provient de la localisation du fichier mes_fonctions qui n’est pas dans ecrire/. Comment faire ?

    Répondre à ce message

  • Le 31 juillet 2005 à 22:42, par zouzouwizman En réponse à : > La gestion de tables SQL supplémentaires

    Hello, cette contribution m’a l’air intéressante mais :
    -  Peux tu faire des copies d’écran d’un rendu ?
    -  Est ce que cela veux dire qu’on peut ajouter des nouveaux champs de saisie dans un article (comme les anciens champs extra) et les appeller ensuite depuis le squelette ? Si oui avec quelle syntaxe ?
    Merci

    • Le 14 août 2005 à 08:05, par ? En réponse à : > La gestion de tables SQL supplémentaires

      Pas de copie d’écran puisque l’important est une action sur la base de données, pas un rendu html.

      Pour les champs nouveaux, c’est comme les autres ; un dièse suivi du nom du champ en majuscules.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Métas +

    3 décembre – 12 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

  • Acces Restreint 3.0

    11 décembre 2008 – 785 commentaires

    Le plugin accès restreint permet de définir et de gérer des zones de l’espace public en accès restreint. Cette version du plugin a été redévelopée et optimisée tout spécialement pour SPIP 2.0. Il en découle une amélioration des performances sur les gros (...)

  • Compositions 2 et 3

    25 mars 2011 – 176 commentaires

    Ce plugin vous permet de définir plusieurs variantes de squelettes (nommées compositions) pour un même type d’objet SPIP. Dans l’espace privé, il est alors possible de choisir, dans un menu déroulant, la composition qu’on veut attribuer à chaque (...)

  • Configurer Sparkpost

    25 avril – 18 commentaires

    N’hésitez pas à relire le préambule de cette rubrique avant de créer un compte sur une plateforme tierce . Présentation Sparkpost est une société d’envoi de mailing https://www.sparkpost.com/ Sur les petits volumes ( <100.000 emails / mois), (...)

  • Mode portail Communiquant pour SoyezCréateurs

    29 septembre 2010 – 21 commentaires

    5e mode d’affichage de la page d’accueil, ce mode se distingue des autres par une animation proposant un fondu/enchaîné des logos des articles à la une. Zonage Configuration Zone d’entête Nom du site Slogan si plugin bandeau présent (...)

Ça spipe par là