Copier la valeur d’un champ dans un autre

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Copier la valeur d’un champ dans un autre

Re: Copier la valeur d’un champ dans un autre

par wagscd » 11 mai 2019, 21:08

Retour d'expérience et de test.

Ca fonctionne parfaitement.

Merci beaucoup et surtout je pense avoir compris le principe.

Alors pour répondre à tes questions,
Le javascript, c'est parce que c'est un formulaire avec signature et qu'il gère la sauvegarde et l'envoi de la signature.
Le 1er formulaire envoie juste sur sa page avec un texte et un lien, faut que je peaufine ça.

Bref ça fonctionne

Un très grand merci à toi pour ton temps.
J'ai appris pleins de choses ;)

Re: Copier la valeur d’un champ dans un autre

par wagscd » 11 mai 2019, 16:22

Bonjour Spols,

Merci pour toutes ces explications. Je teste tout cela ce soir ou demain.

Retour du test rapidement ;)

Merci encore pour ton aide et ton temps.

Re: Copier la valeur d’un champ dans un autre

par Spols » 10 mai 2019, 15:30

merci je vois un peu plus claire mais il y a encore des choses que je ne comprends pas.
je ne comprends pas l'interet de ta partie de javascript, mais si elle marche laissons.
La fin de ton fichier de traitement du 1er formulaire termine via une redirection ? du type header(location:XXX); sinon comment l'utilisateur se retrouve t il de retour sur le formulaire ?

Dans tous les cas, vu ta structure de fichier complexe, je te la ferais pas modifier pour simplifier.
j'utiliserais les _SESSION
en tout début de formulaire HTML transformé en .php ajouter
<?php session_start();?> Attention même pas un retour à la ligne avant cet instruction
tes champs
<input type="text" class="form-control" id="societeclient" placeholder="Indiquez la société" required>
peuvent devenir
<input type="text" class="form-control" id="societeclient" placeholder="Indiquez la société" value="<?php echo $_SESSION['societe'];?>" required>

et dans ton fichier de traitement du premier formulaire commencer par session_start(); juste après le <?php
ensuite ajouté en dessous de
$societe = $_POST["societe"];
$adresse = $_POST["adresse"];
ceci
$_SESSION["societe"] = $societe;
$_SESSION["adresse"] = $adresse;

en espèrant qu'il n'y ai pas d'incompatibilité avec le reste du code.

Re: Copier la valeur d’un champ dans un autre

par wagscd » 10 mai 2019, 14:12

Bonjour Spols,

Voilà les codes (un peu nettoyé sinon ça va faire compliqué)

Le html avec les 2 formulaires

Code : Tout sélectionner

<!--FORMULAIRE PREMIER ONGLET--> <div class="row"> <div class="form-group col-sm-12"> <label for="societe" class="h4">Société</label> <input class="form-control" type="text" id="societe" size="35" placeholder="Société" autocomplete="on"> </div> </div> <div class="row"> <div class="form-group col-sm-12"> <label for="adresse" class="h4">Adresse</label> <input class="form-control" type="text" id="adresse" size="90" placeholder="Adresse Complète" autocomplete="on"> </div> </div> <!--TRAITEMENT ENVOI CONTRAT--> <div id="canvas">Canvas is not supported.</div> <script type="text/javascript">zkSignature.capture();</script> <button type="button" onclick="zkSignature.clear()">Effacer Signature</button> <br> <img id="saveSignature" alt="Saved image png"> <form> <label for="Email"></label> <input type="hidden" id="replyemail" size="35" value="Validation disclaimer" disabled> <br> <button type="button" class="btn btn-box" onclick="zkSignature.send()">Envoyer le contrat</button> </form> <!--FORMULAIRE DEUXIEME ONGLET--> <div class="row"> <div class="form-group col-sm-6"> <label for="name" class="h4">Société</label> <input type="text" class="form-control" id="societeclient" placeholder="Indiquez la société" required> <div class="help-block with-errors"></div> </div> <div class="row"> <div class="form-group col-sm-6"> <label for="name" class="h4">Société</label> <input type="text" class="form-control" id="societeclient" placeholder="Indiquez la société" required> <div class="help-block with-errors"></div> </div> <div class="row"> <button type="submit" id="form-submit" class="btn btn-box">Envoyer</button> <div id="msgSubmit" class="h3 text-center hidden"></div> <div class="clearfix"></div> </div>

Pour le premier formulaire, il y a un JS

En voici le résumé

Code : Tout sélectionner

send : function(){ var societe = document.getElementById('societe').value; var adresse = document.getElementById('adresse').value; dataform.innerHTML = '<input type="text" name="societe" value="' + societe + '"/>' + '<input type="text" name="adresse" value="' + adresse + '"/>' +
Et un fichier php (toujours pour le premier formulaire)

Code : Tout sélectionner

$societe = $_POST["societe"]; $adresse = $_POST["adresse"]; if( (!isset($_POST["email"])) || ($to == "[email protected]" ) || ($replyemail == "[email protected]")|| ($to == "" )){ echo("<p>Incorrect email address...</p>"); echo "<a href='#'>Complétez le formulaire</a>"; exit; } $subject = "Votre texte"; $curdir = dirname($_SERVER['REQUEST_URI']) . "/"; $dir = $_SERVER['SERVER_NAME'] . $curdir; $urlonly = geturlonly(); $body = " <p>$societe</p> <p>$adresse</p>
Pour le deuxième formulaire, il n'y a qu'un fichier php

Code : Tout sélectionner

<?php header('Content-Type: text/html; charset=utf-8'); $errorMSG = ""; // NAME if (empty($_POST["nomclient"])) { $errorMSG = "Name is required "; } else { $nomclient = $_POST["nomclient"]; } // Prenom if (empty($_POST["prenomclient"])) { $errorMSG = "Prenom is required "; } else { $prenomclient = $_POST["prenomclient"]; } $Entete = 'MIME-Version: 1.0' . "\r\n"; $Entete .= 'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" . 'Content-Disposition: inline'. "\r\n" . 'Content-Transfer-Encoding: 7bit'." \r\n" . 'X-Mailer:PHP/'.phpversion(); $EmailTo = "mail"; $Subject = "Vous avez un nouveau message "; // prepare email body text $Body = ""; $Body .= "Nom du client : \n>" .$nomclient; $Body .= "\n"; $Body .= "Prenom du client : \n>" .$prenomclient; // send email $entete = 'MIME-Version: 1.0' . "\r\n"; $entete .= 'Content-type: text/html; charset=utf-8' . "\r\n"; $entete .= 'From: ' . $_POST['email'] . "\r\n"; $success .= mail($EmailTo, $Subject, $Body, $Entete, "From:".$email); // redirect to success page if ($success && $errorMSG == ""){ echo "success"; }else{ if($errorMSG == ""){ echo "Something went wrong :("; } else { echo $errorMSG; } } ?>
Merci d'avance pour les pistes et aides ;)

Bonne journée.

Re: Copier la valeur d’un champ dans un autre

par wagscd » 09 mai 2019, 16:55

Bonjour Spols,

Je te remercie pour ton aide et tes explications.

Là, suis complètement largué.

Je vais essayer de te faire un code un peu nettoyé parce que c'est pleins de fonctions et de choses dans tous les sens, ça va prendre des pages ;)

Je ferai ça pendant le week end, trop de travail qui doit être fini d'ici demain.

Merci beaucoup pour ton temps et ton aide.

Re: Copier la valeur d’un champ dans un autre

par Spols » 09 mai 2019, 08:34

que tes deux formualires sont sur le même fichier j'ai bien compris, mais c'est le traitement php de tes formulaire qui est dans un fichier séparé d'après ce que je comprends. et c'est là que se situe le problème.

La super globale $_POST contient toute les données d'u!n formulaire envoyée avec la méthode POST mais seulement lors du premier chargement de la page de traitement. à la fin de ce script $_POST est vidé par PHP. C'est pourquoi je te conseille d'utiliser $_SESSION qui dure le temps d'une session.

ce que tu appel déclaration de variable est utile que si tu utilise ces variables par la suite.
tu peux utiliser $societe par exemple et donc il faut avoir déclarer ta variable mais tu peux aussi utiliser $_POST['societe'] ou $_SESSION['societe'] directement dans le code.

montre nous tout ton code de formulaire et de traitement ca évitera des suppositions.

Re: Copier la valeur d’un champ dans un autre

par wagscd » 08 mai 2019, 16:47

J'ai du mal m'expliquer.

Les 2 formulaires sont bien dans le même fichier HTML.

Je dois donc mettre

Code : Tout sélectionner

<label for="name" class="h4">Société</label> <input class="form-control" type="text" id="societeclient" placeholder="Indiquez la société" required value="<?php if(!empty($_POST['societe']) echo $_POST['societe']; ?>">
Mais mes questions .....

- Est ce qu'avec ce code, l'utilisateur peut quand même changer ce qui a été mis automatiquement ?
- J'imagine qu'il faut que je déclare dans mon fichier formulaire.html devenu .PHP les variables.

Je fais ça au début du fichier

Code : Tout sélectionner

$societe = $_POST["societe"];
?

Merci



PS : Je viens d'essayer de ce que j'ai indiqué mais ça ne fonctionne pas du tout.
La page ne charge même pas.

J'ai mis ceci dans l'head

Code : Tout sélectionner

<?php $societe = $_POST["societe"]; ?>
J'imagine que je dois démarrer le fichier par <?php mais alors j'ai une tonne d'erreur dans ma page.

Et bien entendu, le code que tu m'as conseillé.

Dans ce code, j'ai un message d'erreur :) unexpected echo (T_Echo) et google ne m'aide pas sur ce coup là :(

Re: Copier la valeur d’un champ dans un autre

par Spols » 08 mai 2019, 15:57

si ton traitement de formulaire est dans un autre fichier que ton html, cela ne fonctionnera pas.

il faut soit tout grouper dans un seule fichier soit utiliser des variable de session par exemple.

la 2émé solution est plus simple à expliquer.
en tout début des 2 fichiers avant la moindre ligne d'html (même pas un retour à la ligne)
ajouter
<?php session_start();?>
afin de démarrer une session
dans le fichier de traitement au moment ou tu récupère $_POST['societe'], définir les variable de session correspondante
$_SESSION['societe'] = $_POST['societe'];

et dans ton formulaire html que tu transformera en php mon code convient si tu change _POST en _SESSION

Re: Copier la valeur d’un champ dans un autre

par wagscd » 08 mai 2019, 14:58

Encore un grand merci pour le temps passer à m'aider.

Donc si je comprends bien, tu me proposes de coller du PHP dans le fichier HTML que je dois donc renommer en PHP ?
La déclaration des variables est dans un autre fichier .PHP.
Est ce que je dois prévoir de déclarer les variables dans l'ancien fichier HTML qui deviendra PHP ?

Merci ;)

Re: Copier la valeur d’un champ dans un autre

par Spols » 08 mai 2019, 14:44

essaye en 2eme formulaire ceci :
<label for="name" class="h4">Société</label>
<input class="form-control" type="text" id="societeclient" placeholder="Indiquez la société" required value="<?php if(!empty($_POST['societe']) echo $_POST['societe']; ?>">
ainsi lors de la création du second formulaire, si le premier a été complété, $_POST['societe'] contient la valeur rentrée dans le champs société mais n'éxiste pas sinon. le code donné vérifie si la variable éxiste et si c'est le cas retourne la valeur.

En effet il ne faut pas utiliser d'id identique sur une même page.

Re: Copier la valeur d’un champ dans un autre

par wagscd » 08 mai 2019, 12:42

Re bonjour Spols,

La notion de rechargement de page m'échappe mais bon..... Comme ça sera toujours le même principe de codage que je vais employer, il me reste juste à retenir que c'est du rechargement (j'essaierai de comprendre plus tard ;) )

Effectivement moyennement claire pour mes faibles connaissances.

C'est en fait la même base sur laquelle tu m'as aidé concernant les cases à cocher (encore un grand merci, je viens de finir le code et c'est top)

Le code html du premier formulaire.

Code : Tout sélectionner

<label for="societe" class="h4">Société</label> <input class="form-control" type="text" id="societe" size="35" placeholder="Société" autocomplete="on">
Le code html du deuxième formulaire dans la même page html

Code : Tout sélectionner

<label for="name" class="h4">Société</label> <input class="form-control" type="text" id="societeclient" placeholder="Indiquez la société" required>
Donc première question

- Faut il que l'id soit le même ? J'imagine que non sinon ça va créer une erreur.

Et ensuite, je suis dans la pampa complète concernant le (value="VALUE")
Où dois je mettre ce code ?
Et aussi, en mettant ce code, est il quand même possible d'utiliser ce 2ème formulaire sans avoir complété le 1er ?

Merci

Re: Copier la valeur d’un champ dans un autre

par Spols » 08 mai 2019, 11:46

donc il y a rechargement de page donc c'est la solution php qu'il faut envisager. lors de la création de ton formulaire, tu peux lui donné des valeur par défaut (value="VALUE") que tu puise depuis $_POST['VALUE']

si c'est pas claire donne nous un peu plus de ton code.

Re: Copier la valeur d’un champ dans un autre

par wagscd » 08 mai 2019, 11:04

je suis pas sur que ce soit javascript, ca ne correspond pas à ta description. Y a t il un rechargelment de page ?
En cliquant ça passe d'une page html vers la page php qui traine l'envoi du mail.

Re: Copier la valeur d’un champ dans un autre

par Spols » 08 mai 2019, 08:16

je suis pas sur que ce soit javascript, ca ne correspond pas à ta description. Y a t il un rechargelment de page ?

Re: Copier la valeur d’un champ dans un autre

par wagscd » 07 mai 2019, 17:58

Re bonjour Spols,

J'ai bien remarqué que c'est du cold case ce message mais c'est tellement similaire.....

L'envoi du formulaire : le formulaire va vers la page .php de traitement où apparaît un texte et un lien .....

Donc javascript dans ce cas...

Est il pas possible de coder du js dans la page Html pour qu'à chaque changement d'imput par l'utilisateur, le copier du texte se fasse ?

Merci