Plusieurs "submit" dans une meme page ?

Plusieurs "submit" dans une meme page ? - HTML/CSS - Programmation

Marsh Posté le 09-10-2006 à 23:23:22    

:hello:  
Legèrement burne en html, voilà mon ptit soucis...
En restant simple (seulement html) est il possible d'avoir 2 boutons de type "submit" qui ne feront par la meme action ?
 
Le probleme est la redondance du code :
<form enctype="multipart/form-data" action="http://www.aaaa.com/mail.php" method="post">
<form action="https://www.bbbb.com/cgi-bin/webscr" method="post">
 
 
Est ce qu'on peut renommer un des boutons, ou associer une action au bon bouton pour qu'ils ne soient pas en conflit ?
Le truc c'est que je poste tout ca sur l'equivalent d'un forum acceptant du html (un portail en fait quoi...) donc ma liberté d'action n'est pas enorme...
 
Merci d'avance de pas faire partir ca en kamoulox (j'ai un peu utilisé la fonction recherche) :)
 
 [:brainwasher]

Reply

Marsh Posté le 09-10-2006 à 23:23:22   

Reply

Marsh Posté le 09-10-2006 à 23:51:15    

un formulaire ne peut avoir qu'une seule action et il ne peut pas y avoir d'imbrication de formulaire. Donc il n'est pas possible de dire que le formulaire envéra les données à l'adresse indiqué par l'action de telle ou telle balise "<form>".
Par contre, ce qui doit être possible de faire c'est de changer la valeur du action du formulaire quand on clique sur tel ou tel bouton. Ca n'est plus des boutons de validation au sens html et ca ne marchera pas de toute maniére pour 10% des visiteurs potentiels. (les fameux 10% qui ont javascript de désactivé dans leur navigateur.) Je ne suis pas assez fort pour te pondre le code javascript dans la seconde.
Je te laisse donc chercher un peu dans cette direction là.
 
Bonne recherche.

Reply

Marsh Posté le 10-10-2006 à 09:21:28    

tu as un bouton qui est un vrai submit et un de type  
<input ytpe="button" onClick="this.form.action='https://www.bbbb.com/cgi-bin/webscr'" value="Valid deux >
 
sinon, tu peux aussi faire deux formulaire distincts sur la meme page

Reply

Marsh Posté le 10-10-2006 à 10:02:24    

flo850 a écrit :

tu as un bouton qui est un vrai submit et un de type  
<input ytpe="button" onClick="this.form.action='https://www.bbbb.com/cgi-bin/webscr'" value="Valid deux >


Fauut rajouter le submit du form quelque part ;)
 

flo850 a écrit :

sinon, tu peux aussi faire deux formulaire distincts sur la meme page


Moi je partirais plutot de là! Mais j'imagine qu'il a en fait les mêmes champs dans ces deux formulaires. Du coup en js, je ferais une recopie des champs du 1er dans le 2eme mais en hidden. Ensuite on rajoute un onchange sur chaque input du 1er pour qu'il recopie sa valeur dans le correspondant du 2eme et zouuu roulez jeunesse!
Un truc dans le genre:

Code :
  1. window.onload = function (e){
  2.     //on nettoye le formulaire 2
  3.     var inputsNodes = document.getElementById('f2').getElementsByTagName('input');
  4.     for(var i=inputsNodes.length-1; i>=0; i--){
  5.       if ( inputsNodes[i].getAttribute('type') != 'submit'){
  6.         document.getElementById('f2').removeChild(inputsNodes[i]);
  7.       }
  8.     }
  9.     //on recopie le formulaire 1 dans le 2
  10.     inputNodes = document.getElementById('f1').getElementsByTagName('input');
  11.     for(var i=0; i<inputNodes.length; i++){
  12.       if ( inputNodes[i].getAttribute('type') != 'submit'){
  13.         var dupNode = document.createElement('input');
  14.         dupNode.setAttribute('type', 'hidden');
  15.         dupNode.setAttribute('name', inputNodes[i].name);
  16.         document.getElementById('f2').appendChild(dupNode);
  17.         // ajout de onchange sur le input de f1
  18.         inputNodes[i].onchange = function (e){
  19.           var tNodes = document.getElementById('f2').getElementsByTagName('input');
  20.           for(var j=0; j<tNodes.length; j++){
  21.             if ( this.getAttribute('name') == tNodes[j].getAttribute('name')){
  22.               tNodes[j].value = this.value;
  23.               return true;
  24.             }
  25.           }
  26.         }
  27.       }
  28.     }
  29.   }


et du coup dans le html

Code :
  1. <form id="f1" enctype="multipart/form-data" action="http://www.aaaa.com/mail.php" method="post">
  2.    <input type="text" name="pouet1" value="">
  3.    <input type="text" name="pouet2" value="">
  4.    <input type="text" name="pouet3" value="">
  5.    <input type="submit" value="valider1"/>
  6. </form>
  7. <form id="f2" action="https://www.bbbb.com/cgi-bin/webscr" method="post">
  8.    <input type="text" name="pouet1" value="">
  9.    <input type="text" name="pouet2" value="">
  10.    <input type="text" name="pouet3" value="">
  11.    <input type="submit" value="valider2"/>
  12. </form>


 
Et ça marcherait que le visiteur ait ou n'ait pas le js activé!

Reply

Marsh Posté le 10-10-2006 à 10:34:26    

anapajari > Sauf que s'il n'a pas de js activé, son second formulaire partira tout vide sans que le visiteur ne comprenne pourquoi.
 
En fait, la seule façon sure à 100% c'est d'avoir un script serveur qui saura quel serveur appelé derriére à partir de la valeur du bouton utilisé pour valider le formulaire.

Reply

Marsh Posté le 10-10-2006 à 10:36:07    

omega2 a écrit :

anapajari > Sauf que s'il n'a pas de js activé, son second formulaire partira tout vide sans que le visiteur ne comprenne pourquoi.


Si le visiteur n'a pas le js activé, il y a deux formulaires différents à l'écran, chacun avec une action différente [:spamafote]
 

omega2 a écrit :

En fait, la seule façon sure à 100% c'est d'avoir un script serveur qui saura quel serveur appelé derriére à partir de la valeur du bouton utilisé pour valider le formulaire.


D'accord à 200%, sauf que guepe ne semble pas en mesure de pouvoir utiliser un script serveur!

Reply

Marsh Posté le 10-10-2006 à 10:38:16    

anapajari a écrit :

Si le visiteur n'a pas le js activé, il y a deux formulaires différents à l'écran, chacun avec une action différente [:spamafote]

ha oui, autant pour moi.

Reply

Marsh Posté le 10-10-2006 à 10:56:52    

anapajari a écrit :

Fauut rajouter le submit du form quelque part ;)
 


faut que j'arrete de repondre avant le café  :sweat:  
 
en plus ta solution est plus propre

Reply

Marsh Posté le 11-10-2006 à 22:16:10    

Ouaip,
merci a tous de vos reponses rapides...
En effet pas si simple comme probleme si on veut rester en html... J'etudie un peu le script JS, je vois si ca fonctionne sur ma page (meme pas sur en fait... mais ya pas de raison) et je vous donne des nouvelles !
 
Merci de vous pencher sur mon cas :)
 
(au fait, ya 1 formulaire complet avec bouton submit, et un autre qui n'est pas tout a fait un formumlaire, mais un bouton direct (type lien, mais en fait c'est du paypal... je ne peux guere modifier son code.) Bref, je regarde ca et je vous donne plus de précisions :)

Reply

Marsh Posté le 12-10-2006 à 08:41:23    

On peut utiliser deux boutons submit :

<form>
...
<input type="submit" name="pouet" value="Tagada" />
<input type="submit" name="pouet" value="Pouet" />


Et on retrouve dans les données POST un élément "pouet" avec la valeur spécifiée dans l'attribut value.
 
On aurait aussi pu faire :

<button name="pouet" value="zorglub">Pouet</button>
<button name="pouet" value="applejack">Tagada</button>


Beaucoup plus propre, mais évidemment pas géré par IE... On se rend compte d'ailleurs que ça devient vraiment grave, le bouzin n'étant même pas capable de gérer la base de l'HTML4

Reply

Marsh Posté le 12-10-2006 à 08:41:23   

Reply

Marsh Posté le 12-10-2006 à 10:10:28    

FlorentG a écrit :

On peut utiliser deux boutons submit :

<form>
...
<input type="submit" name="pouet" value="Tagada" />
<input type="submit" name="pouet" value="Pouet" />


Et on retrouve dans les données POST un élément "pouet" avec la valeur spécifiée dans l'attribut value.
 
On aurait aussi pu faire :

<button name="pouet" value="zorglub">Pouet</button>
<button name="pouet" value="applejack">Tagada</button>


Beaucoup plus propre, mais évidemment pas géré par IE... On se rend compte d'ailleurs que ça devient vraiment grave, le bouzin n'étant même pas capable de gérer la base de l'HTML4


d'accord à 200% mais ça ne résoud pas son problème :D
[si j'ai tout compris]Il ne cherche pas a avoir deux submits différents, qui déclencheraient deux traitements différents cotés serveur, mais le même formulaire donc le action varie en fonction du bouton cliqué ...[/si j'ai tout compris]

Reply

Marsh Posté le 12-10-2006 à 11:13:48    

ah ok

Reply

Marsh Posté le 12-10-2006 à 12:14:39    

CA serait tellement plus simple de faire comme FlorentG dit avec juste un tout petit script php derrière qui fait envoit un header() différent selon la valeur de pouet :)
 
ESt ce réellement impossible guepe :??:

Reply

Marsh Posté le 12-10-2006 à 12:30:26    

leflos5 a écrit :

CA serait tellement plus simple de faire comme FlorentG dit avec juste un tout petit script php derrière qui fait envoit un header() différent selon la valeur de pouet :)
 
ESt ce réellement impossible guepe :??:


plus simple bof bof!!!Du coup t'es obligé de te servir de cURL pour transmettre des params POST à l'autre serveur... C'est pas forcément simple à faire.
Par contre je suis d'accord que cette solution serait beaucoup beaucoup plus propre!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed