Formulaire avec signature sur tablette - HTML/CSS - Programmation
Marsh Posté le 26-05-2018 à 21:26:26
Bonjour,
Vérifie déjà ce que retourne ta variable name dans le js et ce que $_POST["name"] retourne dans le php.
Cela permettra de voir de quel côté il vaut mieux chercher.
Marsh Posté le 26-05-2018 à 21:55:08
Bonsoir,
Merci pour ta réponse.
C'est moi qui ai crée $_POST["name"]
Dans le fichier html, j'ai ajouté
Code :
|
et ceci dans le js
Code :
|
Merci pour ton aide.
Marsh Posté le 26-05-2018 à 22:56:49
Non mais ça j'ai compris.
Je ne vois pas à première vue d'où vient le problème, et quand on ne voit ni le problème ni de message d'erreur, la démarche à suivre c'est de debugger son code en regardant ce que valent les variables à chaque étape du code.
N'ayant qu'une partie du code je ne peux pas le faire à ta place.
Il existe des outils pour débugger afin de suivre pas à pas ce qui se passe à chaque ligne de code. Sinon tu peux utiliser des techniques barbares mais tout aussi efficaces, par exemple, dans le JS, après :
Code :
|
Tu peux ajouter :
Code :
|
Afin de récupérer dans la console ce que vaut la variable name et interrompre le reste du code.
Tout comme tu dois pouvoir faire en PHP :
Code :
|
Marsh Posté le 27-05-2018 à 09:32:10
Bonjour,
Je te remercie pour ces explications mais je ne suis arrivé à rien excepté planter toute la page et même en remettant l'ancien code, ça fonctionne pas. Bref un délai que je vais bien trouvé.
Voici le code php. Il n'y a que 3 fichiers.
Code :
|
Je me suis basé sur la conception d'un formulaire mais je dois admettre que le fichier upload, j'ai comprends pas grand chose.
Merci d'avance pour ton aide.
Bonne journée.
Marsh Posté le 27-05-2018 à 11:58:40
Bonjour,
Pour l'instant, sans envoyer de mail, juste en testant les parties qui sont censées poser problème, chez moi, ceci fonctionne :
page.html
Code :
|
signature.js :
Code :
|
test.php
Code :
|
As-tu des problèmes avec ça ?
Marsh Posté le 27-05-2018 à 12:12:43
Re bonjour,
Merci pour cette réponse rapide.
Ca fonctionne.
J'ai bien la page test.php qui affiche tout ce qu'il faut..... excepté la signature et bien entendu l'envoi du mail.
Sans vouloir abuser (vu que j'aimerais bien comprendre et apprendre) qu'as tu changé (excepté la création de la page test.php et de la ligne 146 du .js ?
Merci encore pour ton aide précieuse.
Marsh Posté le 27-05-2018 à 12:20:54
Pour l'instant rien de spécial...
J'ai juste remis "au propre" le code. Maintenant si tu testes avec ton ancien PHP et que ça fonctionne alors c'est qu'à mon avis le problème provenait du document HTML qui contenait de petites erreurs.
Notamment, la balise style qui n'était pas dans la balise head, le type non précisé dans la balise style et les balises script et la ligne suivante :
Code :
|
contenait deux attributs type.
Marsh Posté le 27-05-2018 à 12:26:14
C'est moi qui ai ajouté le hidden car il n'a aucune utilité d'être visible.
Ok je vais tester avec l'ancien PHP.
Je reviens vers toi.
Merci.
Marsh Posté le 27-05-2018 à 12:32:24
Test effectué. Ca fonctionne parfaitement avec la signature et l'envoi du mail.
Donc effectivement, le problème était dans le html.
Un très très grand merci pour ton aide ultra précieuse.
Je vais pouvoir mettre tout en place maintenant.
Génial. Merci
Bon dimanche
Marsh Posté le 27-05-2018 à 12:34:38
Pour l'histoire d'attributs, tu avais mis :
Code :
|
Tu ne peux pas mettre type="hidden" et type="email", c'est soit l'un soit l'autre. Tu ne peux pas avoir deux valeurs au même moment pour la même chose, c'est une règle de base de la programmation.
Marsh Posté le 27-05-2018 à 12:38:20
MaybeEijOrNot a écrit : Pour l'histoire d'attributs, tu avais mis :
|
Effectivement, ça paraît logique. En fait, je cherchais à ne pas faire apparaître cet imput (je l'avais supprimé et forcement ça ne fonctionnait plus) et donc content de ma trouvaille et surtout du bon fonctionnement, je ne suis pas allé plus loin.
J'imaginais pas que c'était ce détail qui bloquait tout.
Maintenant ça fonctionne grâce à ton aide.
Merci encore.
Marsh Posté le 27-05-2018 à 12:53:50
Je ne sais pas si c'est ce détail là, mais c'est une possibilité.
Marsh Posté le 09-06-2018 à 14:48:53
Bonjour,
Suite de mon projet qui avance pas mal. Mise en forme css et consort. Pour ça je m'en sors mais j'ai un petit souci.
Je voudrais que le formulaire soit envoyé au client et aussi à moi.
Je n'arrive pas à trouver comment indiquer au fichier php qu'il faut envoyer à l'adresse du formulaire et à une adresse mail prédéfinie (à savoir la mienne)
Code :
|
Merci d'avance pour votre aide.
Marsh Posté le 09-06-2018 à 15:27:00
Ici :
Code :
|
Le mail est envoyé dans la condition du "if". Ici cela veut littéralement dire :
Citation : Si la fonction "multi_attach_mail", avec les paramètres qui lui sont passés, retourne une valeur non fausse ou non nulle alors ... |
Tu peux-donc transformer en :
Code :
|
Je ne te gère pas l'erreur en cas de problème d'envoi à ton adresse mail car je ne sais pas comment tu comptes gérer le cas où le mail part bien à l'adresse client mais pas à la tienne.
Marsh Posté le 09-06-2018 à 17:39:37
MaybeEijOrNot a écrit : Ici :
|
Génial. Merci beaucoup. Ca fonctionne nickel.
Comme quoi, le savoir, ça aide. J'ai bien passé 1H à tester dans tous les sens
Quand même une petite question.
Lors de l'envoi vers gmail, le texte s'affiche parfaitement. Ce qui n'est pas le cas quand j'envoie à une autre adresse mail qui est un nom de domaine dont je dispose. Les accents ne s'affichent pas.
Allez dernière question. Y a t il une solution plus facile dans le body qui sert pour le texte et l'envoi du mail pour faire quelque chose de joli et de bien présenté ?
J'ai testé, c'est clair et net mais pas vraiment pro.
Code :
|
Peut on se baser sur le code html avec le css ?
Merci
Marsh Posté le 09-06-2018 à 18:17:24
@ MaybeEijOrNot
J'ai reçu un mail m'indiquant que tu avais posté une réponse mais je ne la vois pas sur le forum.
Marsh Posté le 09-06-2018 à 18:25:10
Tu peux envoyer un mail avec du HTML, du texte et des pièce-jointes mais ça va te demander du boulot. Il faut laisser le content-type en multipart/mixed puis dans le premier boundary tu crées un content-type multipart/alternative dans lequel tu crées deux sub-boundaries, l'un pour le texte et l'autre pour le HTML. Il vaut mieux laisser une version texte au cas où le client ne gère pas le HTML.
Pour cela il faudra modifier ta fonction "multi_attach_mail($to, $sendermail, $subject, $message, $files)" pour qu'elle prenne un paramètre de plus (le contenu HTML) et pour qu'elle écrive correctement le header du mail par rapport à ce que je t'ai décrit au-dessus.
Tu peux retrouver à quoi ressemble un header de mail ici : https://www.arobase.org/newsletters [...] native.htm
C'est ce qu'écrit ta fameuse fonction mais pour un content-type multipart/mixed.
Marsh Posté le 09-06-2018 à 18:27:13
Merci pour ta réponse.
Je vais me pencher la dessus demain.
J'ai un autre souci que je n'arrive pas à résoudre donc chaque chose en son temps.
Merci à toi
Bonne soirée.
Marsh Posté le 09-06-2018 à 18:33:03
Au secours quand même.....
J'ai donc peaufiné une partie du formulaire html.
Code :
|
Idem pour le signature.js
J'ai ajouté
Code :
|
et
Code :
|
Dans le fichier php d'envoi
Code :
|
et en test dans le body de ce même fichier
Code :
|
Et donc mon genre du formulaire ne s'affiche pas dans le mail qui est envoyé alors que name et prenom s'affichent.
Je ne comprends pas d'où vient le problème car j'ai déjà fait cette modification pour prenom et ça a fonctionné.
Merci d'avance
Marsh Posté le 09-06-2018 à 19:16:49
En HTML, une id est unique et ne peut donc correspondre qu'à un élément, cf. fieldset.
L'attribut "for" d'un élément doit prendre pour valeur l'id d'un champ, bien que normalement non sensible à la casse, mieux vaut rester cohérent et ne pas utiliser de majuscule quand l'id n'en contient pas.
En PHP, l'écriture d'une variable entre guillemets doubles est possible mais n'est pas conseillée, mieux vaut utiliser l'opérateur de concaténation :
Code :
|
En français, on utilise "M." pour monsieur et "Mme" pour madame, c'est en anglais qu'on utilise "Mr".
Sinon je ne vois pas d'où vient le problème. Mais comme vu au début du sujet, suffit que tu ais fait une faute ailleurs pour que ça bloque.
Marsh Posté le 09-06-2018 à 20:28:51
Merci pour ta réponse rapide et précise.
Je vais tester tout cela et je reviens donner la réponse.
C'est vrai pour le M. ça sera corrigé
Bonne soirée.
Marsh Posté le 10-06-2018 à 10:07:40
MaybeEijOrNot a écrit : En HTML, une id est unique et ne peut donc correspondre qu'à un élément, cf. fieldset.
|
Bonjour MaybeEijOrNot,
Encore un grand merci pour tes réponses.
Donc j'ai modifié le fieldset. Effectivement j'avais une erreur vu qu'il y avait plusieurs id les mêmes. De ce côté c'est OK. Je n'ai plus d'erreur dans le html.
J'ai également modifié les "for" pour qu'il soient parfaitement les mêmes que les "id".
Idem pour le M.
Par contre, concernant le php, je ne comprends pas à quelle ligne tu fais référence ?
Ce qui est vexant, c'est que j'ai ajouté $name et $prenom il y a quelques temps et ça fonctionne mais $genre ne fonctionne pas.
Merci
Marsh Posté le 10-06-2018 à 11:13:15
Re bonjour,
Finalement, j'ai repris depuis le début. J'ai modifié les choses que tu m'as conseillé et ça fonctionne dans son intégralité.
Je ne vois pas où était l'erreur (un peu bête point de vue compréhension) mais niveau efficacité, c'est tout bon
Merci pour ton aide précieuse.
Marsh Posté le 10-06-2018 à 11:55:21
Pour le PHP :
charliedaps a écrit :
|
Tu inscris ta variable à l'intérieur de ta chaîne de caractères, cela fonctionne en PHP car tu utilises des guillemets doubles. Néanmoins le comportement peut être un peu imprévisible, mieux vaut éviter d'inclure la variable dans la chaîne de caractères.
Sinon moi non plus je ne sais pas d'où vient l'erreur, mais niveau compréhension, ce qu'il faut retenir c'est qu'il faut être rigoureux. Les langages informatiques sont interprétés par des machines et donc la moindre faute peut tout faire déconner.
Marsh Posté le 10-06-2018 à 21:45:36
Merci beaucoup pour ton aide.
Tout fonctionne actuellement et j'ai quasi fini.
Merci
Marsh Posté le 02-01-2022 à 20:41:35
J'ai testé votre exemple qui fonctionne correctement
Je désirerai inclure une 2eme zone de dessin et pour ce faire j'ai dupliqué signature.js mais cela ne fonctionne pas
Avez vous une idée pour créer cette 2eme zone ?
A+
Marsh Posté le 02-01-2022 à 20:42:46
Sur un même formulaire
Mon code:
Code :
|
La partie signature.js
Code :
Code :
|
La partie signature1.js
Code :
Code :
|
Marsh Posté le 02-01-2022 à 21:12:14
Bonjour,
Sans tester, donc peut-être que ça ne suffit pas pour régler le problème (et je n'ai pas lu tout le code), la ligne suivante ne va pas dans signature1.js :
Code :
|
L'élément créé est "canvas" et non "canvas1", on parle ici d'un type d'élément HTML et non de son identification.
EDIT : si cela ne résout pas le problème, peut-être que des erreurs sont disponibles dans la console pour identifier plus facilement le hic.
Marsh Posté le 03-01-2022 à 08:52:55
J'ai modifié ces 2 lignes:
Code :
|
Pas de résultat
N'y a t il pas un conflit entre les 2 signature.js ?
Marsh Posté le 03-01-2022 à 12:19:55
La première ligne fallait garder ce que tu avais fait, l'id du second canvas sera bien "canvas1". Mais sur la troisième ligne, tu crées un élément HTML de type "canvas".
Marsh Posté le 03-01-2022 à 14:08:11
Voici les modifs
Code :
|
Pas d'amélioration
Marsh Posté le 03-01-2022 à 14:46:27
Cela fonctionne
J'ai débuggé avec la console
Je me suis fait un peu piégé par les données de navigation
Le vieux signature1.js resté actif
Encore merci pour l'aide
Marsh Posté le 03-01-2022 à 20:14:43
Au passage, tu n'avais pas besoin de renommer le nom des variables puisque leur portée est limitée à la fonction exécutée.
Marsh Posté le 26-05-2018 à 20:57:41
Bonjour à toutes et à tous,
Un ami voudrait pour son futur site internet un sorte de formulaire avec une zone "manuscrite" pour que ces clients puissent signer soit avec la souris soit avec le doigt (tablette ou similaire) (Ce sont en fait des bons de commande lors de ses démarches chez ses clients). Ma maîtrise du codage ayant ses limites, je fais appel à votre savoir et aide
J'ai comme base https://www.zetakey.com/codesample-signature.php
J'ai modifié pour tester la page html
Jusque là ça va +/-
Mais quand le mail est envoyé il n'apparaît pas le name du pseudo formulaire alors que le to apparaît bien.
Voici les modifications du .js (j'imagine que c'est un problème de traitement des données venant sur fichier html.
J'ai également modifié le fichier .php (qui doit aussi traiter les données) mais sans plus de succès.
Quand je fais cette ligne, le name apparaît pas dans le mail
Quand c'est to, le to apparaît bien dans le mail.
Merci d'avance pour votre aide.