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" :
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
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
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 )

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];
}