SPIP-Contrib

SPIP-Contrib

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

279 Plugins, 195 contribs sur SPIP-Zone, 56 visiteurs en ce moment

Accueil > Administration et BDD > Bases de données > TableDATA > Gestion de données SQL avec TableDATA

Gestion de données SQL avec TableDATA

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

14 février 2007 – par Christophe Boutin – 54 commentaires

11 votes

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 :-)

(Existe un portage en version SPIP 2.0 également)

-  Testé sur ces navigateurs [1]

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

Petit rappel sur SPIP

À 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


Detection 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 trier 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 affiche 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 :

NOUVEAU : À partir de la version 2.0.5 pour SPIP 2.0, une nouvelle fonction apparaît : il est possible d’effacer un enregistrement.

-  Le 15 avril 2009 (v2.00) :

  • Portage sous SPIP 2.0
  • Correctif pour l’affichage des caractères accentués.
  • Voir l’article spécifique dédié à la version pour SPIP2. (TableData pour Spip 2)

-  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 pourraient ê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

P.-S.

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

Notes

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

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 29 avril 2011 à 17:16, par hocus En réponse à : Gestion de données SQL avec TableDATA

    Bonjour,
    J’ai un probleme avec les symbole €. Dans ma base j’ai des symbole € qui apparaissent sous forme de point dinterrogations avec tabledata. Si je modifie via tabledata en mettant un symbole euro et que je reviens sur l’enregistrement, j’ai toujours le point d’interrogation. Mon champs est en utf8_general_ci.

    Répondre à ce message

  • Le 28 novembre 2010 à 12:17, par Henri En réponse à : Gestion de données SQL avec TableDATA

    Bonjour,

    Dans mon site hebergé chez free et qui fonctionne bien sous SPIP, la table des auteurs n’a pas d’auto increment (pourquoi ? je ne sais pas). Ceci pose des problèmes pour l’inscription à la liste de diffusion : formulaire spip_listes_inscription qui utilise cette table et pour la création des auteurs que je dois effectuer manuellement dans l’interface sql.free.fr/phpMyAdmin/.

    Y a-t-il un moyen d’ajouter l’auto increment à cette table ?

    Merci beaucoup à la personne qui pourra m’aider.

    HR

    Répondre à ce message

  • Le 4 juin 2010 à 15:40, par proppy En réponse à : Gestion de données SQL avec TableDATA

    Bonjour,

    Apres avoir active le plugin et visiter l’interface Gestion des tables :

    J’ai systematique le message suivant :
    «  »"
    La clef primaire de la table n’est pas
    autoincrémenté (L’insertion d’un nouvel enregistrement est
    desactive
    «  »"

    En recherchant le message dans le code source du plugin tabledata
    SPIP, j’ai trouve qu’il apparaissant lors que la comparaison
    suivante echouait :
    «  »« if (strpos($field[$key[ »PRIMARY KEY« ]], »auto_increment« ,0)===False) »«  »
    Car la valeur de $key[« PRIMARY KEY »] contenait :
    «  »« bigint(20) NOT NULL AUTO_INCREMENT »«  »
    Alors que le plugin cherche la valeur ’auto_increment’ (en minuscule).

    Est-ce qu’il serait possible de modifier le plugin, i.e ajouter un strlower, afin que la comparaison ne tienne pas compte de la case ?

    Merci d’avance.

    • Le 4 juin 2010 à 15:46, par proppy En réponse à : Gestion de données SQL avec TableDATA

      Si joint un patch qui corrige le probleme.

      1. --- tabledata.php~ 2010-05-21 15:26:38.000000000 +0000
      2. +++ tabledata.php 2010-06-04 13:45:21.000000000 +0000
      3. @@ -1536,7 +1536,7 @@
      4.  
      5. case 1 :
      6. // il y a une clé primaire sur champ unique =OK
      7. - if (strpos($field[$key["PRIMARY KEY"]],"auto_increment",0)===False)
      8. + if (strpos(strtolower($field[$key["PRIMARY KEY"]]),"auto_increment",0)===False)
      9. {
      10. // Si pas d'autoincrement : d?ctiver ajout
      11. $boolFntAjout = false;

      Télécharger

    Répondre à ce message

  • Le 26 janvier 2010 à 16:53, par MM En réponse à : Gestion de données SQL avec TableDATA

    Bonjour,

    Je suis sous SPIP 2.0.10.
    Je viens d’installer TableDATA.
    Une première table a été créée : tout est ok

    Je crée une deuxième table : la table est présentée de façon satisfaisante, mais aucun enregistrement n’est sauvegardé, la table reste vide !

    Je crée directement un enregistrement par phpmyadmin : l’enregistrement n’est pas visible et la table reste considérée comme vide ??

    Comment identifier ce problème ?
    D’avance merci

    • Le 26 janvier 2010 à 22:20, par chbtn En réponse à : Gestion de données SQL avec TableDATA

      Peut-être que ta table contient un type de champ qui n’est pas géré (au mal actuellement)...
      Dans un premier temps, essaie avec des champs texte ou envoie moi une copie de la table pour test.
      @+
      ChB.

    • Le 26 janvier 2010 à 22:56, par Christophe Boutin En réponse à : Gestion de données SQL avec TableDATA

      Peut-être que ta table contient un type de champ qui n’est pas géré (au mal actuellement)... Dans un premier temps, essaie avec des champs texte ou envoie moi une copie de la table pour test. @+ ChB.

    • Le 28 janvier 2010 à 22:04, par ? En réponse à : Gestion de données SQL avec TableDATA

      Merci.

      Mon problème venait de l’interface SPIP-MySQL chez mon hébergeur.

      En supprimant puis recréant la table, tout est remis en ordre.

      Vraiment un excellent plugin.

    Répondre à ce message

  • Le 23 juin 2009 à 09:27, par Suske En réponse à : TableDATA en mutualisé une seule base

    Salut,

    Sur une ferme à SPIP avec une seule base, le plugin donne accès à toutes les tables depuis toutes les interfaces privées. Une sorte de faille de sécurité donc.

    Dans cette option du plugin mutualisation, les tables de chaque spip sont définies à l’installation avec un préfixe aléatoire et les données de connexion sont stockées dans le répertoire /sites/nomdusite/options

    Mes 2 sous

    Merci pour ce plug

    Répondre à ce message

  • Le 15 avril 2009 à 15:56, par Gérald En réponse à : Version pour Spip 2

    Bonjour,

    Une version pour Spip 2 est-elle prévue ? Gérant une grosse BD sous Postgres, a-t’on la possibilité « d’attaquer » une autre BD que celle de Spip ?

    Merci de vos réponses !

    Répondre à ce message

  • Le 23 décembre 2008 à 21:31, par ? En réponse à : Gestion de données SQL avec TableDATA

    Bonjour

    est ce qu’une version compatible avec SPIP 2 est prévue ?
    L’activation du plugin se déroule corretcement mais quand je veux accéder à la page, je tombe sur une erreur 500 (rien que ça !) et je suis coincé.

    Merci par avance et joyeuses fêtes.
    Manu

    Répondre à ce message

  • Le 13 novembre 2008 à 11:47, par JLuc En réponse à : Gestion de données SQL avec TableDATA n dé

    La meilleure amélioration possible de cet excellent plugin serait de modulariser la création et modification d’enregistrements de manière à
    -  pouvoir le faire dans la partie privée par une page spécifique pour juste cet usage, avec une gestion des droits : tous auteurs, tous administrateurs, liste d’auteurs
    -  pouvoir faire cette même chose dans la partie publique, au moyen d’un squelette noisette ou mieux : d’un modèle.

    A part ça, ça me semble utile, oui, de pouvoir simplement supprimer un enregistrement. Le fonctionnement imaginé de stocker « en poubelle », par exemple avec un champ statut comme dans pas mal de tables spip, est un fonctionnement intéressant, mais n’est pas le fonctionnement basique obligé.

    • Le 25 novembre 2008 à 17:50, par ? En réponse à : Connexion sur une base différente de spip ?

      Bonjour,

      J’ai installé le plugging de gestion des tables sql sous spip.
      Je vous remercie de cet outil qui offre des possibilités très interessantes.

      En administration des données de ma base sql, j’ai créer des tables situées dans un schéma différent de spip (afin de ne pas regrouper les tables « natives spip » et les miennes).
      Par contre je n’ai pas trouvé la méthode pour me connecter sur ma base (adherent) à l’aide du plugging.
      Je vous remercie par avance de votre aide.

    Répondre à ce message

  • Le 1er octobre 2008 à 18:52, par Horetol En réponse à : Gestion de données SQL avec TableDATA Fichier sans les caractères bizarres

    Bonjour,

    Pour ceux que cela intéresse j’ai modifié le fichier « tablesdata.php » de façon à ce que les accents apparaissent correctement.

    Il peut être téléchargé ici

    Par prudence et parce que je ne l’ai pas testé avec toutes les configurations, je recommande de sauvegarder le fichier original ( le renommer en tabledata.php.original par exemple ) avant de le remplacer.

    Répondre à ce message

  • Le 1er octobre 2008 à 17:37, par Horetol En réponse à : Gestion de données SQL avec TableDATA

    Bonjour,

    Pour info les deux liens vers les modifs de Marc Valleteau et de JF-Moreau sont cassés. Suite aux modifs de Spip-Contrib ?

    http://www.spip-contrib.net/IMG/zip/tabledata_MarcValleteau_.php-2.zip
    http://www.spip-contrib.net/IMG/zip/tabledata_JF-Moreau_.php.zip

    The requested URL /IMG/zip/tabledata_MarcValleteau_.php-2.zip was not found on this server.

    The requested URL /IMG/zip/tabledata_JF-Moreau_.php.zip was not found on this server.

    Répondre à ce message

Répondre à cet article

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

  • SpipBalado

    13 octobre 2010 – commentaires

    Cette petite contribution vise essentiellement à rajouter simplement le support du podcast dans les squelettes pour SPIP. Il s’agit en fait de reprendre le code d’une vieille contribution SpipTunes, puis de l’adapter au fonctionnement de SPIP 2.x. (...)

  • GIS 2 / GIS 3

    28 août 2011 – 487 commentaires

    Présentation et nouveautés GIS2 est une mise à jour majeure du plugin GIS Escoitar. Le plugin permet d’attacher des points géolocalisés aux objets de SPIP afin de les afficher sur des cartes dans les pages de votre site. GIS2 utilise une librairie (...)

  • Formidable, le générateur de formulaires

    23 janvier 2012 – 1352 commentaires

    Un générateur de formulaires facilement configurable pour les non-informaticiens et facilement extensible pour les développeurs. Introduction L’objectif était de créer un plugin permettant de générer des formulaires. Historiquement, 2 plugins avaient (...)

  • Liste des pays avec codes ISO 3166-1

    3 juillet 2010 – 18 commentaires

    Les listes de codes de l’ISO 3166-1 Propose une boucle "pays" qui s’utilise comme suit (exemple) : #PAGINATION #ID_PAYS #CODE #NOM Le plugin installe une nouvelle table "pays" qui reprend la liste des pays (...)

  • Saisies

    27 mars 2010 – 362 commentaires

    Introduction Créer un formulaire est une tâche toujours un peu répétitive : les champs ont souvent les mêmes propriétés, le même accompagnement (message d’erreur, explication, ...) et la même structure HTML. Ce plugin est un outil pour les développeurs (...)