requete sur on change dans liste deroulante

Eléphant du PHP | 291 Messages

03 mai 2006, 13:40

Bonjour,

Je cherche à executer une requete apres changement d'etat d'une liste déroulante (on change) en fonction d'un ID

Ma fonction javascript :
function Diffusion(id) {
location.href="index.php?nvg=9&val=" + document.form_diffuse.diffuse.value + "&id=" + id;
}
Mon champ :
echo "<form name='form_diffuse' action='index.php?nvg=9' method='post'>";
							
							echo "<select name='diffuse' onChange='Diffusion(". $id_contact .")'>";
							echo "<option value='" . $diffuse . "' SELECTED >" . $diffuse . "</option>";
							
							if($diffuse == "OUI") {
								echo "<option value='NON'>NON</option>";
								} else {
								echo "<option value='OUI'>OUI</option>";
								}	
							
							echo "</select>";
Je rencontre une dificultés, la première la valeur de la liste déroulante n'est pas présente dans l'URL de redirection (undefined)

Pouvez vous m'aider ?
D'avance merci
Modifié en dernier par bunk le 03 mai 2006, 13:57, modifié 1 fois.

Mammouth du PHP | 19672 Messages

03 mai 2006, 13:48

Proposition: envoie la valeur en second paramètre. Modifie ta fonction JavaScript comme ceci:
function Diffusion(id, valeur)
{
    var identifiant = valeur + id;
    location.href="index.php?nvg=9&id="+ identifiant;
}
Et dans ton formulaire :
<?php
//...
                            echo "<form name='form_diffuse' action='index.php?nvg=9' method='post'>";
                            echo "<select name='diffuse' onChange='Diffusion(". $id_contact .", this.value)'>";
                            echo "<option value='" . $diffuse . "' SELECTED >" . $diffuse . "</option>";
                            
                            if($diffuse == "OUI") {
                                echo "<option value='NON'>NON</option>";
                                } else {
                                echo "<option value='OUI'>OUI</option>";
                                }    
                            echo "</select>";
//...
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

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

03 mai 2006, 13:49

Pour récupérer la valeur sélectionnée d'une liste déroulante il faut procéder ainsi :

Code : Tout sélectionner

document.monFormulaire.monSelect.options[document.monFormulaire.monSelect.selectedIndex].value
Une autre solution plus simple consiste à passer cette valeur en paramètre de ta fonction dans le onChange (la syntaxe reste la même, elle est juste plus légère puisque l'on peut utiliser l'objet "this" pour spécifier le select) :

Code : Tout sélectionner

<select name='diffuse' onChange='Diffusion(". $id_contact .", this.options[this.selectedIndex].value);'>
Il te suffit alors de rajouter un deuxième argument à ta fonction Diffusion().

Eléphant du PHP | 291 Messages

03 mai 2006, 13:56

merci Cyrano, je n'arivais pas a mettre une deuxième valeur dans mon select :?

Mammouth du PHP | 19672 Messages

03 mai 2006, 14:04

merci Cyrano, je n'arivais pas a mettre une deuxième valeur dans mon select :?
Est-ce que ça résoud le problème ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 291 Messages

03 mai 2006, 14:08

tout a fait !

meri encore