Page 1 sur 1

probleme recuperation valeur suite a changement dans liste d

Posté : 24 sept. 2007, 11:11
par tibo
Bonjour,

Voila j'ai un souci je voudrai que lorsque je choisi dans une liste deroulante un des enregistrements, cela m'affiche dans un champs une des propriété qui est dans la base correspondant a cette enregistrement.

dans ma liste deroulante j'ai :
<option  onchange="resultat('<?php echo ($ligne['charg']); ?>')" value="<?php echo($ligne['matricule']); ?>"><?php echo($ligne['nom'].$ligne['gc'].' '.$ligne['ville'].' '.$ligne['ad_rue_lieux'].' '.$ligne['cp_ville']); ?></option> 


mon javascript :
function resultat(cc)
{
document.getElementById("charg").value = cc;
}

ma zone de texte ou je voudrai que cela s'affiche :
 <input name="charg" type="text" id="charg" readonly>
j'ai essayé de chercher sur le forum ou sur internet mais impossible de trouver comment faire ou alors cela ne marchais pas.

es-ce que vous pourriez m'aider

merci d'avance

Posté : 24 sept. 2007, 11:16
par Gaap
pour ma part, je mettrais d'abord ton onchange() sur le <SELECT> (celui ci doit avoir un ID) et la ligne pour récupérer la valeur de ta sélection dans ton javascript serait plus

Code : Tout sélectionner

document.getElementById("id de mon select").options[document.getElementById("id de mon select").selectedIndex].value

Posté : 24 sept. 2007, 11:18
par Ryle
L'élément option ne supporte pas l'attribut onChange. Celui-ci doit être placé dans la balise <select> et peut accéder à la valeur de l'option sélectionnée avec "this" :

Code : Tout sélectionner

this.options[this.selectedIndex].value

Posté : 24 sept. 2007, 14:06
par tibo
merci pour votre rapidité.
Alors j'ai changer mon code cela donne :
   <select name="mat" id="mat" style="width:600px;"  onchange="resultat('<?php echo ($ligne['charg']); ?>')" > 
          <?php 
    while($ligne = mysql_fetch_assoc($resultat)) 
    { 
?> 
          <option value="<?php echo($ligne['matricule']); ?>"><?php echo($ligne['nom'].$ligne['gc'].' '.$ligne['ville'].' '.$ligne['ad_rue_lieux'].' '.$ligne['cp_ville']); ?></option> 
          <?php 
    } 
?> 
        </select> 
mon code javascript :
function resultat(charg)
{
document.getElementById("charg").options[document.getElementById("charg").selectedIndex].value
}
mais par contre j'ai rien changer pour la zone de texte, c'est a partir du code javascript que l'on envoi la valeur dans la zone ?

merci

Posté : 24 sept. 2007, 14:20
par Gaap
en fait ici tu as le choix entre deux méthodes soit tu fais un

Code : Tout sélectionner

<SELECT onchange="resultat(this.options[this.selectedIndex].value)">
et ton javascript

Code : Tout sélectionner

function resultat(cc) { document.getElementById("charg").value = cc; }
---------------------------------------------------------------------------------------------------
soit tu fais un

Code : Tout sélectionner

<SELECT onchange="resultat()">
et tu mets dans ton javascript

Code : Tout sélectionner

function resultat() { document.getElementById("charg").options[document.getElementById("charg").selectedIndex].value }
-----------------------------------------------------------------------------------------------------

Mais on ne fait pas les deux :wink:


de plus que veux tu faire après parce que pour le moment cela ne fait rien

Posté : 24 sept. 2007, 14:30
par AB
@gaap

A première vue j'opterais plutôt pour ta première proposition

Posté : 24 sept. 2007, 15:23
par tibo
merci, j'ai appliquer la premiere solution, mais je voudrai afficher dans la zone de texte la valeur echo ($ligne['charg']); mais je ne voi pas de quel manière faire ensuite

merci

Posté : 24 sept. 2007, 16:23
par Gaap
dans ta function tu donnes la valeur de ta liste déroulante a un objet qui a pour id="charg" je ne vois pas le soucis ? si ton "charg" est une zone de saisie elle affichera cette valeur ( sort sa règle en fer pour taper sur les doigts )

:D :wink:

Posté : 24 sept. 2007, 19:04
par tibo
ok j'ai corriger tout mon truc le quand je choisi dans ma liste deroulant cela m'affiche mon num correspondant a l'enregistrement, mais le souci c'est que je veux afficher selon un autre champ = charg. Mais je ne pe pas pour autant changer le value etant donnée que j'en ai besoin ensuite pour enregistrer mon formulaire.

voila je sais pas si j'ai été clair

merci

Posté : 24 sept. 2007, 19:54
par AB

voila je sais pas si j'ai été clair

merci
non pas vraiment ce serait mieux de donner un exemple.

Posté : 25 sept. 2007, 08:49
par tibo
ma liste deroulante :
   <select name="mat"  style="width:600px;"  onchange="charg.value=this.options[this.selectedIndex].value" >
		 
          <?php 
    while($ligne = mysql_fetch_assoc($resultat)) 
    { 
?> 
          <option value="<?php echo($ligne['matricule']); ?>"><?php echo($ligne['nom'].$ligne['gc'].' '.$ligne['ville'].' '.$ligne['ad_rue_lieux'].' '.$ligne['cp_ville']); ?></option> 
          <?php 
    } 
?> 
        </select> 
        <?php 
} 
?>

et mon champs de texte :
   <input name="charg" type="text" id="charg" readonly>


Donc a chaque fois que je choisi un enregistrement dans ma liste cela maffiche dans ma zone de texte le matricule de mon champs, normale vu que c'est lieu qui est dans value. Le probleme c'est que je veux faire afficher un autre champs de mon enregistrement qui ne s'affiche pas dans la liste deroulante, celui ci est $ligne['charg'].

Je ne peux pas mettre cette valeur dans value, vue que cette liste deroulante est dans un formulaire et que le matricule est ensuite necessaire.

Voila

Je pense que ça ira mieux la.

merci

Posté : 25 sept. 2007, 09:18
par tibo
non ça y es j'ai trouvé
<select name="mat"  style="width:600px;"  onchange="charg.value=this.options[this.selectedIndex].test" >
		 
          <?php 
    while($ligne = mysql_fetch_assoc($resultat)) 
    { 
?> 
          <option test="<?php echo($ligne['charg']); ?>" value="<?php echo($ligne['matricule']); ?>"><?php echo($ligne['nom'].$ligne['gc'].' '.$ligne['ville'].' '.$ligne['ad_rue_lieux'].' '.$ligne['cp_ville']); ?></option> 
          <?php 
    } 
?> 
        </select> 
je savai pas que je pouvais rajouter dans le option une variable.

Merci pour votra aide

Posté : 27 sept. 2007, 15:39
par tibo
aie ça marche pas avec firefox

vous avez une idée pour que ça marche sur les 2


merci

Posté : 16 oct. 2007, 16:05
par tibo
toujours aucune idée ?

Posté : 23 oct. 2007, 05:32
par h0_noMan
Tu met les 2 valeurs dans le VALUE (en les separant par : par exemple) et une fonction JS se charge de les separer et les afficher.
<select name="mat"  style="width:600px;"  onchange="changer(this);" >
         
          <?php 
    while($ligne = mysql_fetch_assoc($resultat)) 
    { 
?> 
          <option value="<?php echo($ligne['matricule'].':'.$ligne['charg']); ?>"><?php echo($ligne['nom'].$ligne['gc'].' '.$ligne['ville'].' '.$ligne['ad_rue_lieux'].' '.$ligne['cp_ville']); ?></option> 
          <?php 
    } 
?> 
        </select>
Et le script :
function changer(obj)
{
var text = obj.options[obj.selectedIndex].value ;
var tableau = text.split(':');
document.getelementbyid("charg").value = tableau[0];
document.getelementbyid("charg2").value = tableau[1];
}