Formulaire CTV

Bonjour,
En suivant les explications, http://www.spip.net/fr_article3796.html, à la suite de quoi j’ai créé un joli formulaire d’adhésion, l’internaute y voit quelque chose de bien et bien réparti, une fois rempli et envoyé la prise en compte se passe bien, le message de retour est conforme, sauf qu’à l’accueil du message, c’est vide, il n’y a rien, que dalle, désespérément vide.
Je tourne et retourne et je ne comprends toujours pas ce qui ne va pas.
Quelqu’un veut_il bien m’aider?
Merci


C’est pas parce que je suis venu, qu’il faut croire que je suis là.

Personne ne peut m’aider?
Je joins les deux fichiers pour donner une idée de ce que je n’ai pas ou mal fais.
Merci d’avance

Le 9 novembre 2009 14:10, mailou <mailou23@gmail.com> a écrit :

Bonjour,
En suivant les explications, http://www.spip.net/fr_article3796.html, à la suite de quoi j’ai créé un joli formulaire d’adhésion, l’internaute y voit quelque chose de bien et bien réparti, une fois rempli et envoyé la prise en compte se passe bien, le message de retour est conforme, sauf qu’à l’accueil du message, c’est vide, il n’y a rien, que dalle, désespérément vide.
Je tourne et retourne et je ne comprends toujours pas ce qui ne va pas.
Quelqu’un veut_il bien m’aider?
Merci


C’est pas parce que je suis venu, qu’il faut croire que je suis là.


C’est pas parce que je suis venu, qu’il faut croire que je suis là.

contact.html (5.12 KB)

contact.php (464 Bytes)

Bonjour,

J'ai un peu de mal a suivre ... Je ne vois quasiment pas de rapport entre le formulaire et le php qui doit le gérer.
En effet, le seul champ utilisé par le php est "message", or il n'y a rien de tel dans le fichier html ...
Il est donc normal que cela renvoie un mail vide.

Pour qu'un tel formulaire soit fonctionnel, il va falloir passer par des :

$un_champ_du_formulaire= _request('un_champ_du_formulaire'); $un_autre_champ_du_formulaire=_request('un_autre_champ_du_formulaire');

$message="info1: ".$un_champ_du_formulaire."<br/>info2: ".$un_autre_champ_du_formulaire;

etc...

Autre point: seule la fonction traiter est implémentée ici ... Vu qu'il y a des champs obligatoires, il va falloir aussi les fonctions charger et vérifier ainsi que toute la mécanique nécessaire à l'affichage des erreurs coté html.
A ce niveau, il vaudrait mieux mettre le html actuel de coté, et prendre l'exemple de base proposé sur le site de spip pour faire des essais.
Une fois que celui ci est fonctionnel, rajouter un nouveau champ, tester son intégration ... Et ainsi de suite jusqu'à ce que tout soit bon avec tous les champs.

Très bien, je vais me mettre au boulot, ça me fera avancer en php.
Merci pour les pistes.

Le 10 novembre 2009 09:22, Vincent <vincent@logaweb.fr> a écrit :

Bonjour,

J’ai un peu de mal a suivre … Je ne vois quasiment pas de rapport entre le formulaire et le php qui doit le gérer.
En effet, le seul champ utilisé par le php est « message », or il n’y a rien de tel dans le fichier html …
Il est donc normal que cela renvoie un mail vide.

Pour qu’un tel formulaire soit fonctionnel, il va falloir passer par des :

$un_champ_du_formulaire= _request(‹ un_champ_du_formulaire ›); $un_autre_champ_du_formulaire=_request(‹ un_autre_champ_du_formulaire ›);
$message="info1: « .$un_champ_du_formulaire. »
info2: ".$un_autre_champ_du_formulaire;

etc…

Autre point: seule la fonction traiter est implémentée ici … Vu qu’il y a des champs obligatoires, il va falloir aussi les fonctions charger et vérifier ainsi que toute la mécanique nécessaire à l’affichage des erreurs coté html.
A ce niveau, il vaudrait mieux mettre le html actuel de coté, et prendre l’exemple de base proposé sur le site de spip pour faire des essais.
Une fois que celui ci est fonctionnel, rajouter un nouveau champ, tester son intégration … Et ainsi de suite jusqu’à ce que tout soit bon avec tous les champs.


C’est pas parce que je suis venu, qu’il faut croire que je suis là.

Malheureusement, il va falloir en passer par le php ^^
Ceci dit, si besoin, je dois avoir quelques formulaires de ce type qui se balladent dans le coin.
Ils ne sont pas forcément transcendants, mais cela peut constituer une base de réflexion ...

Je veux bien merci, j’ai déjà mal à la tête, le php est pour moi toujours incompréhensible, il sera peut-être plus facile à modifier.
Merci

Le 10 novembre 2009 10:32, Vincent <vincent@logaweb.fr> a écrit :

Malheureusement, il va falloir en passer par le php ^^
Ceci dit, si besoin, je dois avoir quelques formulaires de ce type qui se balladent dans le coin.
Ils ne sont pas forcément transcendants, mais cela peut constituer une base de réflexion …


C’est pas parce que je suis venu, qu’il faut croire que je suis là.

J'ai normalement envoyé un message privé ( pour éviter les pièces jointes sur la liste ).

Bonjour.

En quoi ont consisté précisément tes essais ?

Et avant de se lancer plus avant dans les modifications, y a t'il pour toi des zones d'ombre sur http://www.spip.net/fr_article3796.html ?
Si tu n'as pas bien saisi les mécanismes de base du truc, ce sera mal engagé pour le customiser :frowning:
Mes propres formulaires ne sont que de légères variantes ( étendues de nouveaux champs ) de ce formulaire de base.

Avançons donc pas à pas: c'est un peu dur au début mais une fois le premier cap passé, c'est nettement plus clair ( en tout cas c'est l'effet que ça m'a fait ).

Ok, passons dans un premier temps sur le contenu des fichiers en question, les éléments les plus intéressants sont dans l'article sur spip.net .
Tu as quelques bases de php ? Si oui, quels points précis te posent problème sur cet article ?

Sinon, pour la petite histoire, les fichiers constituent en fait deux formulaires (un html et un php pour chaque ):
#FORMULAIRE_CONTACT et #FORMULAIRE_CATALOGUE

Pour les mettre en oeuvre, il faut par exemple les placer dans le répertoire formulaires de ton squelette et appeler la balise correspondante dans ton squelette.

Justement non, j'ai un mal fou à me familiariser en php

Ah ... Dans ce cas, l'affaire est mal engagée. As tu cherché du coté des plugins, voir s'il n'y a rien qui pourrait convenir à tes besoins ?

Dans le répertoire: squelettes/formulaire, j'ai donc un fichier "contact.html et contact.php" j'y ai installé les scripts en question, pour le html ça a l'air d'aller, mais le php je comprends pas bien, j'ai une erreur sur une ligne 3, je t'envoies les deux fichiers tels que je les ai installés.

Effectivement, je comprends que ton php râle: il manque tout le début du fichier, la ligne 3 commence en plein milieu d'une déclaration de tableau en dehors de toute fonction ... Sinon, le reste suit mais tout collé...
Cela pose un sacré souci au niveau des commentaires type // qui sont dépendants des retours à la ligne. Sinon, si tu n'as vu ce code que sous cet aspect, je comprends que tu aies du mal !

Je ne serais pas surpris que tu aie édité le fichier avec un éditeur qui n'aie pas saisi comment le fichier était codé ( les retour à la ligne en particulier ).
Tu ne fonctionnerait pas sous mac des fois ? Si oui, cela expliquerait bien des choses ( le fichier vient d'un Linux qui ne code pas les retour de la même manière: \r\n' pour Windows, '\n' pour Linux, '\r' pour Mac OS ).

Ok, surprenant donc la tête de ce fichier. Je ne comprends pas d’où peut provenir le souci …

Sinon, concernant ton code, :
function formulaires_contact_charger_dist → OK
function formulaires_contact_verifier_dist() → OK

function formulaires_contact_traiter_dist() → SOUCI

function formulaires_contact_traiter_dist(){
$envoyer_mail = charger_fonction(‹ envoyer_mail ›,‹ inc ›);
$email_to = $GLOBALS[‹ meta ›][‹ email_webmaster ›];
$email_from = _request(‹ email ›);
$sujet = ‹ Formulaire de contact ›;
$demande = _request(‹ demande ›);
$envoyer_mail($email_to,$sujet,$message,$email_from);
return array(‹ message_ok ›=>‹ Votre méssage a bien été pris en compte. Vous recevrez prochainement une réponse ! ›);
}

Tu as un souci dans cette fonction. En effet, tu envoie un mail dont le corps contient la variable « $message ».
Cette variable n’est initialisée nulle part, c’est le souci auquel je faisais référence dans l’un de nos précédents échanges.
Il va donc falloir construire pas à pas ton message avec les nouvelles données créées par tes champs.

Cela pourrait par exemple se faire ainsi :
// 1) récupérer tes données
$demande = _request(‹ demande ›);
$age_du_capitaine= _request(‹ ageducapitaine ›);

// 2) construre le message
$message = « votre demande : ».$demande;
$message.=« 
L’age du capitaine: ».$age_du_capitaine;

// 3) l’envoyer.
$envoyer_mail($email_to,$sujet,$message,$email_from);

Petite astuce crade : tu peux flanquer un :
echo $message;
die();

Juste avant le ‹ envoyer_mail ›. Cela te permettra de tester l’affichage de ton message sans pour autant attendre que ton mail arrive …
Pour faire un test grandeur nature il te suffit ensuite de commenter le tout ^^

Courage: je pense que tu as acquis quasiment toutes les billes pour tout customiser sans coup de pouce !

mailou a écrit :

Bé... après plusieurs essais, je suis obligé de constater que je n'ai rien compris.

-> Je peux comprendre, tu n'as pas choisi de commencer le php sur un exemple simple pour le coup.
Il vaudrait peut être mieux que tu commences par quelques bases de manière a pouvoir progresser ensuite plus sereinement.
Histoire de savoir grosso modo ou tu en es, parmi ces notions lesquelles te parlent :
- la notion de variable
- la notion de boucle ( if ... else ... , for ...., while ... )
- la notion de fonction
- la transmission des variables de formulaire par GET et POST.

Désolé, imagines que tu es un professeur des écoles, (c'est pas mon cas) tu es dans un cours élémentaire, et moi j'arrive d'un cours préparatoire, donc j'appris l'alphabet et les chiffres, mais je ne sais pas assembler les chiffres et les lettres, donc je ne sais pas lire et de ce fait, je ne sais pas écrire. Voilà ma situation, c'est pas trop grave docteur, je suis venu pour me soigner, est-ce possible

-> Il est toujours possible d'apprendre, et ce que tu as déjà maitrisé est tout à ton honneur et prouve que tu as déjà beaucoup appris.
Pour avoir fait le tour de spip, il faut vraiment y aller ! Rares sont à mon avis les personnes qui peuvent s'en vanter ...
On apprend donc toujours de nouvelles choses !

Pour info, je suis un ancien mécanicien auto des PTT, retraité depuis juillet 2000, et j'ai fais la connaissance de spip en 2005 sans aucune connaissance, mais depuis je me soigne, pour le html, le css, ça va à peu près, mais le php #@!!?§ c'est le désatre.

-> C'est normal car le html et les css décrivent une page au final. Le php par contre est un langage de script complet, c'est une autre finalité et une autre approche.
Sans quelques bases de programmation, ce n'est pas évident de se lancer.

J'ai fait deux trois recherches, et j'ai trouvé cette petite introduction :

La parcourir t'aidera certainement à comprendre les lignes de code te posant problème. Une fois ces bases en place, il devrait être plus aisé de se lancer dans du code php.

Ceci dit, au risque de me répéter, les formulaire CVT de spip, ce n'est pas simple dans la mesure ou cela fait appel à du code spécifique à spip, et dans la mesure ou certaines fonctions sont exécutées au chargement et rééexécutées après validation du formulaire ...

Je suis normalement à peu près à l'aise en php, mais les formulaires de spip m'ont donné du fil à retordre, c'est peut être pas une référence, mais cela illustre le fait que ce n'est pas simple de comprendre en détail ce que fait le code en question !

N'hésites pas à refaire signe après la lecture de l'article: je pense que ça ira mieux !
Il sera alors temps de passer à la customisation des formulaires ^^

Bonne lecture !

Vincent

Hello,

J'ai jeté un premier coup d'oeil au code avant de partir en week end. ( Soit juste après ma réponse de vendredi), et il y a comme qui dirait un souci.
En fait, tu as voulu mélanger du code de formulaires classiques avec des bouts de code CVT à la spip, et en faisant des vérifications javascript,
la ou les formulaires CVT les font coté serveur. Bref, j'ai commencé a refaire un truc à la sauce spip, je t'enverrais ca dès que ce sera d'équerre.
Je ne me sens pas trop le courage de naviguer la dedans ce soir, mais je pense que demain ça devrait être OK.

réponse faite ( en MP ) car fichier joint ^^

Si tu ne reçois pas de mails, cela peut être du à la configuration de ton spip.
Il faut que les fonctions smtp ou php soient bien configurées, et que ton hébergeur permette l'émission de mails depuis php.
As tu d'autres fonctions susceptibles de t'envoyer des emails sur le site pour tester ?
( genre tester avec le système d'oublis de mots de passe ).

Si tout se passe bien, tant mieux :slight_smile: