Installation et activation du plugin
Comme pour tous les plugins (voir Les plugins), vous avez installé ce plugin par ftp puis vous l’avez activé dans l’interface de gestion des plugins (Configuration > Gestion des Plugins > cocher la case « Formulaires ») :
Initialisation du formulaire
- Passez la souris sur « Edition » puis cliquez sur l’icône « Formulaires et sondages » ;
- Cliquez sur « Créer un nouveau formulaire » ;
- Donnez un titre, éventuellement un descriptif, et indiquez une adresse email où seront envoyées les réponses au formulaire rempli en ligne par vos utilisateurs ;
- choisissez « Ce formulaire n’est pas un sondage » (c’est le seul exemple abordé dans ce document) puis validez ; La validation initialise la création du formulaire. Vous pourrez ensuite aborder la seconde phase, celle de la définition des champs du formulaire.
- la même page s’affiche donc apres la validation, mais en bas vous trouverez un sélecteur des types de champs que vous pourrez afficher dans votre formulaire.
Création des champs de saisie
Choisissez les champs dont vous avez besoin, nommez les, puis ajoutez chaque élément, un par un ; voici le détail des champs possibles :
-
- ligne de texte crée un champ de saisie sur une seule ligne
- texte crée un champ de saisie sur plusieurs lignes
- adresse mail crée un champ de saisie d’adresse mail avec la mention « Veuillez entrer une adresse e-mail valide (de type vous@fournisseur.com) »
- adresse web crée un champ de saisie d’adresse web avec la mention "Veuillez entrer une adresse Web valide (de type http://www.monsite.com/...)". D’autre part, on peut choisir de vérifier la validité du site.
- choix unique insère un choix entre autant d’item que l’on souhaite de style « bouton radio » un seul bouton pourra être coché.
- choix multiple insère les classiques choix à cocher avec possibilités de plusieurs choix (cases carrées). Pour ces deux derniers types de champs, le changement est proposé après la création du champ pour transformation d’un type vers l’autre.
- fichier à télécharger permet à l’utilisateur de joindre un fichier. Le concepteur du formulaire fixe la taille maxi en ko du fichier.
- mots-clés ajoute automatiquement une liste de cases à cocher de type « choix multiples » correspondants à tous les mots-clés d’un groupe de mots-clés. Le choix entre les groupes de mots-clés est proposé au concepteur du formulaire. ex : j’ai un groupe de mots-clés nommé « Thématiques ». En choisissant ce groupe lors de la création du formulaire, j’insère automatiquement une série de cases à cocher avec tous les mots-clés de ce groupe, soit Communauté, Culture, Développement, Licences libres, Logiciels libres.
- nouveau bloc de questions crée un nouveau cadre qui entourera tous les champs qui suivront jusqu’à l’insertion d’un autre champ « bloc de questions »
- message d’explication insère un texte de votre choix, donc par exemple pour écrire vos questions ou commenter votre formulaire.
Il est possible de modifier l’ordre des champs en cliquant sur les flèches « monter » ou « descendre » en vis à vis de chacun.
Un apercu du formulaire est visible dans le cartouche, en cliquant sue le petit triangle devant APPARENCE DU FORMULAIRE
Lorsque vous avez intégré tous les composants souhaités , cliquez sur « Retour » en haut de la page. Votre formulaire est créé. Pour le publier il faut maintenant l’inclure dans un article
Vous insérez donc ce formulaire dans un article, à la manière d’une insertion d’image : lorsque vous créez ou modifiez un article, vos formulaires se trouvent à gauche de votre article et vous n’avez qu’à coller le code du formulaire voulu dans le corps de votre article (comme pour une image <img1>
)
Ex : Dans ce site, <form1>
inséré dans un article donnera le formulaire comme ceci : <form1>
Afficher un formulaire dans un squelette
Vous pouvez également afficher un formulaire directement dans les squelettes en utilisant la notation suivante :
[(#MODELE{form}{id_form=1})]
Afficher un sondage dans un squelette
Pour afficher un sondage, il faudra procéder en deux étapes et utiliser un <INCLURE>
pour bien gérer le cache.
1) Créer un squelette par exemple sondage.html
#CACHE{0}
[(#MODELE{form}{id_form=1})]
2) Inclure ce squelette ou vous voulez (disons sur la page d’accueil)
<INCLURE{fond=sondage}>
Vous pouvez consulter les réponses que vos utilisateurs ont envoyées :
- En consultant l’interface privé : en passant votre souris sur « Forum », puis sur « Suivi des réponses » (les réponses sont sur le même mode que les signatures des pétitions).
- En recevant les réponses par email : Si vous avez indiqué une adresse mail dans la configuration de votre formulaire (plus haut), vous recevrez également le contenu du formulaire par mail (pour autant que votre serveur vous autorise à envoyer des mails).
- En Exportant les réponses au format CSV : Vous avez également la possibilité de télécharger le fichier des données collectées au format csv pour excel. Sur la page Edition > Formulaire et sondage > Votre Formulaire : une fois que votre formulaire est publié et que vous avez collecté des réponses, apparait à gauche de l’interface de modification du formulaire, un bloc de consultation des réponses
- > voir les réponses (consultation modération cf forum) -> télécharger les réponses (récupération de l’ensemble des données sous forme d’un fichier csv pour excel)
Récupérer les informations du formulaire dans une boucle
Vous pouvez récupérer les infos générales de vos formulaires en utilisant la boucle suivante :
<BOUCLE_formulaire(FORMS)>
#TITRE
</BOUCLE_formulaire>
- Soit « FORMS » = le nom de la table
- #TITRE = le titre du formulaire
Un exemple complet de l’utilisation des boucles de formulaires est visible dans le plugin, dans le squelette de génération du formulaire (formulaires/forms.html)
Les balises disponibles sont #DESCRIPTIF, #SONDAGE (attention ne sera plus supporté dans forms2), #EMAIL (données serialisées, non utilisable simplement), #CHAMPCONFIRM (nom du champ email dont la valeur est utilisee pour envoyer un mail de confirmation), et #TEXTE (texte pour l’envoi du mail de confirmation)
Pour accéder aux informations concernant les champs des formulaires, 2 autres boucles sont utilisées :
La boucle FORMS_CHAMPS permet d’acceder aux infos d’un champ :
<BOUCLE_champs(FORMS_CHAMPS){id_form}{par cle}>
[(#TYPE|=={ligne}|?{' ',''})
<input type='text' name='#CHAMP' id='#CHAMP' value=""
class='[(#OBLIGATOIRE|=={oui}|?{forml,formo})]' size='40' />
]
</BOUCLE_champs>
Cet exemple simplifie issu de formulaires/forms_structure.html affiche l’input des champs de type ligne d’un formulaire
La boucle FORMS_CHAMPS_CHOIX permet d’acceder aux choix possibles pour un champ etendu de type choix multiple ou unique. Voici un autre exemple simplifié, issu de formulaires/forms_champs_multiple.html
<BOUCLE_f(FORMS){id_form}>
<BOUCLE_champs(FORMS_CHAMPS){id_form}{cle}>
<BOUCLE_choix(FORMS_CHAMPS_CHOIX){id_form}{cle}{par num titre,titre}>
<span class='spip_form_choix_multiple'>
<input type='checkbox' name='#CHAMP[]' id='#CHOIX' value='#CHOIX' />
<label for='#CHOIX'>[(#TITRE|supprimer_numero)]</label>
</span>
</BOUCLE_choix>
</BOUCLE_champs>
</BOUCLE_f>
Récupération des données des formulaires créés via des boucles
Les réponses au formulaire sont elles stockées dans la table spip_reponses et spip_reponses_champs. Pour une réponse donnée, vous avez un enregistrement dans spip_reponses, associé a n enregistrements de spip_reponses_champs ayant le meme id_reponse. Donc vous pouvez éventuellement récupérer les réponses par des boucles sur ces tables. Toutefois, les données des champs de type choix ne sont pas stockées en clair mais en tant que numero de choix (à peu de choses près), et il faut utiliser les boucles decrites ci-dessus pour les interpreter.
Un exemple de squelette affichant une réponse en clair est fourni avec le plugin (forms_reponse.html, a la racine du plugin).
Ces boucles sont d’un niveau d’utilisation avancées du fait de leurs interdependances.
Exemple : afficher les données lors du retour de validation d’un formulaire
Dans cet exemple on cherche à afficher les données d’un formulaire dans une page article lorsque l’utilisateur vient de valider un formulaire intégré dans un article avec le modèle <formXX>
.
Pour cela on modifie le squelette article.html en ajoutant à l’endroit où doivent apparaître les résultats (par ex. juste après la balise #TEXTE
l’un des deux exemples suivant :
- Premier exemple : afficher les données qui viennent d’êtres saisies par l’utilisateur :
<BOUCLE_feinte(ARTICLES){0,1}>[(#ENV{ajout_reponse}|?{' ',''})]</BOUCLE_feinte> <br><strong>Affiche les données qui viennent d'ètres remplies:</strong><br> <BOUCLE_reponses(FORMS_DONNEES){id_donnee}> <BOUCLE_champs(FORMS_CHAMPS){id_form}{par rang}> #TITRE : <span class='#_reponses:EDIT{#CHAMP}'>#LESVALEURS{','}</span> </BOUCLE_champs> </BOUCLE_reponses> </B_feinte>
- Deuxième exemple : afficher l’ensemble des données saisies pour ce formulaire :
<BOUCLE_feinte(ARTICLES){0,1}>[(#ENV{ajout_reponse}|?{' ',''})]</BOUCLE_feinte> <br><strong>Affiche l'ensemble des données saisies:</strong><br> <BOUCLE_reponses2(FORMS_DONNEES){par id_donnee}> Réponse #ID_DONNEE:<br> <BOUCLE_champs2(FORMS_CHAMPS){id_form=#ENV{ajout_reponse}}{par rang}> #TITRE : <span class='#_reponses:EDIT{#CHAMP}'>#LESVALEURS{','}</span><br> </BOUCLE_champs2> <br> </BOUCLE_reponses2> </B_feinte>
Note : dans les 2 cas on utilise une BOUCLE_feinte qui permet de tester la présence du critère d’environnement ajout_reponse pour n’afficher les résultats que si la page est chargée en retour d’une validation du formulaire. Pour plus d’infos sur les boucles feintes, voir le paragraphe « Parties optionnelles des balises » dans cet article : http://www.weblog.eliaz.fr/article6...
Utiliser la fonctionnalité de liaison (dépendance) entre plusieurs formulaires
Il est possible de rendre un formulaire dépendant du remplissage d’un autre formulaire : c’est le rôle du champ « Formulaires obligatoires pour la saisie de celui-ci » de l’onglet Propriété d’un formulaire.
Cette fonctionnalité permet typiquement de faire quelque chose du style :
- l’utilisateur arrive sur un article qui présente un premier formulaire (
<form1>
pour cet exemple) : il le rempli et le valide. - une fois cette validation faite, l’article se ré-affiche avec un deuxième formulaire (
<form2>
par ex.) qu’il peut alors remplir (le premier formulaire n’est plus visible). - une fois celui-ci validé, un troisième formulaire s’affiche (
<form3>
).
Mode opératoire :
- créer les 3 formulaires
- dans le champ Formulaires obligatoires pour la saisie de celui-ci de
<form2>
, on indique 1 (le numéro du formulaire de l’étape 1). - dans le champ Formulaires obligatoires pour la saisie de celui-ci de
<form3>
, on indique 1,2 (le numéro du formulaire de l’étape 1 et de celui de l’étape 2, séparés par une virgule). - Créer l’article qui contiendra l’enchaînement de ces 3 formulaires (un seul article), et mettre dans le texte de celui-ci
<form3>
uniquement !
L’idée c’est que pour que<form3>
s’affiche, il sera nécessaire d’avoir rempli<form1>
puis<form2>
, qui seront automatiquement insérés à la place de<form3>
l’un après l’autre. Il ne faut donc pas faire d’appel direct au modèles<form1>
et<form2>
.
Remarques
- si vous voulez que vos tests fonctionnent, il est nécessaire de vider les données saisies liées à votre compte utilisateur pour les 2 premiers formulaires et de supprimer les cookies spipcookie_form_1 et spipcookie_form_2 avant chaque essai (installez firecookie en plus de Firebug dans votre FireFox afin de simplifier cette opération).
- apparament il doit y avoir un léger problème dans la prise en compte de l’étape qui vient d’être validée puisqu’en réalité, lorsque l’article est réaffiché à la validation d’un formulaire, il est nécessaire de recharger la page pour que le formulaire suivant apparaisse (recalcul pas nécessaire, simplement rechargement de la page)... Et cela même avec un
#CACHE{0}
dans le squelette de l’article qui contient les formulaires.
Si vous avez des infos pour contourner ce problème, merci de laisser un message dans le forum attaché à cet article !
Discussions par date d’activité
332 discussions
Bonjour à tous,
cela fait plusieurs jours que je me bats avec ce plugin pour arriver à lui faire faire ce que je veux. J’ai réussi à modifier mon squelette pour que l’affichage me convienne (par le biais d’une boucle ALTERNER qui me permet d’afficher ma liste de choix par lignes de 5 au lieu d’un « bête » ul, pas pratique en ce qui me concerne), mais je m’arrache les cheveux pour trouver où sont contenues les infos de redirection une fois la saisie effectuée et le bouton « Valider » pressé.
J’ai trouvé quoi modifier pour la phrase « Votre saisie a été enregistrée. », mais pas de bol, je veux la garder. C’est le lien « Voir les résultats » dont je voudrais modifier l’intitulé et la cible, sans succès malgré mes heures de recherche...
Par ailleurs, quand le visiteur revient sur la page, il est redirigé vers le message « Votre saisie a été enregistrée. Voir les résultats », or je souhaiterais dans ce cas afficher autre chose...
Quelqu’un saurait-il me venir en aide ? je n’en doute pas une seconde ! ;)
Merci d’avance.
hello !
comment tas fait pour trouver comment modifier « Votre saisie a été enregistrée. » ?
merci car je galère beaucoup !!
C’est dans le fichier « lang/forms_fr.php ».
Le champ concerné est « reponse_enregistree », qui se trouve dans les fichiers suivants :
« balises/forms.php »
« formulaires/charger.php »
« formulaires/traiter.php »
« formulaires/verifier.php »
A+
Franck
merci pour ta réponse
mais je ne vois pas où modifier ce que je veux dans form_fr
de plus je ne trouve pas
« formulaires/charger.php »
« formulaires/traiter.php »
« formulaires/verifier.php »
en fait dans mon form_fr j’ai que ça
oups désolé
c’est pas dans form_fr mais dans forms_fr..
merci dreamweaver pour la recherche et merci à toi bien entendu ;)
Répondre à ce message
hello !!
comment faire pour modifier ce texte « Votre saisie a été enregistrée » ?
merci
Répondre à ce message
Bonjour,
je cherche (desesperement) a fusionner 2 forms crees avec le plugin afin d afficher sur le site public un formulaire de saisi regroupant les champs des deux et permettant a l internaute de valider le tout en une fois...
j ai tente de creer un #modele mais, si je parviens a afficher les champs des deux formulaires, je n arrive pas a les enregistrer en base apres validation...
y a moyen ou pas ?
spip 1.9.2
cordialement
nan, y a pas moyen
Répondre à ce message
Bonjour,
Avec la version de SPIP 2.0.2 [13532] et le plugin 1.9.3 je suis renvoyé à :Fatal error : Call to undefined function : debut_page() in /homez.40/minibell/www/plugins/forms_et_tables_1_9_1/exec/forms_tous.php on line 23
Ce qui veut dire que pour cette version de spip le plugin n’est pas prêt, à moins que celà vienne d’ailleurs, dans ce cas, une idée ?
Merci
Pas de compatibilité SPIP 2.0 pour le moment. Le plugin est gros, et le portage est long.
Répondre à ce message
Dans spip2 la gestion des formulaire a été revu avec la methode CVT (Charger, vérifier, Traiter). Et chaque formulaire peut être inclus dans un article par une simple balise comme < formulaire|contact >. Ensuite on peut déclarer également plusieurs bases dans spip2, donc faire facilement des boucles sur des petites tables autre que spip. On peut faire des choses vraiment sympa maintenant avec spip2. Bon c’est pas aussi simple que d’utiliser ce joli plugin qui nous a tous rendu service :)
Répondre à ce message
Bonjour
Merci pour ce super plugin. je l’utilise pour créer des formulaires mais à fois que je valide le formulaire je retrouve pas la partie qui va me permettre de definir mes champs.
Merci d’avance
Bonjours
Peut-on l’intégré dans la version spip 2
Merci d’avance
Non, le plugin n’est pas compatible avec SPIP 2.0.
Le sera t il, ou doit on envisager de passer à autre chose ?
Je viens de voir quand bas de l’article il est écrit
« Le portage pour la prochaine version stable de SPIP sera fait après la sortie de la dite version »
donc je vais tranquillement attendre
Répondre à ce message
Bonjour,
J’ai essayé ce plugin que je voudrais utiliser simplement pour faire un sondage sur le nom à donner à mon site tout nouveau tout beau ! Le truc, c’est que mon site est entièrement public...
J’ai essayé de faire des tests :
- si je me connecte comme un utilisateur lambda, je peux répondre autant de fois que je veux au formulaire mais lorsque je regarde la liste des réponses dans l’interface administrateur, je ne vois que la première, les autres ne sont pas prises en compte.
- de même, si je m’authentifie avec un nom d’utilisateur, seule la première réponse que je donne avec ce nom d’utilisateur est prise en compte.
Comme y remédier ?
Merci d’avance
Répondre à ce message
Bonjour,
Je plussoie. Quid de ce plugin pour SPIP V2.0 ?
Merci.
Répondre à ce message
Bonjour,
Un portage pour SPIP 2 est-il prévu pour ce merveilleux plugin ?
Merci
Ah ben pardon, je ne sais pas lire ;-)
Je précise ma question : le boulot de portage a-t-il commencé (vu que SPIP2 est sorti), peut-on commencer à aider à débugger un début de plugin ?
Merci
Lo
Répondre à ce message
Bonjour,
Je viens de passer plusieurs longues journées à essayer de comprendre un problème que j’avais depuis de longs mois sur un site spip utilisant ce plugin. (Juste pour info, j’ai plusieurs 10aine de sites spip, dont au moins une dizaine utilisant ce plugin).
Je suis carrément reparti de 0 (bdd et site) sur un site fonctionnel en ajoutant peu à peu toutes mes données et squelettes et en faisant littéralement des 100aines de tests, super dimanche :-)
Bref, j’ai découvert le problème suivant dont par contre je ne saurai dire s’il est dans le plugin ou dans SPIP 1.9.2f (ou e) :
- le pbm : les emails vers admin ou de confirmation ne partent pas, hébergeur OVH.
- mais les mails partent depuis une install vierge de spip
Apparemment le problème vient de la syntaxe suivante (copiée de spip.net) qui permet d’afficher un message « pas de texte » si #TEXTE est vide, avec évidemment donc mon formulaire dans le champ Texte de l’article :
[(#TEXTE|?{#TEXTE,"pas de texte"})]
Par contre cela fonctionne parfaitement avec :
[(#TEXTE|sinon{"pas de texte"})]
J’ai reproduit le problème ici des 10aines de fois, et je l’ai provoqué dans des sites qui marchaient avant ... bref ce semble bien être le coupable.
C’est un demi-bug étant donné qu’il y a une possibilité de contournement, mais bon, le problème des mails qui ne partent pas apparait souvent, peut-être certains utilisent-ils tout simplement cette syntaxe !
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 :
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.
Suivre les commentaires : |