Passage de variable entre php et javascript Retour

Eléphant du PHP | 260 Messages

23 janv. 2006, 12:53

Bonjour ayant lu le post de "mc" mais n'étant pas le meme problème que moi je vous annonce le mien :

J'ai un formulaire avec une boucle while qui intéroge une bdd et qui affiche les resultats dans une liste déroulante ! Jusque la pas de problème !

Ensuite lorsque je clique sur cette liste déroulante (sur le onchange) cela remplit une case (input type="text") avec la valeur sélectionner dans la liste.

Voici du code :
<tr>
		<td>Processeur :</td>
		<td><input type="text" name="MAC_PROC" size="15" maxlength="15"></td>
		<td><select name="MAC_PROC1" onChange="majchamp('MAC_PROC')"><? 	$LesInfos=GetLstInfProc();
				$UneInfo=GetLigne($LesInfos);
				while($UneInfo)
				{
					print "<option value=".$UneInfo['MAC_PROC'].">".$UneInfo['MAC_PROC']."</option>";
					$UneInfo=GetLigne($LesInfos);
				} ?></select>
		</td>
	</tr>
et mon javascript :

Code : Tout sélectionner

function majchamp(champ) { AjoutUti.MAC_MEM.value=AjoutUti.MAC_MEM1.value; }
Et ce qui se passe c'est que le champ ne se remplit qu'avec les premier caractère et s'arrète des qu'il trouve un espace :
ex : 512 Mo DDR donnera dans la case text 512 !

Merci de votre aide !
Mon jeu : http://www.battle-stars.fr.tc
---
Mon serveur : http://servlan.dyndns.org
---
Bientôt tous mes serveurs OPEN ;)

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

23 janv. 2006, 14:50

...
<tr>
<td>Processeur :</td>
<td><input type="text" name="MAC_PROC" size="15" maxlength="15"></td>
<td><select name="MAC_PROC1" onChange="majchamp('MAC_PROC')"><? $LesInfos=GetLstInfProc();
$UneInfo=GetLigne($LesInfos);
while($UneInfo)
{
print "<option value=".$UneInfo['MAC_PROC'].">".$UneInfo['MAC_PROC']."</option>";
$UneInfo=GetLigne($LesInfos);
} ?></select>
</td>
</tr>

.....

Et ce qui se passe c'est que le champ ne se remplit qu'avec les premier caractère et s'arrète des qu'il trouve un espace :
ex : 512 Mo DDR donnera dans la case text 512 !
...
Il faut entourer la valeur affectée entre deux apostrophes " dans la clause value de <option> de la liste déroulante.
Correction :

Code : Tout sélectionner

<tr> <td>Processeur :</td> <td><input type="text" name="MAC_PROC" size="15" maxlength="15"></td> <td><select name="MAC_PROC1" onChange="majchamp('MAC_PROC')"><? $LesInfos=GetLstInfProc(); $UneInfo=GetLigne($LesInfos); while($UneInfo) { print "<option value='".$UneInfo['MAC_PROC']."'>".$UneInfo['MAC_PROC']."</option>"; $UneInfo=GetLigne($LesInfos); } ?></select> </td> </tr>
Modifié en dernier par sadeq le 23 janv. 2006, 14:51, modifié 1 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 260 Messages

23 janv. 2006, 15:45

Ho ! merci a toi je n'avais pas vu ton message !

Merci beaucoup ! :wink:

Mais j'ai un second problème et n'étant pas très bon en javascript je voudrais concaténer mes champs :

Code : Tout sélectionner

function majchamp(champ,ref) { AjoutUti.champ.value=AjoutUti.ref.value; }
Ici champ et ref sont des noms de champs mais il me dit que ref n'éxiste pas ! Evidemment ! Tu as une idée ?
Mon jeu : http://www.battle-stars.fr.tc
---
Mon serveur : http://servlan.dyndns.org
---
Bientôt tous mes serveurs OPEN ;)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 janv. 2006, 23:52

il faudrait voir un peu plus de code, parce que là on ne sais

ni sur quoi tu appliques la fonction
ni l'origine des paramètres champ et ref
ni même de semblant de concaténation en vue (qui se fait avec un + en JS) :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

24 janv. 2006, 11:10

Donc mon javascript :

Code : Tout sélectionner

function majchamp(champ,ref) { AjoutUti.champ.value=AjoutUti."+champ+1".value; }
et ma page :
<td>Processeur :</td>
		<td><input type="text" name="MAC_PROC" size="15" maxlength="15"></td>
		<td><select name="MAC_PROC1" onClick="majchamp('MAC_PROC','MAC_PROC1')"><? 	$LesInfos=GetLstInfProc();
				$UneInfo=GetLigne($LesInfos);
				while($UneInfo)
				{
					print "<option value='".$UneInfo['MAC_PROC']."'>".$UneInfo['MAC_PROC']."</option>";
					$UneInfo=GetLigne($LesInfos);
				} ?></select>
		</td>
:wink:

Eléphant du PHP | 260 Messages

24 janv. 2006, 11:13

Oups si vous pouvez enlevez mon post de dessus merci.

Donc mon javascript :

Code : Tout sélectionner

function majchamp(champ) { AjoutUti.champ.value=AjoutUti."+champ+1".value; }
et ma page :
<td>Processeur :</td>
        <td><input type="text" name="MAC_PROC" size="15" maxlength="15"></td>
        <td><select name="MAC_PROC1" onClick="majchamp('MAC_PROC')"><?     $LesInfos=GetLstInfProc();
                $UneInfo=GetLigne($LesInfos);
                while($UneInfo)
                {
                    print "<option value='".$UneInfo['MAC_PROC']."'>".$UneInfo['MAC_PROC']."</option>";
                    $UneInfo=GetLigne($LesInfos);
                } ?></select>
        </td>
:wink:
Mon jeu : http://www.battle-stars.fr.tc
---
Mon serveur : http://servlan.dyndns.org
---
Bientôt tous mes serveurs OPEN ;)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 janv. 2006, 00:11

tu n'est pas assez précis dans tes demandes, on s'y perd un peu :roll:

sache que nous ne voyons pas le reste du code et on se sait ni comment tourne le script ni à quoi il sert !

Dans le JS tu as "AjoutUti.champ" je suppose que "AjoutUti" est le nom du formulaire mais à quoi correspond "champ" ?

Et quels sont les champs que tu veux concaténer ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

25 janv. 2006, 11:46

Vraiment désolé :oops: ,
Alors cette fois si je vais essayer d'être le plus précis possible.
Donc j'ai un formulaire avec des champs et à coté de chaque champ j'ai ne liste déroulante (ce qui permet a l'utilisateur de selectionner sans avoir a tout réécrire).
Donc j'ai essayé de faire une fonction en javascript de facon a ce que lorsque l'utilisateur clique sur un choix de la liste déroulante (donc sur le onclick et pas le onchange [ne correspond pas a mes attentes !]) le champ d'à coté(celui qui sert uniquement a creer une nouvelle valeur ci celle ci n'est pas dans la liste déroulante) se remplisse automatiquement de la valeur cliqué dans la liste déroulante !

Donc ma fonction onclick (dans le select):
<td><input type="text" name="[b]MAC_PROC[/b]">
<td><select name="[b]MAC_PROC1[/b]" [b]onClick="majchamp('MAC_PROC')[/b]"> 
...
Donc ici le premier champ est donc vide a l'origine et lorsque je clique sur ma liste déroulante je veux que la valeur de la liste déroulante passe dans le premier champ.
Donc j'avais pensé a cette fonction :

Code : Tout sélectionner

function majchamp(champ) { AjoutUti.champ.value=AjoutUti."+champ+1".value; }
où champ est le nom du champ passé en paramètre (justement la il me dit que le champ "champ" n'existe pas ! évidement sa devré etre "MAC_PROC" et pas "champs".
Donc en francais sa devrait etre :

Code : Tout sélectionner

... AjoutUti.MAC_PROC.value=AjoutUti.MAC_PROC1.value; ...
Voila ( hé oui AjoutUti est bien le nom du formulaire !)
:wink:
Merci ![/php]

Eléphant du PHP | 260 Messages

25 janv. 2006, 12:31

Mini EDIT>Encore oublié de me loguer oups et le
[b:f390065cf5]
je ne sais pas d'ou il vient mais il n'a rien a faire ici !! :wink:
Mon jeu : http://www.battle-stars.fr.tc
---
Mon serveur : http://servlan.dyndns.org
---
Bientôt tous mes serveurs OPEN ;)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 janv. 2006, 18:18

C'est effectivement plus précis :wink:
sur le onclick et pas le onchange [ne correspond pas a mes attentes !]

Hmm... si tu veux mais le OnChange est fait pour les listes alors que le OnClick est plustôt pour des champs de saisie (texte).

un exemple complet avec OnChange tu veras par toi même que c'est tout aussi bien (voire bien mieux :wink: ):
<html>
<head>
<script type="text/javascript">
	
	
function majchamp(champ,valeur)
{   
   document.form.elements[champ].value = valeur;
}

</script>

</head>
<body>
<form name="form">
	
	<select name="liste1" onChange="majchamp('champ1',this.value);">
		<option value="">Choix liste1</option>
		<option value="1">1</option>
		<option value="2">2</option>
		<option value="3">3</option>
	</select>	
	<input type="text" name="champ1" value="" >	
	<hr>	
	<select name="liste1" onChange="majchamp('champ2',this.value);">
		<option value="">Choix liste2</option>
		<option value="1">1</option>
		<option value="2">2</option>
		<option value="3">3</option>
	</select>
	<input type="text" name="champ2" value="">
</form>

</body>
</html>
le "this.value" séléctionne directement la valeur de l'item dans la liste.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 260 Messages

29 janv. 2006, 22:11

Niquel ! Merci (pour info j'ai quand meme gardé le onClick) !

Merci :wink:
Mon jeu : http://www.battle-stars.fr.tc
---
Mon serveur : http://servlan.dyndns.org
---
Bientôt tous mes serveurs OPEN ;)