recuperation valeur pour affichage fenetre

nina87
Invité n'ayant pas de compte PHPfrance

10 avr. 2009, 16:30

Bonjour
j'ai un souci, mais je sais pas si je vais réussir a vous l'expliquer convenablement.
j'ai un formulaire(il fonctionne très bien a ce niveau pas de souci), a un endroit on doit choisir un client dans une liste déroulante.
j'aimerai que après avoir choisi le client, en cliquant sur un bouton cela affiche des renseignements sur le client présent dans la base mysql. Le souci c'est que je ne sais pas comment récupérer l'identifiant du client de la liste déroulante. je sais qu'il faut employer du javascript, mais je sais pas comment proceder.
Pourriez vous m'aiguiller ?
merci d'avance

Mammouth du PHP | 1339 Messages

10 avr. 2009, 18:49

Un petit coup d'ajax et c'est bon ... J'ai pas de tutorial précis a te proposer surtout que moi j'ai pris l'habitude (que je te conseille) de travailler avec le framework JS Prototype qui te simplifie vraiment la facon d'utiliser l'ajax

http://prototypejs.org/
Bon sinon tu me fais un message privé et on se fait un TeamViewer

nina87
Invité n'ayant pas de compte PHPfrance

14 avr. 2009, 11:38

j'ai essayer de regarder mais je comprend pas grand chose a comment fonctionne ajax.

j'ai vu que l'on peux a priori le faire avec javascript donc dans ma liste deroulante j'ai mis :
valeursite(this.options[this.selectedIndex].value)
et dans la fonction j'ai mis :
function valeursite(valeur)
{
$valsit=valeur;
}
si je fais un alert dans ma fonction ça me donne bien la valeur souhaité.
Mais je n'arrive pas a récupéré ensuite cette valeur pour la mettre dans mon bouton :
<a href="test.php?num=<?php echo $valsit; ?>" target="_blank"><img src="../image/bouton/buttonvoir.gif" width="100" height="20" border="0" ></a>
qu'est-ce qu'il faudrait que je mette a la place de num=<?php echo $valsit; ?> ?

merci d'avance

nina87
Invité n'ayant pas de compte PHPfrance

16 avr. 2009, 11:25

personne peux m'aider alors ?

j'ai le même souci a un autre endroit. je choisi un enregistrement dans une liste déroulante et cela m'affiche dans une zone de texte des renseignement de la base. Le problème c'est que je suis aussi obliger de récupérer la valeur de la liste déroulante et non de le faire en automatique, car il est possible que aucun renseignement ne soit dans la base et donc si je le met dans la première requête c'est enregistrement ne figurerai pas alors que je veux qu'il s'affiche.

oula je crois qu'il yen a plusieurs qui vont peiner a me comprendre

merci d'avance

Mammouth du PHP | 1339 Messages

16 avr. 2009, 11:29

Je t'aide pas parce que tu n'as pas les bases, je ne sais pas si tu comprendrais ce que je te dis ...
Tu mélange un peu tout quoi...

Je te conseille de faire ca :

Code : Tout sélectionner

<a href="test.php" onclick="window.open(this.href+'?num='+document.getElementById('id_de_ton_select').options[document.getElementById('id_de_ton_select').selectedIndex].value, 'popup'); return false;"><img src="../image/bouton/buttonvoir.gif" width="100" height="20" border="0" ></a>
En gros quand tu cliques sur le lien, il ouvre une popup avec ton url + ?num= + la valeur de ton select.

A bricoler biensur !
Bon sinon tu me fais un message privé et on se fait un TeamViewer

nina87
Invité n'ayant pas de compte PHPfrance

20 avr. 2009, 11:44

cool merci ça fonctionne pour mon premier cas. j'ai essayé de le modifier pour le second cas mais cela ne m'affiche rien. il n'est pas possible de mettre (document.getElementById('numl').options[document.getElementById('numl').selectedIndex].value dans une variable qui peux ensuite être utiliser dans une requete sql, car le souci, c'est que je ne sais pas comment prendre en compte la variable dans ce cas.
merci beaucoup

Mammouth du PHP | 1339 Messages

20 avr. 2009, 12:42

Meme réponse, utilise l'ajax !
Bon sinon tu me fais un message privé et on se fait un TeamViewer

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

20 avr. 2009, 14:27

Peut être que ces tutos de la FAQ pourront t'apporter quelques éléments de réponse :

:arrow: Introduction à AJAX
:arrow: Formulaires : Listes déroulantes dynamiques liées

Dans ton cas il ne s'agit pas de listes liées, mais le principe reste le même : recharger une partie de la page, à partir des données spécifiées par l'utilisateur dans une autre partie de la page :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

nina87
Invité n'ayant pas de compte PHPfrance

23 avr. 2009, 17:19

ok merci j'ai réussi a trouver a peu près mon bonheur.

a partir de ma liste déroulante, j'exécute 2 fonctions ajaxtext(), ajaxnuml()

les voici :
function ajaxnuml()
	{ 
	alert('ici');
	getXhr(); 
	xhr.onreadystatechange = function() 
	{ 
	if(xhr.readyState == 4 && xhr.status == 200) { 
	// Nous recuperons ce coup ci le retour dans une variable
	var chaine = xhr.responseText;
// Nous decoupons la reponse selon le caractere choisi 
var tableau = chaine.split('£');

// Nous appliquons les valeurs récupérées au element correspondant 
document.getElementById('urgence').value = tableau[0]; 
}
}
xhr.open("POST",'ajaxrecupurg.php',true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
numl = document.getElementById('numl').value; 
xhr.send("numl="+numl);
} 

function ajaxtext()
	{ 
	alert('la');
	getXhr(); 
	xhr.onreadystatechange = function() 
	{ 
	if(xhr.readyState == 4 && xhr.status == 200) { 
	// Nous recuperons ce coup ci le retour dans une variable
	var chaine = xhr.responseText;
// Nous decoupons la reponse selon le caractere choisi 
var tableau = chaine.split('£');

// Nous appliquons les valeurs récupérées au element correspondant 
document.getElementById('com_p').value = tableau[0]; 
}
}
xhr.open("POST",'ajaxrecuptext.php',true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
numl = document.getElementById('numl').value; 
xhr.send("numl="+numl);
} 
donc cela fonctionne de cette manière mais si j'enlève les 2 alert, cela ne fonctionne plus, comme ci il y avais un conflit de variable. j'ai donc essayer de changer celle ci mais rien y fait.


es-ce que vous voyer d'où vient le problème ?

Invité
Invité n'ayant pas de compte PHPfrance

24 avr. 2009, 09:05

j'ai remarquer que si je met les alert a un autre endroit cela ne fonctionne pas, c'est vraiment si je l'ai met a cette endroit que ça fonctionne(même juste après getXhr()), je comprend vraiement pas comment un alert peux changer se comportant. De plus si j'en enlève un seul cela ne fonctionne pas non plus.
merci d'avance

Mammouth du PHP | 1339 Messages

25 avr. 2009, 00:19

Installe un plugin firefox qui te donnera l'erreur JavaScript
Bon sinon tu me fais un message privé et on se fait un TeamViewer

nina87
Invité n'ayant pas de compte PHPfrance

27 avr. 2009, 09:37

donc quand j'essai avec firefox ça ne marche pas du tout, même avec les alert.
cela m'indique document.getElementById("numl") is null. Pourtant avec internet explorer il est bien prix en compte ? comprend pas trop ce que ça me fait la ?
merci

Mammouth du PHP | 661 Messages

27 avr. 2009, 10:47

tu n'aurais pas une page en ligne ? ... se serait plus parlant ....

nina87
Invité n'ayant pas de compte PHPfrance

28 avr. 2009, 08:45

non je n'ai rien en ligne

nina87
Invité n'ayant pas de compte PHPfrance

29 avr. 2009, 15:03

personne n'aurai d'idée sur mon problème ?

je vous remet mon code

sur ma première fenêtre :
<script src="ajax.js" type="text/javascript"></script>
<select name="numl"  style="width:600px;"  onchange="com.value=this.options[this.selectedIndex].test, ajaxnuml(), ajaxtext()" >

et sur ajax.js
function ajaxnuml()
{ 
getXhr(); 
xhr.onreadystatechange = function() 
{ 
if(xhr.readyState == 4 && xhr.status == 200) { 
// Nous recuperons ce coup ci le retour dans une variable
var chaine = xhr.responseText;
// Nous decoupons la reponse selon le caractere choisi 
var tableau = chaine.split('£');

// Nous appliquons les valeurs récupérées au element correspondant 
document.getElementById('urgence').value = tableau[0]; 
}
}
xhr.open("POST",'ajaxrecupurg.php',true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
numl = document.getElementById('numl').value; 
xhr.send("numl="+numl);
} 

function ajaxtext()
{ 
getXhr(); 
xhr.onreadystatechange = function() 
{ 
if(xhr.readyState == 4 && xhr.status == 200) { 
// Nous recuperons ce coup ci le retour dans une variable
var chain = xhr.responseText;
// Nous decoupons la reponse selon le caractere choisi 
var tablo = chain.split('£');

// Nous appliquons les valeurs récupérées au element correspondant 
document.getElementById('com_p').value = tablo[0]; 
}
}
xhr.open("POST",'ajaxrecuptext.php',true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
numl = document.getElementById('numl').value; 
xhr.send("numl="+numl);
} 
merci