OVH Cloud OVH Cloud

Ouvrir un autre formulaire et transférer des données

10 réponses
Avatar
Jean-Marc
Salut à tous,

Mon site est divisé en 2 grands secteurs (l'Europe et l'Amérique du Nord).
Dans chaque secteur un formulaire permet aux clients de demander une
brochure d'information.
Il m'arrive TRES souvent que des clients des USA passent par le secteur
européen et aboutissent donc sur le formulaire européen.
Mon problème est que sur le formulaire américain j'ai une série de
vérifications qui sont faites et qui ne sont pas faites sur le formulaire
européen. Il y a aussi un champs très important en plus sur le formulaire
américain.

Je voudrais donc que si un client encode, dans le formulaire européen, "USA"
ou "Canada" dans le champs pays, le formulaire américain remplace le
formulaire européen (sans ouvrir une nouvelle fenêtre), mais surtout que les
valeurs déjà encodées dans le formulaire européen soient introduites dans
les champs du formulaire américain (Les champs communs ont les mêmes noms
dans les 2 formulaires).

Je n'arrive pas à écrire je code javascript qui correspondrait au onchange
du champs pays pour faire cela.

Merci de vos z'avis z'avisés,

Jean-Marc

10 réponses

Avatar
Thibault
Jean-Marc wrote:
Salut à tous,


Salut,

Mon site est divisé en 2 grands secteurs (l'Europe et l'Amérique du Nord).
Dans chaque secteur un formulaire permet aux clients de demander une
brochure d'information.
Il m'arrive TRES souvent que des clients des USA passent par le secteur
européen et aboutissent donc sur le formulaire européen.
Mon problème est que sur le formulaire américain j'ai une série de
vérifications qui sont faites et qui ne sont pas faites sur le formulaire
européen. Il y a aussi un champs très important en plus sur le formulaire
américain.



A priori le mieux pour faire ca serait d'utiliser un langage dynamique
tel que PHP/Perl/ASP afin de vérifier de quel pays viens l'utilisateur,
et le cas échéant , renvoyer vers la bonne page (contenant le bon
formulaire directement) ...

Je voudrais donc que si un client encode, dans le formulaire européen, "USA"
ou "Canada" dans le champs pays, le formulaire américain remplace le
formulaire européen (sans ouvrir une nouvelle fenêtre), mais surtout que les
valeurs déjà encodées dans le formulaire européen soient introduites dans
les champs du formulaire américain (Les champs communs ont les mêmes noms
dans les 2 formulaires).


"encode" ? Admettons qu'il tape/écrive ;-)
Pour moi la tu as 2 solutions, et les deux ne sont pas forcement simple.
Ton choix devra se faire selon la différence entre les formulaire
Européen/Américain, et en ta maitrise du Javascript/PHP :

1°/ Tu n'utilises pas de langage dynamique.
Le fait de ne pas utiliser de langage dynamique, t'empeche de récupérer
sur ton site un résultat de formulaire, et tu ne peux donc pas traiter
un cas ou: L'utilisateur tape "Canada", et ca redirige automatiquement
la page avec toutes les autres valeurs, sur le formulaire américain.
Tu serais donc obligé selon moi, je faire en fait, un seul et meme
formulaire, avec des champs cachés, que tu n'affiche que le cas échéant ...
Ex:
<form name="monform">
<input type="text name="zipcode" style="visibility:hidden" />
<input type="text" name="pays" onKeypress="checkPays()">
</form>
Et ta fonction javascript checkpays() mettrait le
document.monform.zipcode.style.visibility='visible'; qui ferait afficher
la case du zipcode si c'est Canada par exemple ...

Donc la on voit très vite que si ton formulaire est un peu compliqué, et
qu'il y a bcp de champs, ca va très vite devenir ingérable ...


2°/ Tu utilises un langage dynamique.
Alors soit tu suis ce que j'ai dit au debut (c'est a dire checker la
provenance du visiteur et le dispatché sur le bon formulaire)
Soit tu attend que l'utilisateur rentre effectivement un nom de pays
spécifique avant de le redirigier ...
qqch dans ce style :
Ex:
<form name="monform">
<input type="text" name="pays" onKeypress="checkPays()">
</form>
et ou ton checkpays ferait "
if (document.monform.pays.value=='Canada') {
document.monform.action='formulaireusa.php';
document.monform.submit();
}
"
Ce qui permettrait de renvoyer toutes les valeurs déjà rentrées au
formulaire américain.
Bien sur la il faut avoir des notions de PHP pour récupéré, mais c'est
pas encore trop compliqué.

3°/ Tordu mais ca peut marcher :-)
Faire en fait dans ton onchange :
if (value=='Canada') {

document.href.location='formulaireus.html?nom='+document.monform.nom.value+'&prenom='+document.monform.nom.value...;

}
Et dans ton formulaireus.html tu récupère l'url (toujours en
javascript), tu parses à la main les arguments key/value de l'url, et tu
réattribue les valeurs dans les bons champs :-)


Je n'arrive pas à écrire je code javascript qui correspondrait au onchange
du champs pays pour faire cela.


Voila, ya vraiment à prendre et a laisser dans tout ca ... la meilleure
solution etant évidemment la premiere enoncée ... :-)


Merci de vos z'avis z'avisés,

Jean-Marc


--

A+
Thibault

Avatar
Jean-Marc
Merci de tes idées,
C'est en effet à ça que je pensais, mais je n'arrivais pas à éclaircir mon
idée, à la rendre plus concise.

Jean-Marc


"Thibault" a écrit dans le message de
news:4152f631$0$17740$
Jean-Marc wrote:
Salut à tous,


Salut,

Mon site est divisé en 2 grands secteurs (l'Europe et l'Amérique du
Nord).


Dans chaque secteur un formulaire permet aux clients de demander une
brochure d'information.
Il m'arrive TRES souvent que des clients des USA passent par le secteur
européen et aboutissent donc sur le formulaire européen.
Mon problème est que sur le formulaire américain j'ai une série de
vérifications qui sont faites et qui ne sont pas faites sur le
formulaire


européen. Il y a aussi un champs très important en plus sur le
formulaire


américain.



A priori le mieux pour faire ca serait d'utiliser un langage dynamique
tel que PHP/Perl/ASP afin de vérifier de quel pays viens l'utilisateur,
et le cas échéant , renvoyer vers la bonne page (contenant le bon
formulaire directement) ...

Je voudrais donc que si un client encode, dans le formulaire européen,
"USA"


ou "Canada" dans le champs pays, le formulaire américain remplace le
formulaire européen (sans ouvrir une nouvelle fenêtre), mais surtout que
les


valeurs déjà encodées dans le formulaire européen soient introduites
dans


les champs du formulaire américain (Les champs communs ont les mêmes
noms


dans les 2 formulaires).


"encode" ? Admettons qu'il tape/écrive ;-)
Pour moi la tu as 2 solutions, et les deux ne sont pas forcement simple.
Ton choix devra se faire selon la différence entre les formulaire
Européen/Américain, et en ta maitrise du Javascript/PHP :

1°/ Tu n'utilises pas de langage dynamique.
Le fait de ne pas utiliser de langage dynamique, t'empeche de récupérer
sur ton site un résultat de formulaire, et tu ne peux donc pas traiter
un cas ou: L'utilisateur tape "Canada", et ca redirige automatiquement
la page avec toutes les autres valeurs, sur le formulaire américain.
Tu serais donc obligé selon moi, je faire en fait, un seul et meme
formulaire, avec des champs cachés, que tu n'affiche que le cas échéant
...

Ex:
<form name="monform">
<input type="text name="zipcode" style="visibility:hidden" />
<input type="text" name="pays" onKeypress="checkPays()">
</form>
Et ta fonction javascript checkpays() mettrait le
document.monform.zipcode.style.visibility='visible'; qui ferait afficher
la case du zipcode si c'est Canada par exemple ...

Donc la on voit très vite que si ton formulaire est un peu compliqué, et
qu'il y a bcp de champs, ca va très vite devenir ingérable ...


2°/ Tu utilises un langage dynamique.
Alors soit tu suis ce que j'ai dit au debut (c'est a dire checker la
provenance du visiteur et le dispatché sur le bon formulaire)
Soit tu attend que l'utilisateur rentre effectivement un nom de pays
spécifique avant de le redirigier ...
qqch dans ce style :
Ex:
<form name="monform">
<input type="text" name="pays" onKeypress="checkPays()">
</form>
et ou ton checkpays ferait "
if (document.monform.pays.value=='Canada') {
document.monform.action='formulaireusa.php';
document.monform.submit();
}
"
Ce qui permettrait de renvoyer toutes les valeurs déjà rentrées au
formulaire américain.
Bien sur la il faut avoir des notions de PHP pour récupéré, mais c'est
pas encore trop compliqué.

3°/ Tordu mais ca peut marcher :-)
Faire en fait dans ton onchange :
if (value=='Canada') {


document.href.location='formulaireus.html?nom='+document.monform.nom.value+'

&prenom='+document.monform.nom.value...;

}
Et dans ton formulaireus.html tu récupère l'url (toujours en
javascript), tu parses à la main les arguments key/value de l'url, et tu
réattribue les valeurs dans les bons champs :-)


Je n'arrive pas à écrire je code javascript qui correspondrait au
onchange


du champs pays pour faire cela.


Voila, ya vraiment à prendre et a laisser dans tout ca ... la meilleure
solution etant évidemment la premiere enoncée ... :-)


Merci de vos z'avis z'avisés,

Jean-Marc


--

A+
Thibault



Avatar

Jean-Marc wrote:
Salut à tous,


Salut,

3°/ Tordu mais ca peut marcher :-)
Faire en fait dans ton onchange :
if (value=='Canada') {

document.href.location='formulaireus.html?nom='+document.monform.nom.value+'&prenom='+d
(etc etc etc)


Meuh! non !
pareil qu'en 2 (ou presque):
Ex:
<form name="monform" action="formulaireurop.htm" onsubmit="return checkpays();">
<input type="text" name="pays">
</form>
et
checkpays()
if (document.monform.pays.value=='Canada') {
document.monform.action='formulaireusa.htm';
}
return true;
}

tous les ?nom= etc des champs vont suivre automatiquement l'url appelée

Et dans ton formulaireus.html tu récupère l'url (toujours en
javascript), tu parses à la main les arguments key/value de l'url, et tu
réattribue les valeurs dans les bons champs :-)


le truc est ici :
http://perso.wanadoo.fr/coin.des.experts/reponses/faq7_20.htm
ou ?
http://perso.wanadoo.fr/coin.des.experts/reponses/faq7_20.html

Voila, ya vraiment à prendre et a laisser dans tout ca ... la meilleure
solution etant évidemment la premiere enoncée ... :-)


ça c'est quand on peut et qd on sait le faire ;-)


--
******** (enlever/remove [OTER_MOI] du/from reply url) *******
Stéphane MORIAUX : mailto:
Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
http://perso.wanadoo.fr/stephane.moriaux/internet/
**************************************************************


Avatar
Thibault
Jean-Marc wrote:
Merci de tes idées,
C'est en effet à ça que je pensais, mais je n'arrivais pas à éclaircir mon
idée, à la rendre plus concise.

Jean-Marc



"C'est en effet à ça que je pensais" => à quoi ? :-)
--
A+
Thibault

Avatar
Thibault
@SM wrote:

Salut,

3°/ Tordu mais ca peut marcher :-)
Faire en fait dans ton onchange :
if (value=='Canada') {

document.href.location='formulaireus.html?nom='+document.monform.nom.value+'&prenom='+d


(etc etc etc)

Meuh! non !
pareil qu'en 2 (ou presque):
Ex:
<form name="monform" action="formulaireurop.htm" onsubmit="return checkpays();">
<input type="text" name="pays">
</form>
et
checkpays()
if (document.monform.pays.value=='Canada') {
document.monform.action='formulaireusa.htm';
}
return true;
}

tous les ?nom= etc des champs vont suivre automatiquement l'url appelée



Oui effectivment, j'ai oublié ce point ... donc je pense que ca devient
la 2eme meilleure solution :-)


Et dans ton formulaireus.html tu récupère l'url (toujours en
javascript), tu parses à la main les arguments key/value de l'url, et tu
réattribue les valeurs dans les bons champs :-)



le truc est ici :
http://perso.wanadoo.fr/coin.des.experts/reponses/faq7_20.htm
ou ?
http://perso.wanadoo.fr/coin.des.experts/reponses/faq7_20.html


Voila, ya vraiment à prendre et a laisser dans tout ca ... la meilleure
solution etant évidemment la premiere enoncée ... :-)



ça c'est quand on peut et qd on sait le faire ;-)


Certes :-)


--
A+
Thibault


Avatar
Jean-Marc
Suivant ton conseil qui me parait fort judicieux, j'ai écris :

<script type="text/javascript">
<!--
function CheckPays() {
if (document.FormulaireDemandeInfosEuroFr.Pays.value=='Canada') {

document.FormulaireDemandeInfosEuroFr.action='../../America/Francais/Formula
ireInd.php';
}
return true;
}
// -->
</script>


La ligne
document.FormulaireDemandeInfosEuroFr.action='../../America/Francais/Formula
ireInd.php';
ne produit pas l'effet escompté. Il passe au champs suivant et reste sur le
formulaire actuel, pourtant il atteint cette commande (J'ai lis un alert
dans le if pour m'en assurer).
Qu'ai-je mal fait ??



"@SM" a écrit dans le message de
news:

Jean-Marc wrote:
Salut à tous,


Salut,

3°/ Tordu mais ca peut marcher :-)
Faire en fait dans ton onchange :
if (value=='Canada') {


document.href.location='formulaireus.html?nom='+document.monform.nom.value+'


&prenom='+d
(etc etc etc)

Meuh! non !
pareil qu'en 2 (ou presque):
Ex:
<form name="monform" action="formulaireurop.htm" onsubmit="return
checkpays();">

<input type="text" name="pays">
</form>
et
checkpays()
if (document.monform.pays.value=='Canada') {
document.monform.action='formulaireusa.htm';
}
return true;
}

tous les ?nom= etc des champs vont suivre automatiquement l'url appelée

Et dans ton formulaireus.html tu récupère l'url (toujours en
javascript), tu parses à la main les arguments key/value de l'url, et tu
réattribue les valeurs dans les bons champs :-)


le truc est ici :
http://perso.wanadoo.fr/coin.des.experts/reponses/faq7_20.htm
ou ?
http://perso.wanadoo.fr/coin.des.experts/reponses/faq7_20.html

Voila, ya vraiment à prendre et a laisser dans tout ca ... la meilleure
solution etant évidemment la premiere enoncée ... :-)


ça c'est quand on peut et qd on sait le faire ;-)


--
******** (enlever/remove [OTER_MOI] du/from reply url) *******
Stéphane MORIAUX : mailto:
Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
http://perso.wanadoo.fr/stephane.moriaux/internet/
**************************************************************




Avatar
Jean-Marc
J'ai trouvé mon erreur. Comme je voulais que le formulaire change sur
onchange, il fallait que j'ajoute un submit().

Ceci fonctionne bien mieux :
<script type="text/javascript">
<!--
function CheckPays() {
if (document.FormulaireDemandeInfosEuroFr.Pays.value=='Canada') {
alert(document.FormulaireDemandeInfosEuroFr.Pays.value);

document.FormulaireDemandeInfosEuroFr.action='../../America/Francais/Formula
ireInd.php';
document.FormulaireDemandeInfosEuroFr.submit();
}
}
// -->
</script>

Je vais maintenant copier les valeurs des champs.

Merci à vous,

Jean-Marc

"Jean-Marc" a écrit dans le message de
news:HMD4d.95$
Suivant ton conseil qui me parait fort judicieux, j'ai écris :

<script type="text/javascript">
<!--
function CheckPays() {
if (document.FormulaireDemandeInfosEuroFr.Pays.value=='Canada') {


document.FormulaireDemandeInfosEuroFr.action='../../America/Francais/Formula

ireInd.php';
}
return true;
}
// -->
</script>


La ligne

document.FormulaireDemandeInfosEuroFr.action='../../America/Francais/Formula

ireInd.php';
ne produit pas l'effet escompté. Il passe au champs suivant et reste sur
le

formulaire actuel, pourtant il atteint cette commande (J'ai lis un alert
dans le if pour m'en assurer).
Qu'ai-je mal fait ??



"@SM" a écrit dans le message de
news:

Jean-Marc wrote:
Salut à tous,


Salut,

3°/ Tordu mais ca peut marcher :-)
Faire en fait dans ton onchange :
if (value=='Canada') {





document.href.location='formulaireus.html?nom='+document.monform.nom.value+'

&prenom='+d
(etc etc etc)

Meuh! non !
pareil qu'en 2 (ou presque):
Ex:
<form name="monform" action="formulaireurop.htm" onsubmit="return
checkpays();">

<input type="text" name="pays">
</form>
et
checkpays()
if (document.monform.pays.value=='Canada') {
document.monform.action='formulaireusa.htm';
}
return true;
}

tous les ?nom= etc des champs vont suivre automatiquement l'url appelée

Et dans ton formulaireus.html tu récupère l'url (toujours en
javascript), tu parses à la main les arguments key/value de l'url, et
tu



réattribue les valeurs dans les bons champs :-)


le truc est ici :
http://perso.wanadoo.fr/coin.des.experts/reponses/faq7_20.htm
ou ?
http://perso.wanadoo.fr/coin.des.experts/reponses/faq7_20.html

Voila, ya vraiment à prendre et a laisser dans tout ca ... la
meilleure



solution etant évidemment la premiere enoncée ... :-)


ça c'est quand on peut et qd on sait le faire ;-)


--
******** (enlever/remove [OTER_MOI] du/from reply url) *******
Stéphane MORIAUX : mailto:
Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
http://perso.wanadoo.fr/stephane.moriaux/internet/
**************************************************************








Avatar

... donc je pense que ca devient
la 2eme meilleure solution :-)


Je dois avouer que ça m'a bien fait rire ! :-))


--
******** (enlever/remove [OTER_MOI] du/from reply url) *******
Stéphane MORIAUX : mailto:
Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
http://perso.wanadoo.fr/stephane.moriaux/internet/
**************************************************************

Avatar

J'ai trouvé mon erreur. Comme je voulais que le formulaire change sur
onchange, il fallait que j'ajoute un submit().


c'est bien pourquoi (que très simplenent)
on fait :
<form action="blabla.php" onsubmit=" return ChekfPays();" >

et par le clic sur bouton [Envoi]
ça vérifie le pays et change si besoin l'url de postage du formulaire

sans autre onchange ou onclick

function CheckPays() {
with(document.FormulaireDemandeInfosEuroFr) {
if(Pays.value=='Canada')
action='../../America/Francais/FormulaireInd.php';
}
return true;
}

Ceci fonctionne bien mieux :


Mais paraît moins "élégant" ;-))

<script type="text/javascript">
<!--
function CheckPays() {
if (document.FormulaireDemandeInfosEuroFr.Pays.value=='Canada') {
alert(document.FormulaireDemandeInfosEuroFr.Pays.value);

document.FormulaireDemandeInfosEuroFr.action='../../America/Francais/Formula
ireInd.php';
document.FormulaireDemandeInfosEuroFr.submit();
}
}


function CheckPays() {
with(document.FormulaireDemandeInfosEuroFr) {
if(Pays.value=='Canada') {
alert(Pays.value);
action='../../America/Francais/FormulaireInd.php';
submit();
}
}
}

// -->
</script>

Je vais maintenant copier les valeurs des champs.


Bon courage ;-)


Merci à vous,


de nada

--
******** (enlever/remove [OTER_MOI] du/from reply url) *******
Stéphane MORIAUX : mailto:
Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
http://perso.wanadoo.fr/stephane.moriaux/internet/
**************************************************************

Avatar
Pierre Goiffon
"Jean-Marc" a écrit dans le message de
news:85C4d.90$
Mon site est divisé en 2 grands secteurs (l'Europe et l'Amérique du
Nord). Dans chaque secteur un formulaire permet aux clients de
demander une brochure d'information.
Il m'arrive TRES souvent que des clients des USA passent par le
secteur européen et aboutissent donc sur le formulaire européen.
Mon problème est que sur le formulaire américain j'ai une série de
vérifications qui sont faites et qui ne sont pas faites sur le
formulaire européen.


Je ne sais pas si vous adoptez le bon raisonnement. Quels sont ces contrôles
qui ne sont pas du côté européen ? S'agit-il de paramètres régionaux ?
(formats de dates, ...)