Formidable, le générateur de formulaires

Un générateur de formulaires facilement configurable pour les non-informaticiennes et facilement extensible pour les développeur⋅euses.

Cette documentation est valable à partir de la version 6.1.0 de Formidable.

Introduction

Historiquement, deux plugins avaient déjà été développés précédemment pour gérer des formulaires :

  • Forms &Tables, qui n’a pas été complètement porté pour SPIP 2.
  • et spip-formulaire créé par artego mais qui n’était plus maintenu.

La question s’est donc posée : construire sur la base d’un des deux plugins ou repartir de zéro ?
Form &Table, très complet pour les utilisateurs, présentait l’inconvénient d’avoir un côté « fourre-tout » qui le rendait difficilement modifiable et difficile à personnaliser par les dévs.

Il a finalement été décidé de repartir de zéro pour proposer quelque chose :

  • de plus facile à utiliser pour les utilisateurs d’une part,
  • mais aussi de plus facile à personnaliser pour les développeur⋅euses.
    Avec le parti pris de se baser de préférence sur plusieurs petits plugins spécialisés et de tirer parti de la nouvelle norme CVT.

Interface utilisateur

L’utilisation basique de l’interface est abordée dans ce screencast : Mon premier formulaire pas à pas : c’est Formidable !

Appeler mon formulaire

Vous devez appeler le formulaire ayant le nom « formidable », en lui passant en paramètre l’identifiant de votre formulaire.

Dans un contenu

Utilisez le modèle <formulaire> classique : <formulaire|formidable|id=34> ou bien <formulaire|formidable|id=contact>

Dans un squelette


#FORMULAIRE_FORMIDABLE{34} ou bien #FORMULAIRE_FORMIDABLE{contact}

Afficher les résultats du formulaire

Dans un contenu

Utilisez le modèle <formulaire_analyse|id_formulaire=34>

Pré-remplir dynamiquement les champs d’un formulaire

À noter, vous avez la possibilité de surcharger dans l’appel, les valeurs par défaut des champs de votre formulaire. Pour cela, vous devez passer un tableau de nom=>valeur en deuxième paramètre. Vous pourrez trouver les noms de vos champs dans l’aide-mémoire situé sur la page de configuration des traitements.

Dans un contenu

Le tableau de valeurs dans un paramètre defaut sous forme d’une suite de chaînes « clé,valeur » séparée par des virgules :
<formulaire|formidable|id=contact|defaut=hidden1,valeur,input_5,autrevaleur>

Dans un squelette

Le tableau en deuxième paramètre :

#FORMULAIRE_FORMIDABLE{contact, #ARRAY{nom_du_champ, Ma valeur}}

C’est particulièrement utile pour remplir un champ caché avec une valeur dynamique venant du squelette :

#FORMULAIRE_FORMIDABLE{contact, #ARRAY{hidden_1, #ID_DOCUMENT}}

Autres options utilisable dans le squelette

Il est possible de passer des options comme troisième argument du formulaire, sous forme de tableau (#ARRAY).

Options possible comme troisième argument de #FORMULAIRE_FORMIDABLE
Nom de l’optionFonctionType
forcer_modif Permet de forcer la modification d’une réponse, même si non autorisé Booléen
id_formulaires_reponses Identifiant de la réponse à modifier Entier
no_ajax Désactiver l’ajax sur le formulaire Booléen
traiter_email_destinataires Destinataires pour le traitement Tableau (#ARRAY) d’emails ou liste d’emails séparés par des virgules
traiter_email_destinataires_methode Indique si traiter_email_destinataires doit remplacer les emails déjà configurés dans le traitement ou les ajouter Au choix 'remplacer' ou 'ajouter' (valeur par défaut)
url_redirect Url de redirection Chaine

Exemple d’un formulaire Formidable dont l’identifiant est contact_libre et dont l’email destinataire est dans le champ email de la table de votre objet #EMAIL de la table spip_contacts ….

<div class="ajax">
#FORMULAIRE_FORMIDABLE{contact_libre,'',#ARRAY{traiter_email_destinataires,#EMAIL}}
</div>

Case unique

Pour rendre obligatoire la réponse oui à une case unique (pour la validation de conditions d’utilisation par exemple), il faut simplement rendre le champ obligatoire.

Courriels de notification

Une option des traitements proposés permet d’envoyer un mail de notification automatiquement, à chaque saisie d’un formulaire.

Le squelette par défaut employé pour la mise en forme de ces mails est plugins/formidable/notifications/formulaire_email.html. Vous pouvez le copier dans le répertoire ’notifications’ de votre squelette et l’y modifier à votre guise. Cette modification vaudra pour tous les formulaires.

Pour utiliser un squelette spécifique pour les mails de notification de l’un seulement des formulaires définis avec Formidable, il suffit d’ajouter son squelette dans le répertoire ’notifications’ de votre dossier squelettes, mais en ajoutant l’identifiant.

IDENTIFIANT étant l’identifiant du formulaire défini dans Formidable, les squelettes doivent se nommer :
formulaire_IDENTIFIANT_email.html pour le mail aux destinataires
formulaire_IDENTIFIANT_accuse.html pour l’accusé de réception du visiteur

Conservation des IP

Les adresse IP des personnes répondant aux formulaires sont stockées en base de donnée. Depuis la version 1.5 (SPIP 3) / 0.7 (SPIP < 3), elle sont automatiquement hashé, de manière à ce que l’IP ne soit plus reconnaissable, au bout de 124 jours (environ 4 mois).

Pour changer ce délai, vous pouvez redéfinir la constante _CNIL_PERIODE dans votre fichier mes_options.php.

Par exemple :

define('_CNIL_PERIODE', 24*3600);

permet de hasher les IP toutes les 24 heures.

Si vous voulez désactiver le hashage, mettez la valeur à 0.

Envoi de fichiers

Lire l’article complémentaire : Envoyer des fichiers avec un formulaire Formidable.

Mise en forme des saisies

Le plugin ne prévoit aucun réglage de mise en forme des saisies : c’est à chaque squelette d’avoir ses styles. Il respecte cependant la convention d’écriture des formulaire SPIP. Il permet d’ajouter des classes spécifiques sur les saisies.

Affichage des réponses sous forme de tableau

Le plugin Formidable Tablesorter permet d’afficher sous forme de tableau les réponses, dans l’espace privé, avec possibilité de tri et de filtre.

Voir aussi sur le wiki


-  Complément de doc et exemples sur les boucles et balises de formidable
-  Exemples de stylage CSS d’un formulaire Formidable
-  todoFormidable
-  Formidable, présentation aux Grottes (2010)

Discussion

812 discussions

  • 3

    Bonjour,
    Je suis en train de configurer un question/sondage en utilisant le plugin.

    Je n’arrive pas à mettre un affichage conditionnel sur un groupe sur la première question et du coup je préfère poster ma question.
    la conf est la suivante :

    @fieldset_1@
        Question 1
    
    @oui_non_1@
        Avez été contraint de travailler à votre domicile
    
    @checkbox_1@
        Si Oui pouvez-vous préciser ?
    
    Liste des choix possibles
    
        choix1|toute la durée du confinement
        choix2|une partie seulement
    
    Sur @checkbox_1@ j'ai mis dans l'onglet affichage :
    @oui_non_1@=="Oui"

    et par défaut le @oui_non_1@ est positionné à « oui », d’ailleurs qu’ils soit positionné à ou ou non cela ne change rien et que je mette « Oui » ou « oui » dans la condition ne change rien.
    Faut-’il configurer autre chose dans la zone privé du plugin. Pour info je suis sous SPIP 3.2.7
    Merci

    • La saisie oui_non produit « on » ou «  » (chaine vide) comme vraie valeure ,c’est évidement pas le label humain qu’on teste (et qui peut changer suivant les langues), comme pour n’importe quelle autre saisie, on teste la vraie valeur technique.

      Mais cela dit, je ne vois même pas comment tu peux avoir la saisie oui_non alors qu’elle est dépréciée et n’est plus proposée.

    • Quelle version de formidabel et de saisies ? la saisie oui_non est obsolète, il lui faut préferer des saisies avec des textes explicites, pour des questions d’accessibilité. Du type « oui j’ai été contraint » et « Non je n’ai pas été contraint »

      Ensuite j’imagine que vous parliez bien de l’onglet « affichage selon un champ » ?

      Enfin, même si vous gardez oui/non (ce que je déconseille) il se trouve que la valeur a testé est un peu piégeuse. Il faut tester @oui_non_1@=='on'

    • Merci
      effectivement passer avec un contrôle du champs par « on » ou «  » marche parfaitement.
      Bonne journée à vous

    Répondre à ce message

  • 1

    Bonjour,

    Mes formulaires s’affichent bien dans spip, pas de soucis, par contre ils ne s’affichent pas dans les squelettes. Auriez une idée ?

    Merci

    Répondre à ce message

  • 3

    Bonjour,
    Merci pour ce formulaire que je trouve parfait.
    Par contre, pensez-vous qu’il serait possible qu’une réponse postée pourrait être exporter directement dans un nouvel article spip. Cela éviterait de ressaisir chaque champs dans l’article.
    Si c’est possible, j’avoue que je n’ai pas trouver comment faire dans par exemple : configurer les traitements.
    Merci de votre aide.
    Pour la petite histoire sur mon site https://www.edition999.info/Formulaire-d-envoi-de-votre-livre.html les auteurs postent un formulaire pour leur livre et ensuite je crée un article qui met à disposition ce live gratuitement.

    • Ce serait compliqué car selon la structure du formulaire, la structure de l’article devrait s’adapter. Donc sûrement pas en natif. À la rigueur dans un plugin à part, avec un nouveau traitement,

      Mais sinon c’est possible de

      1) créer son propre modèle à appeler dans l’article https://www.spip.net/fr_article3454.html
      2) ce modèle utilisera les boucles et balises de formidable https://contrib.spip.net/Balises-et-boucles-avec-Formidable
      3) il faudra aussi ajuster les traiements pour que les réponses soient publiques

      Cela étant je me demande si dans votre cas vous n’auriez pas meilleur temps d’utiliser le plugin « Fabrique » pour créer un nouveel objet « critique de livre ».

    • Cela dit il y a un sous-plugin FormiTable, qui ajoute justement un traitement pour que la réponse soit transférer dans un objet SPIP à configurer dans le traitement (plugin de JLuc mais qui était expérimental). Il n’a pas l’air d’avoir été importé dans le git.

    • Merci beaucoup je vais regarder ces possibilités.
      Je me rappelle, voici plusieurs années, j’utilisais le plugin Forms et Tables et celui-ci permettait en appuyant de mémoire sur exporter, dans l’espace privé, d’ouvrir un nouvel article et que certains champs étaient déjà pré-rempli.
      Mais parfois ma mémoire peut me faire défaut.
      Merci encore et je reviendrai vers vous si je trouve une possibilité facile à mettre en oeuvre, cela pourrait peut-être aider des utilisateurs de Spip.

    Répondre à ce message

  • 1

    Bonjour,

    merci pour votre plugin qui rend bien des services. Toutefois, il a quelque chose que je n’arrive pas à faire.
    je cherche à savoir comment récupérer une variable depuis l’url pour l’injecter dans le formulaire saisie en contenu. Je m’explique :

    j’ai un article 32 qui contient dans le texte :
    <formulaire|formidable|id=contact|defaut=destinataire,4>
    c’est-à-dire que le destinataire par défaut est le 4

    lorsque je clic sur spip.php ?article32&destinataire=10
    je voudrais que le destinataire soit 10 et pas 4

    Est-ce possible,et si oui, comment faire ?
    Merci.

    • Tu ne peux pas logiquement faire ça depuis le texte d’un contenu SPIP, puisque tu n’as pas accès à l’environnement technique de la page. Pour faire ça c’est uniquement quand tu es dans un squelette, comme expliqué plus haut dans la doc de l’insertion squelette qui contient précisément un exemple de ce dont tu parles, qui utilise une valeur dynamique disponible là où on est en train d’insérer le formulaire

      #FORMULAIRE_FORMIDABLE{contact, #ARRAY{hidden_1, #ID_DOCUMENT}}

    Répondre à ce message

  • 1

    Salut,
    je rencontre un bug pour un formulaire dont le résultat est posté par courriel :
    Quand je coche dans les configurations des traitements « Masquer les liens d’administration dans le courriel » l’envoi de mail ne se fait pas.
    Voila pour le petit report. Si non tout est nickel, merci.
    à+
    joz

    • Salut,

      je viens de tester et je ne reproduit pas. J’ai reregarder le code correspondant, et je vois vraiment pas ce qui pourrait bloquer à ce niveau là...

      version du plugin, de saisies etr de php ?

    Répondre à ce message

  • 9

    Bonjour

    J’ai un soucis avec le plugin : la vérification de champs (en front office) ne marche plus. La validation du formulaire se fait même si aucun champ obligatoire n’est rempli.

    Du coup, j’ai mis à jour le plugin … et patatra j’ai en plus le même pb que celui énoncé plus bas. Le formulaire existe bien dans les articles où il at été mis mais il « n’existe plus » en BO. Le plugin est vide...

    Merci pour votre aide
    Paolo

    • quel était la version ancienne du plugin ? quels sont les versions que vous avez aujourd’hui ?quels est la structure de la table spip_formulaires que vous avez ? version de spip et de php ? ca veut dire quoi que cela n’existe plus en bo ? avez vous des messages dans mysql.log ?

    • Bonjour

      merci pour votre réponse

      en même temps que la maj de Formidable, tous les autres plugins ont été mis à jour.
      -  version ancienne du plugin : comment savoir ???
      -  version spip actuelle : 3.2.5, version php 7.0
      -  j’ai mis en PJ une capture d’écran où ce matin apparait aussi un message d’erreur.

      où trouver les mysql.log ?...

      la structure de la table :
      CREATE TABLE spip_formulaires (
      id_formulaire bigint(21) NOT NULL,
      identifiant varchar(200) DEFAULT NULL,
      titre text NOT NULL,
      descriptif text,
      css varchar(255) NOT NULL DEFAULT ’’,
      message_retour text NOT NULL,
      saisies longtext NOT NULL,
      traitements text NOT NULL,
      public enum(’non’,’oui’) NOT NULL DEFAULT ’non’,
      statut varchar(10) NOT NULL DEFAULT ’’,
      maj timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      apres varchar(12) NOT NULL DEFAULT ’’,
      url_redirect varchar(255) DEFAULT NULL,
      date_creation datetime NOT NULL DEFAULT ’0000-00-00 00:00:00’
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

      merci
      Paolo

    • oki, ce n’est pas tout à fait les mêmes erreurs.

      As tu une table spip_formulaires_liens. Peux tu donner la stucturre ?

      Est tu chez ovh ?

      Que se passe-til si tu repasse par la page de gestion des plugins.

      Le les logs mysql se trouve dans tmp/log

    • j’ai bien une table spip_formulaires_liens :

      CREATE TABLE spip_formulaires_liens (
      id_formulaire bigint(21) NOT NULL DEFAULT ’0’,
      id_objet bigint(21) NOT NULL DEFAULT ’0’,
      objet varchar(25) NOT NULL DEFAULT ’’
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

      je suis bien chez OVH

      je suis repassé par la page de gestion des plugins et là miracle j’ai retrouvé mes formulaires dans la page d’admin du plugin...

      Par contre j’ai toujours mon problème du départ à savoir la validation du formulaire qui ne fonctionne pas (image en pj)

      merci

    • tu aurais pas la version 4.0.0 du plugin saisies par hasard ?

    • Saisies pour formulaires 3.38.2 - stable
      API de vérification 1.10.0 - stable

    • ouais, donc c’est pas ca.

      Bah écoute, envoi moi un export .yaml de ton formulaire, que j’essaie en local...

    • LE PLUGIN est OK. C’était une erreur humaine pas technique ...

      Je m’explique (hum hum)...

      ce matin j’ai pris le pb à l’envers... j’ai dupliqué le formulaire en question pour faire des tests et là rapidement je me suis aperçu que mon collègue (néophyte) a rajouté des astérisques sur les labels pour les rendre obligatoires (on ne rigole pas) et n’a donc pas du tout coché la case de validation.... Mais c’est moi qui suit à blâmer, j’aurais dû commencer par vérifier le formulaire et l’erreur humaine possible !!!

      Merci MAIEUL pour ton aide et désolé pour ton temps passé.
      Paolo

    • Bon l’essentiel est que cela soit résolu. Mais oui un (*) c’est pas une bonne manière de montrer que c’est obligaoire. Voir http://romy.tetue.net/1289

    Répondre à ce message

  • 5
    Pierrot

    Bonjour,
    J’ai un souci un peu similaire à une personne plus bas : plus de formulaires listés dans le back-office, par contre le formulaire (il n’y en a qu’un seul) apparait bien sur la page d’édition de l’article qui le contient et sur la page publique ...
    Par contre je suis en 3.2.7 et je viens de mettre à jour Formidable en 4.4.6 et je ne peux pas dire si c’était ok ou pas avant mais c’était à jour de pas longtemps auparavant. Quand je vais sur la page qui liste les formulaires existants j’ai une erreur :

    2 Erreur(s) dans le squeletteNuméro	Message	squelette	boucle	Ligne
    1 	Critère inconnu objet	../plugins/auto/formidable/v4.4.6/prive/objets/liste/formulaires.html	_formulaires	6
    2 	Critère inconnu id_objet	../plugins/auto/formidable/v4.4.6/prive/objets/liste/formulaires.html	_formulaires	6

    Bien sûr j’ai vidé les caches, essayé de créer un second formulaire, désactivé-activé, ... Au vu de l’erreur j’ai exploré et j’ai trouvé ça dans le fichier formulaires.html indiqué dans l’erreur, au tout début :

    [(#SET{defaut_tri,#ARRAY{
    	titre,1,
    	date,-1,
    	id_formulaire,-1
    }})
    ]<B_formulaires>

    Je l’ai modifié comme suit :

    [(#SET{defaut_tri,#ARRAY{
    	titre,1,
    	date,-1,
    	id_formulaire,-1
    }})
    ]
    <B_formulaires>

    Juste un retour à la ligne après le ]. Et ça marche ... c’est le « _formulaires » qui semblait venir de la syntaxe de la boucle qui m’a interpellé.
    Bug ? pbm de transfert ?

    Pierre

    • c’est franchement étonnant ca oui. Après #SET c’est souvent sensible.

      Quoi qu’il en soit, je vais apporter cette modif dans le code. et puis la prochaine version de formidable l’aura.
      Merci du signalement.

    • Ps : peux tu nous indiquer ta version de PHP ?

    • Pierrot

      PHP 7.0.33 c’est un serveur en Debian 9.

    • Je pense que ça n’a rien à voir avec SET, ni le saut de ligne.

      Le fait d’avoir édité le fichier a invalidé le cache PHP Opcache surtout. Si tu remets le fichier comme avant, est-ce que le bug revient ?

      Sinon maieul, j’ai cette Notice en php 7.4 : Trying to access array offset on value of type bool in formidable_pipelines.php on line 148

    • Pierrot

      Je viens de faire le test : si je supprime le saut de ligne que j’ai ajouté, j’ai de nouveau l’erreur (j’ai vidé le cache entre-temps).
      Ensuite j’ai fait 2-3 allers-retours avec-sans-avec-sans, sans vider le cache, l’erreur revient toujours quand le début de la boucle est collé au crochet fermant. J’ai essayé en mettant un espace, erreur aussi.
      Bref ici, en tous cas, ça ne marche que si je reviens à la ligne avant la boucle.

    Répondre à ce message

  • 6

    Bonjour,

    Existe-t-il une « formule » pour forcer le remplissage d’une date ultérieure au jour présent ?
    Si on a 2 dates (typiquement arrivée / départ), comment peut-on forcer la date de départ à être ultérieure à la date d’arrivée ?
    Merci pour votre aide.

    • Non, à part en ajoutant du javascript soi-même. Je crois me souvenir que la lib qui gère le sélecteur de date le permet peut-être, mais ce n’est qu’un vague souvenir (faut vérifier dans le fichier dans le noyau de SPIP), mais dans les Saisies, c’est pas prévu. Si la lib du noyau le permet, ça pourrait être ajouté.

    • Non en fait je ne vois rien en ce sens dans « inc-dateur »…

    • Bonjour RastaPopoulos,

      Merci pour ta réponse rapide. Bon, dommage (car je pense qu’il y a utilité pour de nombreux cas), mais on attendra que ce soit intégré, prochainement j’espère ;-)

    • Bonjour,
      Est-ce qu’il est maintenant possible de vérifier si une saisie de date est supérieure ou égale à une date d’un autre champ du formulaire ?
      J’ai été regarder du coté du plugin https://contrib.spip.net/Affichage-conditionnel-de-saisie-syntaxe-des-tests mais il s’occupe uniquement de l’affichage, pas de la vérification de la saisie.

      Merci !

    • Bonjour,

      non ce n’est pas possible pour l’heure.

      Techniquement cela impliquerait :
      -  de modifier les vérifications pour vérifier un champ par rapport à un autre > pas si simple que ca, notamment en terme de syntaxe
      -  d’implémtenter les comparateurs de date, bon ca c’est facile à faire en php.

    • OK merci.
      Et en fait je n’avais pas vu mais maintenant lorsque l’on choisit une première date, la suivante se modifie pour prendre la valeur de la 1e (et ensuite on peut la changer).. Donc c’est cool cela évite une bonne partie des erreurs.

      dd

    Répondre à ce message

  • 1
    Fifouille

    Bonjour, j’ai installé le plugin Formidable. Auparavant j’utilisais le plugin forms and table.

    L’importation des formulaires se fait correctement.

    Cependant, je ne peux plus accéder à la gestion des plugins. La page affiche « MAJ init ».

    Avez-vous une idée du problème que je rencontre ?
    Merci

    • Pas vraiment d’idée non :(

      il faudrait voir du coté des logs d’erreurs php

    Répondre à ce message

  • 9

    Bonjour,

    J’ai un site qui tournait sous spip 3.0.8 avec formidable 1.3.5, tout fonctionnait bien. J’ai mis à jour le spip et formidable, dans la liste des formulaire il me dit qu’il n’y en a pas (alors qu’ils sont bien dans la db), dans /ecrire, sur un article je vois bien mon formulaire s’afficher et sur le site publique les formulaires ne s’affichent plus.

    Afin de voir de nouveaux s’afficher la liste des formulaire, j’ai du remplacer la ligne 21 du fichier formidable/v4.3.0/prive/objets/liste/formulaire.html

    avant :

    <BOUCLE_formulaires(FORMULAIRES){objet?}{id_objet?}{id_formulaire?}{statut?}{compteur_left formulaires_reponses}{tri #ENV{par,titre},#GET{defaut_tri},session_tri_formulaires}{recherche?}{pagination #ENV{nb,10}}>

    apres :

    <BOUCLE_formulaires(FORMULAIRES){tout}{tri #ENV{par,titre},#GET{defaut_tri},session_tri_formulaires}{recherche?}{pagination #ENV{nb,10}}>

    J’ai aussi testé avec la 3.49.1 et c’est pareil, rien dans la liste, rien sur le site publique, mais ok quand on est dans l’article dans spip...

    Je ne comprends pas.... :’(

    • hum

      c’est étrange. Sans doute un bug de migration.

      Je regarde cela.

    • Sympa, merci !

      A noter qu’une fois la mise à jour faites, si je crée un nouveau formulaire tout bête pour tester, il n’apparait pas non plus dans la liste.

    • Bon,

      je reproduit pas.

      Ce que j’ai essayé de faire
      1. Installer php 5.6 pour piuvoir faire tourner un vieux spip 3.0.8
      2. Installer formidable 1.3.5 depuis les tags
      3. Créer un formulaire
      4. Mettre à jourspip vers 3.2.3
      5. Mettre à jour formidable vers 4.3.0
      6. Regarder la liste des formulaires : cela apparait.

      Je soupconne très vaguement un problème lors de la mise à jour des tables, mais alors quoi ?

      Voilà la structure de la table

      CREATE TABLE <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF9mb3JtdWxhaXJlczwvY29kZT4="></span> (
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRfZm9ybXVsYWlyZTwvY29kZT4="></span> bigint(21) NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRlbnRpZmlhbnQ8L2NvZGU+"></span> varchar(200) DEFAULT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+dGl0cmU8L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+ZGVzY3JpcHRpZjwvY29kZT4="></span> text,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+Y3NzPC9jb2RlPg=="></span> varchar(255) NOT NULL DEFAULT '',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bWVzc2FnZV9yZXRvdXI8L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c2Fpc2llczwvY29kZT4="></span> longtext NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+dHJhaXRlbWVudHM8L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+cHVibGljPC9jb2RlPg=="></span> enum('non','oui') NOT NULL DEFAULT 'non',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3RhdHV0PC9jb2RlPg=="></span> varchar(10) NOT NULL DEFAULT '',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bWFqPC9jb2RlPg=="></span> timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+YXByZXM8L2NvZGU+"></span> varchar(12) NOT NULL DEFAULT '',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+dXJsX3JlZGlyZWN0PC9jb2RlPg=="></span> varchar(255) DEFAULT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+ZGF0ZV9jcmVhdGlvbjwvY29kZT4="></span> datetime NOT NULL DEFAULT '0000-00-00 00:00:00'
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

      Qu’en est-il de votre côt é ?

    • Bonjour,

      Merci de vous pencher sur mon problème... c’est sympa.

      Voici avant la mise à jour :

      CREATE TABLE <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF9mb3JtdWxhaXJlczwvY29kZT4="></span> (
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRfZm9ybXVsYWlyZTwvY29kZT4="></span> bigint(21) NOT NULL AUTO_INCREMENT,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRlbnRpZmlhbnQ8L2NvZGU+"></span> varchar(200) DEFAULT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRfcnVicmlxdWU8L2NvZGU+"></span> bigint(21) NOT NULL DEFAULT '0',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRfc2VjdGV1cjwvY29kZT4="></span> bigint(21) NOT NULL DEFAULT '0',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+dGl0cmU8L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+ZGVzY3JpcHRpZjwvY29kZT4="></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bWVzc2FnZV9yZXRvdXI8L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c2Fpc2llczwvY29kZT4="></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+dHJhaXRlbWVudHM8L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+cHVibGljPC9jb2RlPg=="></span> enum('non','oui') NOT NULL DEFAULT 'non',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+Y2hhcG88L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+dGV4dGU8L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bWVyY2k8L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+cHM8L2NvZGU+"></span> mediumtext NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bGFuZzwvY29kZT4="></span> varchar(10) NOT NULL DEFAULT '',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bGFuZ3VlX2Nob2lzaWU8L2NvZGU+"></span> char(3) DEFAULT 'non',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+ZGF0ZTwvY29kZT4="></span> datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bWFqPC9jb2RlPg=="></span> datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+YXByZXM8L2NvZGU+"></span> varchar(12) NOT NULL DEFAULT '',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+dXJsX3JlZGlyZWN0PC9jb2RlPg=="></span> varchar(255) DEFAULT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+dHlwZTwvY29kZT4="></span> enum('une_seule_page','plusieurs_pages') NOT NULL DEFAULT 'plusieurs_pages',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bGltaXRlcl9pbnZpdGF0aW9uPC9jb2RlPg=="></span> enum('oui','non') NOT NULL DEFAULT 'non',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bGltaXRlcl9hcHBsaWNhbnQ8L2NvZGU+"></span> enum('oui','non') NOT NULL DEFAULT 'non',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bm90aWZpZXJfYXBwbGljYW50PC9jb2RlPg=="></span> enum('oui','non') NOT NULL DEFAULT 'non',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bm90aWZpZXJfYXV0ZXVyczwvY29kZT4="></span> enum('oui','non') NOT NULL DEFAULT 'non',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3RhdHV0PC9jb2RlPg=="></span> enum('hors_ligne','en_ligne') NOT NULL DEFAULT 'hors_ligne',
        PRIMARY KEY (<span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRfZm9ybXVsYWlyZTwvY29kZT4="></span>)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

      Et apres :

      CREATE TABLE <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF9mb3JtdWxhaXJlczwvY29kZT4="></span> (
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRfZm9ybXVsYWlyZTwvY29kZT4="></span> bigint(21) NOT NULL AUTO_INCREMENT,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRlbnRpZmlhbnQ8L2NvZGU+"></span> varchar(200) DEFAULT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRfcnVicmlxdWU8L2NvZGU+"></span> bigint(21) NOT NULL DEFAULT '0',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRfc2VjdGV1cjwvY29kZT4="></span> bigint(21) NOT NULL DEFAULT '0',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+dGl0cmU8L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+ZGVzY3JpcHRpZjwvY29kZT4="></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+Y3NzPC9jb2RlPg=="></span> varchar(255) NOT NULL DEFAULT '',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bWVzc2FnZV9yZXRvdXI8L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c2Fpc2llczwvY29kZT4="></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+dHJhaXRlbWVudHM8L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+cHVibGljPC9jb2RlPg=="></span> enum('non','oui') NOT NULL DEFAULT 'non',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+Y2hhcG88L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+dGV4dGU8L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bWVyY2k8L2NvZGU+"></span> text NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+cHM8L2NvZGU+"></span> mediumtext NOT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bGFuZzwvY29kZT4="></span> varchar(10) NOT NULL DEFAULT '',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bGFuZ3VlX2Nob2lzaWU8L2NvZGU+"></span> char(3) DEFAULT 'non',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+ZGF0ZTwvY29kZT4="></span> datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bWFqPC9jb2RlPg=="></span> datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+YXByZXM8L2NvZGU+"></span> varchar(12) NOT NULL DEFAULT '',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+dXJsX3JlZGlyZWN0PC9jb2RlPg=="></span> varchar(255) DEFAULT NULL,
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+dHlwZTwvY29kZT4="></span> enum('une_seule_page','plusieurs_pages') NOT NULL DEFAULT 'plusieurs_pages',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bGltaXRlcl9pbnZpdGF0aW9uPC9jb2RlPg=="></span> enum('oui','non') NOT NULL DEFAULT 'non',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bGltaXRlcl9hcHBsaWNhbnQ8L2NvZGU+"></span> enum('oui','non') NOT NULL DEFAULT 'non',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bm90aWZpZXJfYXBwbGljYW50PC9jb2RlPg=="></span> enum('oui','non') NOT NULL DEFAULT 'non',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bm90aWZpZXJfYXV0ZXVyczwvY29kZT4="></span> enum('oui','non') NOT NULL DEFAULT 'non',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3RhdHV0PC9jb2RlPg=="></span> enum('hors_ligne','en_ligne') NOT NULL DEFAULT 'hors_ligne',
        <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+ZGF0ZV9jcmVhdGlvbjwvY29kZT4="></span> datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        PRIMARY KEY (<span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRfZm9ybXVsYWlyZTwvY29kZT4="></span>)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

      Donc à part css et date_creation, pas beaucoup de différences... :/

    • Hum, deja cette différence est pas normale. Etes vous bien passé après la mise à jour sur la page d’administration des plugins ?

    • Oui, mise à jour spip via spip_loader, mise à jour formidable via gestion des plugins, je suis même aller sur la page de configuration de formidable apres.

      Je peux dupliquer l’environnement et vous donner un acces si vous voulez.

    • Hum, je sais pas si cela aiderait. De toute facon il est évident qu’il y a eu un souci. Et remonter tout l’historique du code pour comprendre pourquoi dans ce cas la migration chez vous s’est mal passée...

      enfin donnez toujours les infos de mysql.log, on sait jamais.

      Comme vous avez l’air de vous débrouillez, je dirais plutôt que l’idéeal serait que vous reproduisiez via PHP my admin la nouvelle structure des tables. Vous la trouverez décrite dans formidable/base/formidable

    • C’est gentil :D je suis dev web depuis 13 ans :D lol

      Bref, j’ai fais, et du coup c’est encore pire... plus d’id_rubrique dans la table formulaire du coup spip n’aime pas...

      Je m’arrache les cheveux dessus depuis hier...

    • mais, nul part dans le code actuel formidable ne réclame de l’id_rubrique....

      t’aurais pas du cache qui trainerait encore en fait ?

    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