TableData pour Spip 2

Màj 2.2.0 - Portage SPIP 2, gestion clé multiple, et fonction effacer

Gestion des tables SQL, portage de ce plugin pour SPIP 2
Une Nouvelle Fonction : EFFACER des enregistrements et divers correctifs.

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.

Pour plus de précision et bien comprendre l’intérêt, voir les articles suivants :
-  Plugin TableData v0.4 de moi-même
-  La gestion de tables SQL supplémentaires de Déesse A
-  le § Détection automatique de tables SQL et de jointures sur SPIP.net
-  Nouvelles boucles et cette contrib

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

-  Nom  : TableDATA
-  Version : 2.0.7
-  Auteur : Christophe Boutin
-  Licence : GPL
-  Compatibilite SPIP : testé sur SPIP 2.0.5 , SPIP 2.0.7

(existe également pour versions antérieures 1.9.1 & +, voir précédent article)

-  Testé sur ces navigateurs [1]

TestéPlateformeNavigateurVersion
oui windows Internet explorer 7.0
oui windows Firefox 3.0.8
oui Unbuntu Firefox 3.0.8

Maintenant, ce plugin fonctionne avec la nouvelle interface SQL de SPIP. Il est donc compatible avec les autres bases SQL supportées par SPIP et facilement portable.

Une Nouvelle Fonction : EFFACER des enregistrements

Etat actuel : En test Mais semble stable, qu’en pensez-vous ??

V2.2.1 — Stable— 25/05/2009 -------------

-  Overflow sur le tableau d’affichage de la table

V2.2.0 — Stable— 24/05/2009 -------------

-  On peut maintenant tavailler sur toutes les table. (Enfin je pense)

Cette version corrige notamment un bug lorsque la table contenait une clé mais pas une clé primaire.

V2.1.1 — Test — 07/05/2009 -------------

-  Activation des fonctions supprimer et modification sur le table sans clé.
Astuce : Clause Where reprenant tous les champs (Affichage du nombre d’enregistrement sélectionnés)

V2.1.0 — Test — 07/05/2009 -------------

-  gestion clé sur champ multiple
-  correctif concernant table avec préfixe spécial
-  Correction d’affichage des caractères accentués après modification

V2.0.7 — Test — 25/04/2009 -------------

-  Modif possible champs DATETIME
-  J’ai rassemblé toutes les fiches en une seule,
Ainsi la def des champ input n’est écrite qu’une fois (éviter erreur code)
-  Remise en forme code partie ShowTable
-  Correction de la fermeture de page (pb <DIV>)
-  Modif taille des champs <TEXTAREA> pour un meilleur affichage
-  Correction d’un bug dans l’ajout d’enregistrements

V2.0.6 — Test — 21/04/2009 -------------

Compatible avec la nouvelle interface SQL de Spip2. (donc compatible MySQL, PostgreSQL et SQLite)

V2.0.5 — Test ----------------------------

Nouvelle fonction : Supprimer un enregistrement (DELETE en sql)

V2.0.4 — Dev ----------------------------

Toutes les fonctionnalités qui existaient sur la version spip1.9 sont de retour.
(cette version intègre les correctifs d’affichage proposées par JF-Moreau)

V2.0 — Dev — 16/04/2009 -----------------

Compatible SPIP2. Correction de l’affichage des caractères accentués.

Notes

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

N’ayant pas d’autre base que MySQL, merci aux utilisateurs de PostgreSQL et SQLite de confirmer le bon fonctionnement sur ces bases ?

Ce plugin est maintenant disponible sur plugins.spip.net n’hésitez pas à inscrire votre site si il utilise ce plugin.

Discussion

31 discussions

  • Bonjour,
    j’utilise beaucoup ton plugin sous spip2 il est vraiment très pratique. J’ai migré pas mal de mes sites sous spip3 et j’ai vraiment du mal à me passer de ton plugin. Aurais-tu une version compatible spip3 ?

    Merci par avance.

    Répondre à ce message

  • J’ai fait en sorte que le plugin soit mieux rangé dans le nouveau bandeau de menu :
    http://zone.spip.org/trac/spip-zone/changeset/54951

    Je ne vois pas le plugin sur files.spip.org, il n’est pas généré automatiquement ?

    Répondre à ce message

  • 1

    Bonjour,
    J’ai installé avec succès ce plugin, ce qui va permettre à mon client de gérer son fichier de stock de pièces directement depuis son espace d’admin (avec la création d’une table supplémentaire.
    Ma question : est-ce que la possibilité d’ajouter une fonction d’exportation vers csv ou pdf évoquée ici est à l’ordre du jour ? Ainsi, mon client pourrait partager son stock ou l’envoyer à ses clients préférés !
    Merci pour la réponse.

    • S’il y a quelqu’un au bout du plugin, je lance une seconde question : l’interface de modification des tables est peu ergonomique. Une fonction de recherche interne serait par exemple idéale pour retrouver un item. Ma table contient près de 15000 références, impossible à parcourir par page de 20.

      Est-ce en projet ?
      Merci pour la réponse !

    Répondre à ce message

  • Bonjours,

    Voilà, j’ai besoin dans une rubrique en particulier d’ajouter 4 nouveaux champs personnalisés. En lisant cette contrib, il m’a sembler comprendre que ce plugin était tout indiqué pour ce genre de manipulation.

    Le problème c’est que je en suis pas encore très à l’aise avec phpMyAdmin. Je sais pas trop comment m’y prendre avec ce plugin. Et ça m’embête d’utiliser CHAMPS EXTRA qui lui, ajoute les nouveaux champs sur l’ensemble du site.

    Si quelqu’un peu m’éclairer ? Ça m’intéresse vraiment !

    Merci pour votre attention,

    Julien.

    Répondre à ce message

  • entrain de tester TableDATA v2.2.1 avec SPIP 2.1.0 : fonctionne pour le moment.

    Répondre à ce message

  • 1

    Bonjour,
    J’ai le TABLE DATA sur un Spip 2.0.9.
    J’ai installé le dernier ecran_securite et maintenant je ne peux pas ouvrir les lignes du tableau correctement.

    pouvez-vous m’aider s’il vous plaît ?

    Excusez-moi pour mon français ...

    • Je ne sais pas si ton problème est toujours d’actualité mais effectivement, tabledata ne fonctionne pas avec l’écran de sécurité. Pire, si on essaie de supprimer certaines données (ou de mettre a jour), dans certains cas, c’est l’ensemble des enregistrements de la table qui peut être affecté.

      J’ai fait des petite bidouilles pour corriger sur mes sites mais c’est du cas par cas.

      Chag

    Répondre à ce message

  • 11

    Voilà un fixe pour le problème du checkbox à tester !
    http://www.isigny.org/divers/tabledata.zip

    • Vincent François

      Bonjour,

      J’ai essayé le fixe pour le bug des cases à cocher qui ne savent plus être décocées, mais cela n’a rien changé. Y a-t-il une piste de solution quelque part ? Qelle est la fonction de TableData.php incriminée ?

      Merci.

    • Vincent François

      Bonjour, j’ai essayé de debuguer ce problème, pour l’instant sans succès.

      J’ai créé une table différents « bool » en pensant qu’il y aurait des différences :
      "a" => "bool NOT NULL DEFAULT 0",
      "b" => "boolean NOT NULL DEFAULT 0",
      "c" => "tinyint(1) NOT NULL DEFAULT 0",
      "d" => "smallint(1) NOT NULL DEFAULT 0",
      "e" => "char(1) NOT NULL DEFAULT 0"

      Tout fonctionnait bien... Puis j’ai pris ma table normale et ça ne fonctionnait plus, même cette nouvelle table !

      Dans tabledata.php, j’ai regardé

      function tabledata_Cde_miseajour($table , $field, $key, $serveur, $idWhere)} 

      en espérant trouver une piste. J’y ajoute des spip_log mais ils ne sortent nulle part...

      foreach ( $field as $cle=>$txtChamp )
          {
              spip_log("$cle=>$txtChamp", "cacis")
              if ( $key['PRIMARY KEY']!=$cle )
              {
      	        if ( isset($_POST[$cle]) ) {
      	        	spip_log("$cle=>$_POST[$cle]", "cacis");
      	            $tabQueryvalue[$cle] = $_POST[$cle] ;
      	            spip_log("tabQueryvalue[$cle]=>" . $tabQueryvalue[$cle], "cacis");
                  }
              }
          } // foreach $field
    • Salut,

      C’est quoi l’url de ton formulaire ?

      Le problème avec les checkbox, c’est que soit il est coché et vaut la valeur du value, soit n’est pas coché et parfois vaut une chaine vide, parfois n’est pas définit (selon les navigateurs)
      quoi qu’il en soit ton $tabQueryvalue[$cle] = $_POST[$cle] ; vaut 1 ou rien.

      Ce que j’avais changé à l’époque, c’est un champs caché que remplit le checkbox selon qu’il est coché ou pas.

      @++

    • Vincent François

      Mon questionnaire est pour l’instant en zone privée et sur ma machine de développement.

      Mais je vois qu’il y a quelque chose lié au navigateur, or j’ai fait mes tests avec Opera et FF (Sur Mac) sans faire attention à ça...

      L’idée serait effectivement d’ajouter un champ caché en plus de la case à cocher et de tester la combinaison des deux avant de modifier l’enregistrement dans la table.

      Si caché=1 et case=1, ne rien faire
      Si caché=1 et case=0, forcer à 0
      Si caché=0 et case=1, mettre à 1 (ça le fait déjà naturellement)
      Si caché=0 et case=0, ne rien faire (ça le fait déjà naturellement)

      C’est ça ?

    • moi j’avais mis un prefixe a mon checkbox. dans la boucle où tu as mis le log, je saute le champs il y a le prefixe. et un bout de javascript qui gère le clique du checkbox et remplit le champs hidden.
      Ca résoud tout

    • Vincent François

      Intéressant, c’est plus simple que ma proposition, mais ça oblige l’utilisateur à avoir un javascript fonctionnel...

    • Bonjour

      j’ai le même problème qu’un personne ci-dessous, à savoir que lorsque je clique sur un enregistrement pour le modifier, c’est toujours le premier qui s’affiche. J’ai l’impression qu’il y a un problème dans l’URL appelée : «  ?exec=tabledata&tdaction=edit&id_ligne=+id_statut%3D’3’+&table=auteurs_statut » mais je n’arrive pas à trouver l’endroit où on peut le corriger.

      Merci

    • Bonjour Anne,

      Ton lien :
       ?exec=tabledata&tdaction=edit&id_ligne=+id_statut%3D’3’+&
      semble correct et incorrect à la fois.

      le id_ligne prend comme valeur les champs « clé(s) primaire(s) » de ta table. séparé par un « AND »
      donc, ta clé primaire doit être id_statut et la valeur de l’enregistrement 3 entre quotes.
      Ce qui m’interloque, c’est les + et notamment le premier que je ne m’explique pas en lisant le code.
      (en fait si parce que la variable est initialisée avec un espace)

      Si tout est correcte pour toi, alors il faut voir dans la fonction qui affiche les données d’une fiche.
      Regarde si tu as tout tes liens avec la valeur 3 ?

    • Merci pour ces pistes

      Apres tests, ce n’est pas un probleme d’url puisque j’ai constaté que le plugin installé sur l’un de mes autres sites spip (meme version : 2.0.13 et mêmes plugins associés) fonctionne lui parfaitement

      sur le site actuel qui ne fonctionne pas je suis allée un peu plus loin que l’affichage du formulaire erroné en cliquant sur modifier et il m’affiche « Erreur dans la requete à la base... » (et ce tout e temps, même lorsque je demande à afficher le premier enregistrement)

    • Pour info, problème résolu en enlevant l’écran de sécurité de spip (devenu inutile d’ailleurs puisque la version 2.0.13 corrige la dernière faille de sécurité)

    • Vincent François

      J’aimerais bien pouvoir corriger ce bug qui empêche la prise en compte du décochage d’une case dans TableData, mais je suis incapable de mettre dans spip_log dans le code.

      L’anonyme qui avait proposé une solution avec javascript pourrait-il publier un bout de code. Ce plugin est très intéressant mais pas vraiment utilisable en l’état avec des champs booléens.

      Merci.

    Répondre à ce message

  • Salut la compagnie !
    J’ai besoin d’utiliser ce plugin sur un SPIP 2.1 dernière mouture, et je voulais savoir si vous avez déjà eu des problèmes dans cette configuration.
    @+
    Mojo

    Répondre à ce message

  • Bonjour,

    En spip 2.1.2 et 2.1.5 je n’obtiens pas la liste des tables mais ce message :

    Le nom de la table est manquant.

    Au dois-je le renseigner ? Peut-être du au fait que spip n’est pas installé à la racine du site...

    PS/ L’icone de table data n’apparait pas dans le plugin bandeau.

    Merci,
    Bonne journée.
    Nicolas

    Répondre à ce message

  • Pb avec des Checkbox
    Soit un champ toto de type TINYINT + taille 1 et valeur par défaut = 0

    Sur le formulaire que génère automatiquement tabledata, c’est une checkbox qui gère ce champ. Si on coche et qu’on valide, la valeur se met bien à 1. Par contre, si l’on veut modifier à nouveau pour remettre la valeur à 0 en décochant la case, après validation le champ reste à 1.
    Pas super ça....

    Une ruse à donner pour rectifier cela ?

    Répondre à ce message

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