Line: submit form + lien vers autre page...

@ybee

Membre expert
Club iGen
18 Mai 2001
1 039
14
43
Embourg, Belgique
antoine.olbrechts.eu
Hello à tous,

Sorry pour le titre peu clair, je savais pas comment le formuler ;-)

J'ai une page avec un formulaire. De façon très classique, il y a bien entendu un bouton "Submit" en bas du formulaire.

MAIS

L'utilisateur peut cliquer sur un lien et consulter d'autre informations le concernant. J'aimerais que lorsqu'il choisit de cliquer sur ce lien, cela valide le formulaire pour enregistrer ses infos, et que cela le renvoie vers cette autre page. Ceci permet qu'il ne perde pas les informations qu'il a entré, si il est tenté de cliquer sur le lien pour voir d'autres infos...

Je sais pas si je suis clair, mais d'ores et déjà merci pour votre aide :D
 
Hello à tous,

Sorry pour le titre peu clair, je savais pas comment le formuler ;-)

J'ai une page avec un formulaire. De façon très classique, il y a bien entendu un bouton "Submit" en bas du formulaire.

MAIS

L'utilisateur peut cliquer sur un lien et consulter d'autre informations le concernant. J'aimerais que lorsqu'il choisit de cliquer sur ce lien, cela valide le formulaire pour enregistrer ses infos, et que cela le renvoie vers cette autre page. Ceci permet qu'il ne perde pas les informations qu'il a entré, si il est tenté de cliquer sur le lien pour voir d'autres infos...

Je sais pas si je suis clair, mais d'ores et déjà merci pour votre aide :D
tu peux pas faire en sorte que le lien s'ouvre dans une popup ou une nouvelle fenêtre ??

si tu veux respecter les standards XHTML, il n'y a plus d'attibut target dans a, donc faut le faire en javascript :

Bloc de code:
<a href="info.html" onclick="window.open(this.href); return false">Info compl&#233;mentaires</a> (s'ouvre dans une nouvelle fen&#234;tre)*

* tu peux remplacer le texte par une petite image comme sur wikipedia (voir section "liens externes") par exemple, avec css et :after appliqu&#233; sur une classe sp&#233;cifique aux liens dans une nouvelle fen&#234;tre.

[Hors sujet mais important] pour les gens qui veulent utiliser cette m&#233;thode pour ouvrir les liens dans une nouvelle fen&#234;tre tout en respectant les standards, N'EN ABUSEZ PAS !! il ne faut utiliser cette m&#233;thode que dans des cas o&#249; il y en a vraiment besoin (comme ici), le fait que l'attribut traget ai disparu c'ets pour de bonne raison, pas pour &#234;tre remplac&#233; par du javascript ![/Hors sujet mais important]



Si tu ne veux pas ouvrir &#231;a dans une nouvelle fen&#234;tre, tu peux faire comme &#231;a :
Bloc de code:
<a href="info.html" onclick="document.getElementById('id_du_formulaire').submit();">Info compl&#233;mentaires</a>
mais je me demande si &#231;a ne va pas charg&#233; la page qui est dans l'attibut method="" du form...

:zen:
 
Si j'ai bien compris ce que tu veux faire, &#231;a serait peut-&#234;tre mieux de faire un formulaire sous forme d'assistant non? En deux ou trois &#233;tapes avec &#224; chaque fois la possibilit&#233; de revenir en arri&#232;re pour v&#233;rifer si tout est correct et aussi un petit r&#233;sum&#233; de l'&#233;tape pr&#233;c&#233;dente sur l'&#233;cran en cours&#8230; ;) Ou alors les popups accessibles comme p4bl0 t'as expliqu&#233;&#8230;

Attention : si tu utilise javascript pour faire des choses dans les formulaires n'oublies pas que'il doit &#234;tre une couche suppl&#233;mentaire dans la conception de ton site et que tout doit fonctionner sans car environ 15&#37; des internautes n'ont pas javascript activ&#233;.
 
Hmmmm &#224; tester...

Et ceci ?
Un XMLHttpRequest qui fais tourner le script d'enregistrement des donn&#233;es de fa&#231;on invisible, et si elle se passe bien, la fonction renvoie sur la page que l'utilisateur est sens&#233; atteindre lorsqu'il clique sur le lien?
Pour &#231;a regarde xajax, c'est super simple &#224; mettre en place.

apr&#232;s tu n'aura plus qu'&#224; faire un truc du genre
Bloc de code:
<a href="info.html" onclick="xajax_la_fonction_php_denregistrement_des_donn&#233;es(lesdonn&#233;esduform);">Info compl&#233;mentaires</a>
ou alors
Bloc de code:
<a href="info.html" onclick="submit_form();">Info compl&#233;mentaires</a>
avec submit_form() une fonction javascript qui r&#233;cup&#232;re les donn&#233;es du formulaire et les envoi &#224; xajax_la_fonction_php_denregistrement_des_donn&#233;es(...)

Tu va voir c'est simple &#224; mettre en oeuvre, lis un peu la doc ou alors j'ai fais un tuto pour une utilisation particuli&#232;re : une recherche live avec AJAX (via xajax).
Et il y a un tuto sur le Site du Z&#233;r0

;)

EDIT : &#224; gloup gloup : ne post plus !!!! tu as 1337 posts, la classe :rateau:
1337_gloupgloup.png
 
J'arrive &#224; quelque chose de sympa, mais j'ai encore une question... :

Le formulaire est donc valid&#233; de deux fa&#231;ons:

- Via le lien, j'ai mis une action dessus
- Via le bouton traditionnel d'envoi en bas de formulaire.


Ce qui serait sympa, c'est que selon la m&#233;thode de validation, la fin de mon script soit diff&#233;rente. Je m'explique: si l'utilisateur a cliqu&#233; sur le lien, le script enregistre toutes les donn&#233;es et &#224; la fin on a un redirect vers la page1. Si il a cliqu&#233; sur le bouton Submit, le redirect se fait vers la page2

Il faudrait une variable cach&#233;e qui, selon l'endroit o&#249; a cliqu&#233; l'utilisateur, d&#233;finisse la redirection vers 1 ou vers 2... Mais j'avoue que je s&#232;che un peu l&#224;, apr&#232;s une nuit de codage j'ai le cerveau un peu embrum&#233; :D
 
J'arrive &#224; quelque chose de sympa, mais j'ai encore une question... :

Le formulaire est donc valid&#233; de deux fa&#231;ons:

- Via le lien, j'ai mis une action dessus
- Via le bouton traditionnel d'envoi en bas de formulaire.


Ce qui serait sympa, c'est que selon la m&#233;thode de validation, la fin de mon script soit diff&#233;rente. Je m'explique: si l'utilisateur a cliqu&#233; sur le lien, le script enregistre toutes les donn&#233;es et &#224; la fin on a un redirect vers la page1. Si il a cliqu&#233; sur le bouton Submit, le redirect se fait vers la page2

Il faudrait une variable cach&#233;e qui, selon l'endroit o&#249; a cliqu&#233; l'utilisateur, d&#233;finisse la redirection vers 1 ou vers 2... Mais j'avoue que je s&#232;che un peu l&#224;, apr&#232;s une nuit de codage j'ai le cerveau un peu embrum&#233; :D
Bloc de code:
<form method="bidule.php" ...>
...
<input type="hidden" name="nextpage" id="nextpage" value="page2.html" />
...
</form>
...
<a href="lelienquivalide" onclick="document.getElementById('nextpage').value='page1.html'; ton_action_de_validation_du_form();">lalala</a>

Ensuite le traitement du formulaire redirige vers la page contenu dans nextpage (en php $_POST['nextpage'] par exemple).