comment ça marche this.form.submit() ?

Iro
Invité n'ayant pas de compte PHPfrance

07 mars 2006, 12:24

Salut,

J'ai le problème suivant: je dois soumettre un formulaire à chaque fois que un élément dans une liste déroulante est sélectionné. Cela pour pouvoir changer un'image affichée. De cette façon la page est rechargée et je peux changer l'image par rapport au choix fait.

1ère solution:
J'ai trouvé cette fonction: onchange="this.form.submit ()" que j'ai inclus dans mon code:

<form name="form1" method="post" action="achat.php">
.......
<select name="couleur" onchange="this.form.submit()">

Le problème est que quand je sélectionne un des éléments de mon menu déroulant rien se passe.
Comment ça marche this.form.submit() ? Il faut rajouter quelque chose ?

2ème solution:
J'ai trouvée cette autre solution:
....
<script language ="JavaScript">
<!--
function change() {
var destination = "achat.php";
location = destination;
}
....
<select name="couleur" onchange="change()">

Mais dans ce cas la page est rechargée mais le formulaire pas soumis.

Merci
Iro

Avatar du membre
ViPHP
ViPHP | 3008 Messages

07 mars 2006, 12:30

C'est du javascript ;) tu t'es trompé de forum.

Essaies avec :

Code : Tout sélectionner

<select name="couleur" onChange="javascript:this.form.submit();">

Iro
Invité n'ayant pas de compte PHPfrance

07 mars 2006, 12:52

Désolé....

Pas de solutions équivalentes quand même en php ?
(onChange="javascript:this.form.submit();" ne marche pas)

Iro

Avatar du membre
ViPHP
ViPHP | 3008 Messages

07 mars 2006, 13:07

Bizarre...Testes ce code, il fonctionne très bien chez moi. Est-ceque tu vois les variables affichées ?

Page form.php

Code : Tout sélectionner

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>test</title> </head> <body> <?php if( isset($_POST['couleur']) ) echo $_POST['couleur']; ?> <form name="form1" method="post" action="form.php"> <select name="couleur" onchange="javascript:this.form.submit();"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> </form> </body> </html>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 mars 2006, 13:16

Il y un truc qu'il te faut comprendre, c'est que le PHP est un langage serveur, c'est à dire qu'il est éxécute AVANT que l'utilisateur voit la page.

Le javascript est un langage client, c'est à dire qu'il est exécuté quand la page est chez le client

Pour soumettre le formulaire quand l'utilisateur change la liste, c'est qu'il faut que la page soit affichée. Il est donc impossible d'utiliser PHP pour soumettre le formulaire
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 mars 2006, 13:22

Essayes comme ceci :)

Code : Tout sélectionner

<form name="form1" method="post" action="achat.php"> <select name="couleur" onChange="document.form1.submit()"> </select> </form>

Avatar du membre
ViPHP
ViPHP | 3008 Messages

07 mars 2006, 13:26

Si mon code ne fonctionne pas c'est que tu dois avoir un conflit avec d'autres formulaires au niveau de la même pas ou que tes </form> ne sont pas placés où il faut.