probleme recuperation valeur suite a changement dans liste deroulante

tibo
Invité n'ayant pas de compte PHPfrance

24 sept. 2007, 11:11

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

Eléphanteau du PHP | 48 Messages

24 sept. 2007, 11:16

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
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !
A.Einstein

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

24 sept. 2007, 11:18

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
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

tibo
Invité n'ayant pas de compte PHPfrance

24 sept. 2007, 14:06

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

Eléphanteau du PHP | 48 Messages

24 sept. 2007, 14:20

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
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !
A.Einstein

ViPHP
AB
ViPHP | 5818 Messages

24 sept. 2007, 14:30

@gaap

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

tibo
Invité n'ayant pas de compte PHPfrance

24 sept. 2007, 15:23

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

Eléphanteau du PHP | 48 Messages

24 sept. 2007, 16:23

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:
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !
A.Einstein

tibo
Invité n'ayant pas de compte PHPfrance

24 sept. 2007, 19:04

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

ViPHP
AB
ViPHP | 5818 Messages

24 sept. 2007, 19:54


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

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

tibo
Invité n'ayant pas de compte PHPfrance

25 sept. 2007, 08:49

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

tibo
Invité n'ayant pas de compte PHPfrance

25 sept. 2007, 09:18

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

tibo
Invité n'ayant pas de compte PHPfrance

27 sept. 2007, 15:39

aie ça marche pas avec firefox

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


merci

tibo
Invité n'ayant pas de compte PHPfrance

16 oct. 2007, 16:05

toujours aucune idée ?

Eléphant du PHP | 445 Messages

23 oct. 2007, 05:32

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