SPIP - Contrib

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



Accueil du site > Administration > Base de données > TableDATA

Tables SQL supplémentaires

Gestion de données SQL avec TableDATA

MàJ v0.4 - Trier - Voir table SPIP

mercredi 14 février 2007, par Christophe Boutin. Dernier ajout mercredi 2 juillet 2008


Plugin pour gérer les données de vos tables SQL supplémentaires : voir, lister, ajouter, modifier.....

Tout d’abord, le but n’est pas de réécrire PhpMyAdmin en Spip, il y a d’ailleurs une Contrib pour lancer ce script à partir de SPIP. L’objet est de pouvoir facilement visualiser et éditer les tables complémentaires d’un site en production. Surtout si l’administrateur final du site n’est pas « très informaticien »


L’avantage de ce développement est :
- tout d’abord d’être sous forme de plugin
- que l’on ne visualise pas les tables de SPIP. Cela pour éviter les erreurs de manipulation d’un administrateur non averti.
- être intégré à l’interface d’administration du site SPIP
- avoir une interface beaucoup plus simple qu’un PhpMyAdmin, toujours pour limiter les erreurs et éviter de casser le site.

En fait, une contrib « La gestion de tables SQL supplémentaires » m’a beaucoup plu tout en me laissant sur ma faim, on ne pouvait qu’ajouter. Alors je me suis lancé dans un module pour faire plus, puis dans la version plugin !

Présentation

Dans SPIP, on peut ajouter une table ("matable" par ex.) et utiliser des boucles pour la parcourir : {BOUCLE_a(matable)} et extraire ses champs avec des balises {#CHAMP1}, {#CHAMP2}, etc.

L’objet de cette contrib est de visualiser, ajouter et modifier le contenu de ces tables.

- Nom  : TableDATA
- Version : 0.40
- Auteur : Christophe Boutin
- Licence : GPL
- Compatibilite SPIP : testé sur SPIP 1.9.1 & 1.9.2PR2
- Site(s) exemple : www.studiofoveau.com , mais dans la partie privée :-)

- Testé sur ces navigateurs [1]

TestéPlateformeNavigateurVersion
oui windows Internet explorer 6.0
oui windows Firefox 2.0.0.1

Petit rappel sur SPIP

A partir de la version 1.9, on trouve une fonction très intéressante : Un extrait de la page des nouveautés de SPIP 1.9

Détection automatique de tables SQL et de jointures

Dans un squelette comportant BOUCLE_a(xxx), la table xxx peut être n’importe quelle table SQL connue du serveur SQL. SPIP demandera alors au serveur SQL de décrire cette table, ce qui lui permettra de compiler le squelette en interprétant toute balise #NOM comme un accès au champ `xxx`.nom s’il existe. Ces champs sont également repérés dans les critères des boucles.

Dans un squelette comportant BOUCLE_a(table table1 ... tablen), les tables supplémentaires seront vues comme des candidates à une jointure, à travers les champs homonymes. Des exemples plus concrets seront donnés dans la documentation.

C’est très simple à mettre en oeuvre et très pratique. Par exemple, j’utilise cela pour modifier facilement un tarif d’une galerie de vente. Cela peut également permettre de faire, en douceur, la bascule entre vos anciens scripts (back office) et une refonte du site (front office) avec SPIP.

À lire également : implémenter une nouvelle boucle (déplacé depuis dans NouvelleBoucle).

Installation

Installer le fichier joint, après l’avoir dézippé, comme tous les autres plugins, cf. http://www.spip.net/fr_article3396.html

Utilisation

Lancement du script :

Pointez l’icône « configuration » puis cliquez sur l’icone « gestion table SQL ». Une liste des tables supplémentaires (n’ayant pas le préfixe des tables spip) est affichée, choisissez la table sur laquelle vous souhaitez travailler. Lister les tables L’administrateur dispose d’un bouton permettant d’afficher également les tables internes de SPIP.

Le script retourne une nouvelle page avec :
- la liste des enregistrements (par groupe s’ils sont nombreux)
- avec au dessous un formulaire d’ajout. (reprise de celui de Déesse A.) Voir le contenu de la table En cliquant dans le titre du champ, il est possible de trié par ordre croissant ou décroissant sur ces valeurs.

Modification des valeurs des champs

Pour modifier les valeurs d’un enregistrement, double-cliquez dessus, alors un formulaire d’édition s’affiche avec les valeurs actuelles. Pour que cette fonction soit active une clé primaire doit être définie. Elle peut être dans le format « numérique » ou « texte ». Dans la version actuelle, cette clé primaire doit être sur un champ unique.

Au retour, un message d’information les conclusions de la commande. (Ok ou erreur). Il est affiché tout en haut de la page.

On peut également le lancer en ligne de commande : Pour gérer le contenu d’une table « magasin », il suffit de taper l’url suivante :

url = .../spip/ecrire/?exec=tabledata&table=magasin

Verrou de protection

Ce plugin est dynamique, il s’adapte à la structure de la table que vous avez créée.

La clé primaire de la table est utilisée pour pointer l’enregistrement à modifier. Le plugin ne permet pas de modifier sa valeur. (Modifier cette valeur pourrait être dangereux pour l’intégrité des données de votre application. Imaginez si cette valeur est déjà utilisée pour faire une jointure sur un autre élément de la base.)

En fonction de la clé primaire choisie, le script détermine les limitations nécessaires pour éviter les fausses manipulations. L’utilisateur en est informé.

Dernières mises à jour :

- Le 19 février 2007 (v0.40) :

  • Voir ou masquer les tables de spip pour les administrateurs.
  • Correctif liée à l’ajout du tri sur champ.

- Le 18 février 2007 (v0.33) :

  • Ajout du tri sur chaque champ.
  • Correctif sur l’ajout pour reprendre les valeurs par défaut.

- Le 16 février 2007 (v0.32) :

  • Ajout d’un ascenceur sur la liste des enregistrements dans le cas d’un nombre important de champs dans la table.
  • Correction d’affichage si la table est vide.

- Le 12 février 2007 (v0.3) :

  • Les fonctions sont activées suivant le paramétrage de la clé primaire et information de l’utilisateur.
  • La modification des enregistrements ayant une clé primaire au format texte est prise en compte.

- Le 7 février 2007 (v0.22) : Correction des url des icones.

- Le 6 février 2007 :

  • Packagé en Plugin,
  • Ajout d’un bouton dans config,
  • Affichage de la liste des tables pour le choix initial

- Le 21 octobre 2007 :

  • Mise en ligne d’un correctif de Marc VALLETEAU de MOULLIAC (merci de son retour)

La suite

Je me demande par exemple si :
- j’ajoute la possibilité d’effacer un enregistrement ?
- ou j’ajoute la recherche automatique d’un champ spécifique, genre « effacer » ENUM oui/non pour masquer les enregistrements devenus inutiles dans l’appli (effacer réellement s’est toujours délicat dans une base...)

Pour les experts, ou les curieux

Quelques commentaires faisant référence aux bases de données :

Nota : Que cela ne fasse pas peur aux débutants, il n’est pas nécessaire de tout comprendre pour que ça fonctionne

Ce plugin s’adapte à la structure de la table. Les fonctions sont activées suivant le choix de la clé primaire.
- S’il n’y a pas de clé primaire : La modification n’est pas autorisée.

  • Il n’est pas sûr que l’on pointe de façon unique un enregistrement. Plusieurs enregistrements pourraientt être touchés par la modification.

- S’il y a plus d’un champ dans la clé primaire : La modification et l’ajout ne sont pas autorisées

  • Simplement parce que le code n’est pas encore adapté à ce cas. Alors pour éviter un bug ..

- S’il y a une clé primaire sans auto-incrément : La modification est autorisée mais pas l’ajout

  • La clé permettra de pointer de façon unique l’enregistrement à modifier.
  • Mais lors de l’ajout, si l’on n’est pas vigilant, il pourrait y avoir une erreur de duplication de clé.

- S’il y a une clé primaire avec auto-incrément : La modification et l’ajout sont autorisées

  • C’est le cas idéal. RAS

Comment distinguer les tables ?

Il faut faire un test du nom de la table. Elle ne doit pas débuter par le préfixe utilisé par SPIP. ( voir la variable $table_prefix description, par défaut "spip_").

Voir aussi
La Contrib PhpMyAdmin-PhpInfo

Portfolio

L'interface

P.-S.

Faites moi part de vos remarques, afin que je puisse améliorer TableDATA en fonction de vos besoins avérés.

Documents joints

  • version v0.32 version v0.32 (Zip - 12.9 ko)

    Pour archive

  • Dernière version v0.40 Dernière version v0.40 (Zip - 14.8 ko)

    - Voir les tables SPIP
    - Trier les enregistrements

  • Correctif (non testé) Correctif (non testé) (Zip - 8.4 ko)

    Je mets en ligne un des fichiers repris par Marc VALLETEAU de MOUILLAC. Pour info, je ne l’ai pas testé personnellement.

  • Amélioration JF Moreau Amélioration JF Moreau (Zip - 8.7 ko)

    Voici le fichier amélioré par JF Moreau. (Je n’ai pas eu le temps de le tester, mais si le travail de JFM peut servir à d’autres..., il est plus utile ici que sur mon HDD)

Notes

[1] Navigateurs : J’attends votre retour d’expérience pour compléter le tableau avec les autres navigateurs, merci d’avance


Répondre à cet article

  • Gestion de données SQL avec TableDATA

    16 juin 2008 18:52, par mika

    Bonjour j’ai quelques problèmes avec le plugin tabledata, je ne peux éditer les entées de mes tables elles possèdent bien un une clé primaire auto indexé et je pense respecter les spécification. je suis sous spip 1.9.2d, j’ai aussi un problème chaque fois que je veux lister une table le plugin me crée un nouvel enregistrement dans la table. que faire Merci

    Répondre à ce message

    Retour au début des forums

  • Gestion de données SQL avec TableDATA

    17 février 2008 23:56, par eM

    Merci pour ce plugin précieux...

    À l’usage, il me semble que les champs des tables au format datetime ne sont pas modifiables... en tout cas il n’apparaissent pas dans le formulaire de modification.

    Il y a-t-il une raison particulière à cela ?

    Merci encore

    Répondre à ce message

    Retour au début des forums

  • Le bouton ne s’affiche pas !?

    8 novembre 2007 13:17, par Rayene

    Bonjour,

    Je viens d’installer ce plugin. Je l’ai activé sous configuration/gestions des plugins. Mais, par contre, je n’ai pas trouvé le bouton "gestion des tables sql " comme celà est indiqué dans l’article. Je suis nouveau sous SPIP et je ne vois vraiment pas d’ou peut venir le problème ! Quelqu’un aurait-il une idée sur l’origine du problème ?

    Pour info : Spip : 1.9.1 Plugin :0.40

    Merci !

    Répondre à ce message

    Retour au début des forums

  • Ameliorations proposée par Jean-François MOREAU

    26 octobre 2007 18:02, par Jeff

    Juste pour préciser en 3 lignes ce qu’apportent les améliorations implémentées dans ce fichier :
    - Prise en compte des noms de colonnes "complexes",
    - Prise en compte de type supplémentaires (SET, TINYINT(1), ...),
    - Correction d’un problème d’affichage des caractères accentués.

    Répondre à ce message

    Retour au début des forums

  • Gestion de données SQL avec TableDATA

    14 septembre 2007 14:52, par JLuc

    Super plugin.

    probleme rencontré : du côté du charset surement, car tant les textes des indications du plugin, que le contenu des table, s’affiche avec des ? à la place des caractères accenctués.

    exemple : Lister une table de donn�estable s�lectionn�e : Aucune n’est s�lectionn�e

    et il en est de même pour le contenu des tables affichées. Du coup, évidemment, j’ose pas les modifier !!!!

    Autre truc étrange : les tailles des zones de saisies, qui semblent s’adapter au contenu, ne sont pas toujours le plus adaptées, mais peut être cela révèle t il en fait un pb dans la déclaration des tables ?

    Répondre à ce message

    • Gestion de données SQL avec TableDATA 14 septembre 2007 14:55, par JLuc

      A noter que quand je visualise une table spip, car c’est aussi possible, les caractères accenctués apparaissent bien par contre...

      Répondre à ce message

      • Gestion de données SQL avec TableDATA 11 octobre 2007 22:21, par graff

        J’aimerais bien utiliser moi aussi ce plugin cependant non seulement j’ai le même problème avec les accents lors de l’affichage des champs mais, de plus, lorsque je modifie un enregistrement, les accents sont ré-enregistrés et deviennent illisibles dans la base de données et donc sur le site. Est-ce parce qu’il faut spécifier un encodage précis ? pour la base de données ou pour les champs ?

        Merci d’avance pour votre aide !

        Répondre à ce message

    • Gestion de données SQL avec TableDATA 20 octobre 2007 17:50, par Soufiane

      Bonjour ! il faut juste remplacer le charset par ISO-8859-1 dans le menu configuration->gestion des langues .

      Répondre à ce message

      • Non surtout pas car cela altérerait l’affichage de tout le reste du site !!!!!!!!!

        par ailleurs, sur mon site, c’est déjà comme ça.

        Répondre à ce message

        • Gestion de données SQL avec TableDATA 21 octobre 2007 15:17, par graff

          Bonjour,

          Je confirme les deux commentaires précédents : en remplaçant le charset par ISO-8859-1 dans le menu configuration->gestion des langues, on règle le problème d’accents dans TabeDATA (lors de la ré-écriture dans la base de données). Mais, les articles saisis auparavant se retrouvent avec des accents illisibles dans le site public... Pour le moment, je n’ai pas trouvé d’autre solution que d’aller modifier le fichier tabledata.php à l’endroit où se fait le "UPDATE" et pour être franche, je n’ai trouvé qu’en tâtonnant et sans bien comprendre ce qui se passait.

          Répondre à ce message

          • euh... et pourrais tu assouvir notre curiosité et indiquer de quelle manière tu as modifié le fichier tabledata.php à l’endroit où se fait le UPDATE ?

            Répondre à ce message

            • Gestion de données SQL avec TableDATA 21 octobre 2007 21:11, par Christophe Boutin

              Je propose d’enregistrer les champs texte en passant la fonction Php htmlEntities.

              Cette fonction permets de convertir en équivalant html tous les caractères spécuiaux (y compris les caractères accentués)

              Répondre à ce message

            • Gestion de données SQL avec TableDATA 21 octobre 2007 21:59, par graff

              Ca n’est qu’une solution qui règle partiellement mon problème... Dans tabledata.php, après avoir localisé "UPDATE" on trouve deux lignes :

              if ( isset($_POST[$cle]) )

              $txtQuery .= $txtSeparation.$cle."= ’".addslashes($_POST[$cle])."’" ;

              que j’ai juste modifié ainsi :

              if ( isset($_POST[$cle]) )

              $txtQuery .= $txtSeparation.$cle."= ’".addslashes(utf8_decode($_POST[$cle]))."’" ;

              Ca ne règle en rien les problèmes d’affichage sur le site privé mais je peux ainsi faire des modifications sur la base de données. Je ne suis pas trop sure que ça puisse vous aider...

              Répondre à ce message

    Retour au début des forums

  • Gestion de données SQL avec TableDATA

    17 août 2007 20:36, par Christoph

    Bravo pour ce plugin super pratique. Où en est la version avec possibilité de suppression ?

    Répondre à ce message

    Retour au début des forums

  • Très sympa,

    Si j’ai bien compris, cela permet d’éditer dans la partie privé des tables ajoutés dans la base de données de SPIP.

    J’ai une idée mais je ne sais comment la mettre en pratique.

    Imaginons 3 tables

    Marque Type MarTyp
    ____ ____ ____
    IdM IdT IdM
    Nom Nom IdT

    Ex : Moulinex => Electromenager ; Philips => Electromenager & Son & Video .. etc...

    Mon but est d’afficher par "Marque" les différents types la composant.

    Comment doit-on écrire le squelette pour obtenir le résultat ? On lit la table MarTyp mais après...

    Merci pour toute assistance

    Répondre à ce message

    Retour au début des forums

  • Gestion de données SQL avec TableDATA

    21 juillet 2007 19:33, par noemie ta fille

    j’ai rien compris papou meme en relisant 1000 et 1 fois

    Répondre à ce message

    Retour au début des forums

  • Super plugin.

    Une suggestion d’amélioration (si tu cherches à meubler tes soirées ;)

    Afficher une liste déroulante pour les champs portant un nom impliquant un lien automatique avec une table SPIP (id_article, id_rubrique, id_breve, ...). la valeur de l’option serait celle de l’ID correspondant et le texte affiché serait le champs TITRE correspondant (ou autre pour les auteurs par exemple). Cela faciliterait grandement la saisie (et la modification) dans des tables faisant des liens avec des tables SPIP.

    On pourrait bien sûr étendre le principe à toutes les tables (également les tables crées avec le plugin) ou prendre systématiquement le deuxième champs de la table pour l’affichage au lieu du TITRE.

    Répondre à ce message

    Retour au début des forums

  • TableDATA Problème d’apostrophes

    15 mars 2007 15:13, par Jeff

    Très utile, ce plugin !

    J’ai seulement un petit problème :

    Quand des apostrophes se trouvent dans les valeurs d’un champ, par exemple :

    L’Haÿ-les-Roses

    le contenu du champ apparait correctement dans la liste, mais tronqué dans le formulaire de modification, ainsi :

    L

    le reste de la ligne étant absent. (Et il disparait dans la base si j’ai le malheur d’envoyer le formulaire, bien sûr!)

    Le plus étrange est que ce problème n’est pas systématique. J’ai par exemple une ligne :

    19, rue de l’Aviation

    qui fonctionne correctement. Probablement est-ce dû au fait que cette ligne correcte est dans un champ multiligne du formulaire, et nom dans un champ texte simple ligne.


    Remarque : j’ai importé les valeurs en csv, avec un "addslashes", codées en utf-8, pour être cohérent avec le reste du site.

    J’ai juste remplacé, dans le script tabledata.php, les caractères accentués par leur équivalent HTML, toujours à cause de l’utilisation de l’utf-8, pour éviter que les caractères accentués soient transformés en points d’interrogation.

    Répondre à ce message

    Retour au début des forums

  • Export de table

    22 février 2007 17:24, par Yves

    Bravo pour cette contrib, qui m’est très utile.

    Une suggestion, à moins que ça soit facile à faire par ailleurs, pouvoir exporter le contenu de la table en format CSV par exemple.

    Répondre à ce message

    • Export de table 22 février 2007 21:15

      Regarde ci-dessus le lien vers la contrib phpmyadlin. La sauvegarde CSV est intégrée à ce programme.

      @+ Christophe

      Répondre à ce message

      • Export de table 24 février 2007 20:39, par Olivier

        Bravo pour l’effort donné pour ce plug-in !

        J’ai remarqué quelques erreurs à l’affichage de champs dans les tables de spip

        Certains champs ne s’affichent pas tous.

        Pour l’export, Christophe, si tu prévois de l’incorporer, il serait aussi excellent de pouvoir

        Importer les données dans les tables.

        Merci encore pour le plug-in !

        Répondre à ce message

    Retour au début des forums

  • Gestion de données SQL avec TableDATA

    21 février 2007 15:11, par Chili Palmer

    Si j’ai bien compris, ce plug-in permet l’ajout de champs autre que les traditionnels sous-titre, surtitre... !!! Mais est t’il compatible avec spip 1.9.2 ?

    Répondre à ce message

    • Bonsoir, Ce n’est pas tout à fait cela.

      Vocation première : gérer les tables que l’on a ajoutées à SPIP. (pour lister un catalogue de CD, un tarif par exemple, ...)

      Eventuellement, on peut également voir et modifier le contenu des tables de SPIP, mais attention aux fausses manip. Dans ce cas, vous pourrez accéder également à vos nouveaux champs.

      Je l’ai fait tourné sous la version 1.9.2 PR 2 [8749] sans problème (un aléa avec les caractères accentués, très prochainement corrigé)

      @+ Christophe

      Répondre à ce message

    Retour au début des forums

  • Gestion de données SQL avec TableDATA

    16 février 2007 19:22, par Eric

    Super ce plugin !
    Bravo et surtout un grand merci !
    Personnellement, un petit plus qui serait super :
    pouvoir trier les affichages en cliquant sur le libellé d’une colonne.
    En tout cas, ce plugin m’est très utile !

    Répondre à ce message

    • Gestion de données SQL avec TableDATA 16 février 2007 21:42, par Christophe B.

      Merci. Et pour votre idée, le tri, c’est pourtant une évidence ! Je vais donc l’ajouter rapidement.

      Je le demande toujours à mes collègues développeurs et là c’est moi qui ne le met pas. Je vais remédier à cela et dès que c’est fait, je mets en ligne la version.

      @+ Christophe

      Répondre à ce message

    Retour au début des forums

0 | 25



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et vie SPIP-Contrib | SPIP | L'autre.net