autosubmit et confirmation d'un select

guy
Eléphant du PHP | 134 Messages

13 juin 2005, 17:14

Bonjour
j'ai un formulaire comme ceci
<form action="payement_suite.php" method="post" name="payement">
					<select name="methode">
					<option value="liquide">liquide</option>
					<option value="virement">virement</option>
					<option value="paypal">paypal</option>
					<option value="carte">Carte banquaire</option>
					<option value="visa">Visa</option>
					</select>
					<input type="hidden" name="num" value="<?php echo "$num"; ?>" />
</form>
je souhaiterais que lorsque mon utilisateur selectionne un des choix
1 le formulaire soit automatiquement posté
2 avoir une boite de confirmation qui me rapelle le choix effectué du style
Est te vous sur de choissir visa ?
et que ensuite le formulaire soit posté

l'option 2 est bien entendu celle que je recherche le plus la 1 etant une methode de replis en cas d'impossibilité de la 1
;)
merci
Guy

Eléphant du PHP | 92 Messages

13 juin 2005, 17:30

tu fais une fonction javascript qui validera ton formulaire
Cela peut etre du style:

Pour ta liste:

Code : Tout sélectionner

<select name="methode" onChange="validation(this.value)">
et ta fonction que tu insere dans tes balises head:

Code : Tout sélectionner

function validation(valeur) { document.payement.num.value='valeur'; document.payement.submit(); }
Modifié en dernier par robined le 13 juin 2005, 17:34, modifié 2 fois.

Mammouth du PHP | 19672 Messages

13 juin 2005, 17:32

<form action="payement_suite.php" method="post" name="payement">
  <select name="methode" onchange="if(this.value != -1){confirm('Vous souhaitez bien régler par\n'+ this.value);this.submit();}">
  <option value="-1">Mode de paiement</option>
  <option value="liquide">liquide</option>
  <option value="virement">virement</option>
  <option value="paypal">paypal</option>
  <option value="carte">Carte banquaire</option>
  <option value="visa">Visa</option>
  </select>
  <input type="hidden" name="num" value="<?php echo "$num";  ?>" />
  <input type="submit" name="envoi" style="display: none" />
</form>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

guy
Eléphant du PHP | 134 Messages

13 juin 2005, 17:40

merci de la reponse rapidemais...
j'ai bien la boite de confirmation mais le formulaire n'est pas envoyé meme si je clique sur ok
je cherche l'erreur mais mon niveau de javascript est si bas que je trouve pas.
j'ai l'erreur suivante dans la console javascript:

Code : Tout sélectionner

Erreur : this.submit is not a function
Guy

Mammouth du PHP | 19672 Messages

13 juin 2005, 17:52

TU ne l'as peut-être pas remarqué, j'ai ajouté un input type submit en fin de formulaire avec un style display:none pour qu'il ne change pas ton interface et n'apparaisse donc pas. C'est sur ce bouton que la fonction va agir pour autant qu'il soit présent.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

guy
Eléphant du PHP | 134 Messages

13 juin 2005, 18:01

sisi j'ai remarqué ;)
mais cela ne marchat pas pour autant
j'ai tenté de faire fonctionner le srcipt tout de meme en ajoutant la fonction submit de Robined au paravent
mais la c'est le contraire si je clique sur annuler il envoye les données quand meme :roll:
<script>
					function submit(valeur)
{
    document.payement.num.value='valeur';
    document.payement.submit();
}
</script>
					<form action="payement_suite.php" method="post" name="payement">
  <select name="methode" onchange="if(this.value != -1){confirm('Vous souhaitez bien régler par\n'+ this.value);submit();}">
  <option value="-1">Mode de paiement</option>
  <option value="liquide">liquide</option>
  <option value="virement">virement</option>
  <option value="paypal">paypal</option>
  <option value="carte">Carte banquaire</option>
  <option value="visa">Visa</option>
  </select>
  <input type="hidden" name="num" value="<?php echo "$num";  ?>" />
  <input type="submit" name="envoi" style="display: none" />
</form>
question subsidiaire je voudrait aussi qu'il m'affiche dans la boite de confirmation la valeur du champs caché num
pour avoir dans la boite de confirmation:
vous shouhaiter regler le facture XXX par visa
merci
Guy

Mammouth du PHP | 19672 Messages

13 juin 2005, 18:24

question subsidiaire je voudrait aussi qu'il m'affiche dans la boite de confirmation la valeur du champs caché num
pour avoir dans la boite de confirmation
As-tu pris le temps de regarder le dode que j'ai mis et comment j'ai ajouté le texte de la boite de dialogue ?

Code revu et corrigé avec numéro de facture en plus:
<form action="payement_suite.php" id="payement" method="post" name="payement">
  <select name="methode" onchange="if(this.value != -1){confirm('Vous souhaitez bien régler votre facture numéro '+ forms['payement'].elements['num'].value +' par\n'+ this.value);forms['payement'].submit();}">
  <option value="-1">Mode de paiement</option>
  <option value="liquide">liquide</option>
  <option value="virement">virement</option>
  <option value="paypal">paypal</option>
  <option value="carte">Carte banquaire</option>
  <option value="visa">Visa</option>
  </select>
  <input type="hidden" name="num" id="num" value="12345679" />
  <input type="submit" name="envoi" style="display: none" />
</form>
Et testé aussi. Tu pourras remplacer le numéro que j'ai mis en dur dans le champ caché de numéro de facture.

Note aussi que j'ai ajouté des attributs id dans certains champs, c'est voulu et nécessaire.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

guy
Eléphant du PHP | 134 Messages

13 juin 2005, 18:37

j'ai fait un copie colle de ton code et ca marche bien pour la boite de dialogue mais si je clique sur annuler le formulaire est posté totu de meme !
desolé de d'embeter avec ca mais je ne comprend rien a la logique du javascript.
:(
promis je vais m'y mettre.
Guy

Mammouth du PHP | 19672 Messages

13 juin 2005, 19:05

Oki, on va modifier un poil la balise select:
<select name="methode" onchange="if(this.value != -1){if(confirm('Vous souhaitez bien régler votre facture numéro '+ forms['payement'].elements['num'].value +' par\n'+ this.value)){forms['payement'].submit();}else{return false}}">
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 92 Messages

13 juin 2005, 20:51

J'avais pas compris que tu voulais le confirm de préference,

ca donne:

Pour ta liste:

Code : Tout sélectionner

<select name="methode" onChange="validation(this.value)">
et ta fonction que tu insere dans tes balises head:

Code : Tout sélectionner

function validation(valeur) { document.payement.num.value='valeur'; if(confirm("Etes-vous sur de vouloir régler par "+valeur)) document.payement.submit(); }