Cet outil présente l’intérêt de regrouper dans une table unique (séparée du code de traitement) l’ensemble des information permettant ...
de générer le formulaire,
de faire les controles (actuellement seulement les champs obligatoires),
de réafficher si nécessaire le formulaire partiellement rempli
de mettre en forme le message courriel, de l’expédier et de remercier le client !
L’exemple traité ci-dessous est visible ici http://melan.sgdf.fr/article.php3 ?id_article=55
Un exemple plus complet est visible en http://melan.sgdf.fr/rubrique.php3 ?id_rubrique=14
0) Le module outil "formulaire_inc.php"
Il est fourni en document ci-joint. À vous de le placer dans votre dossier d"includes".
1) Squelette : rubrique ou article d’accueil
en tête, appeler (en dernière) la feuille de style spécifique : <link rel="stylesheet" href="../includes/formulaire.css" type="text/css">
;
dans la bonne division, appeler le module php contenant la table formulaire :
<INCLURE (../includes/form_rub14.php) >
Note : Il est nécessaire d’appeler ce module à partir d’un squelette de rubrique ou d’article (qui sera donc une rubrique ou un article spécifique à cet usage), il ne semble pas possible d’assurer les "include" nécessaires à partir du corps d’un article.
2) Module php contenant la table formulaire
Ce module ne contient que la construction du tableau "$T_form", puis l’appel au module de traitement "formulaire_inc.php"
Note : il s’agit d’un module php simple, ce n’est pas un squelette (pas de traitement par le moteur de SPIP)
Forme générale
<?php
### Formulaire de demande de renseignement ###
#
# (libellé : commande ; nom variable ; valeur initiale ; param1 ; param2 ; obligatoire)
$T_form = array (
"Demande de renseignements ; form ; id_article=55 ; feuxnouveaux@sgdf.fr ; ; ;",
"Votre identité : ; table ; ; ; ; ; ",
"Nom ; text ; nom ; ; 24 ; 48 ; oblig",
"Prénom ; text ; prenom ; ; 24 ; 24 ; ",
"Adresse messagerie ; text ; mel ; ; 32 ; 80 ; oblig",
"Dates envisagées ; text ; dates ; ; 32 ; 80 ; oblig",
"Vos questions ; textarea ; message ; ; 8 ; 32 ; oblig",
"Envoyer la demande ; submit ; action ; envoyer ; ; ; ",
);
$debug=1; // activer le mode "debug" pour les tests
include ("./includes/formulaire_inc.php");
?>
À noter que vous pouvez personnaliser le texte de bonne exécution en assignant une variable $merci = "Votre message de remerciement..." ; avant l’instruction include.
3) Construction de la table formulaire "$T_form"
C’est une liste de chaines de caractères. Chaque chaîne comprend 6 éléments séparés par un point virgule :
Libellé à afficher en colonne de gauche
Code de traitement
nom de la variable
valeur initiale
paramètre 1 (usuellement taille du champ)
paramètre 2 (usuellement nombre de caractères max)
contient code "oblig" pour indiquer que ce champ est obligatoire
Le formulaire est constitué d’un ensemble de "blocs" formé de tables jointives. Ce procédé permet un minimum de souplesse de présentation...
3.1) En-tête obligatoire
libellé : Affiché en titre au dessus du formulaire
code : "form"
nom : indication de l’article SPIP ou de la rubrique SPIP appelant : id_article=55 ou id_rubrique=14
valeur : adresse Mél où envoyer le message
3.2) ouverture de bloc
libellé : affiché en première ligne du bloc
code : "table"
On peut répéter l’ouverture de bloc à plusieurs reprises. La fermeture de bloc est gérée automatiquement.
3.3) Ligne intermédiaire
(pour délimiter un secteur particulier d’un bloc)
libellé : affiché en pleine ligne dans un "grisé"
code : "ligne"
Répété "ad-libitum"
3.4) Champ texte
libellé : Affiché en colonne de gauche
code : "text"
nom : nom de variable au choix (ce nom ne réapparait pas en dehors du traitement HTML/PHP)
valeur : valeur initiale éventuelle, sinon vide
p1 : taille du champ
p2 : nombre max de caractères
oblig : code "oblig" si champ obligatoire
3.5) Zone de texte
libellé : Affiché en colonne de gauche
code : "textarea"
nom : nom de variable au choix
valeur : valeur initiale éventuelle
p1 : nombre de lignes
p2 : nombre de colonnes
oblig : code "oblig" si champ obligatoire
3.6) Choix sur menu
(menu simple ou menu à choix multiple)
Ligne de déclaration
libellé : Affiché en colonne de gauche
code : "select" ou bien "sel_mul" pour un menu à choix multiple
nom : nom de variable au choix (nom partagé avec toutes les lignes "option" qui suivent)
valeur : n/a (non applicable)
p1 : nombre de ligne affiché
p2 : n/a
oblig : code "oblig" si champ obligatoire
Ligne option
(autant de lignes que d’options)
libellé : Affiché dans le menu
code : "option"
nom : le même que dans la ligne de déclaration
valeur : un identifiant de valeur au choix (ce nom ne réapparait pas en dehors du traitement HTML/PHP)
p1 : noter "1" pour le(s) option(s) préselectionnée(s)
fin de menu
(obligatoire pour fermer la structure)
libellé : n/a
code : "/select"
3.7) Boutons "Radio"
Ligne de déclaration
libellé : Affiché en colonne de gauche
code : "libelradio"
nom : nom de variable au choix (nom partagé avec toutes les lignes "radio" qui suivent)
valeur : n/a
p1 : n/a
p2 : n/a
oblig : code "oblig" si champ obligatoire
Bouton
libellé : Affiché à coté du bouton
code : "radio"
nom : le même que dans la ligne de déclaration
valeur : un identifiant de valeur au choix (cette valeur sera affichée dans le message envoyé)
p1 : noter "1" pour le(s) option(s) préselectionnée(s)
Fin de choix radio
(fermeture de la ligne du tableau)
libellé : n/a
code : "/radio"
3.8) Cases à cocher
Ligne de déclaration
libellé : Affiché en colonne de gauche
code : "libelcheck"
nom : n/a
valeur : n/a
p1 : n/a
p2 : n/a
oblig : n/a (impossible de demander un remplissage obligatoire)
Bouton
libellé : Affiché à coté du bouton
code : "checkbox"
nom : nom de variable au choix
valeur : un identifiant de valeur au choix (cette valeur sera affichée dans le message envoyé)
p1 : noter "1" pour le(s) option(s) préselectionnée(s)
Fin de choix
(fermeture de la ligne du tableau)
libellé : n/a
code : "/checkbox"
3.9) Fin de formulaire
libellé : Texte à côté du bouton d’envoi
code : "submit"
4) Test et mise en service
"Mode debug" Si vous positionnez la variable $debug=1 ; avant d’appeler le module formulaire_inc, il n’y a pas de courriel envoyé, mais son contenu s’affiche à l’écran pour contrôle.
Dès que tout est correct, remettez à zéro ou suprimez simplement la ligne !
Attention : Le système n’expédie un message... que s’il y a un "serveur de mesagerie" dans la configuration ! Ce qui n’est presque jamais le cas dans nos machines personnelles. Vous ne pourrez donc "lancer un message" que quand votre logiciel sera installé sur votre serveur public.
Attention aussi que certains hébergeurs interdisent ou limitent l’utilisation de l’instruction PHP "mail".

Dossier compressé - formulaire_inc.php et formulaire.css
Philippe DENOYELLE - Ingénieur, retraité actif...
J’ai tenu pendant 7 ans le site internet des Guides de France, puis participé au lancement des sites Scouts et Guides de France. maintenant je reste responsable du site "Mélan-Feux Nouveaux" merveilleux lieu de rencontre de l’association (Alpes de haute Provence)
J’ai monté bien sur le site de ma paroisse grenobloise...
(À part cela, je suis responsable des sites et serveurs de l’ACONIT : Association pour un conservatoire de l’informatique et de la télématique.)
pdenoyelle chez mac point com