[php] Données mysql vers javascript

Fermé
Mouams Messages postés 2 Date d'inscription jeudi 12 juillet 2007 Statut Membre Dernière intervention 12 juillet 2007 - 12 juil. 2007 à 10:15
Mouams Messages postés 2 Date d'inscription jeudi 12 juillet 2007 Statut Membre Dernière intervention 12 juillet 2007 - 12 juil. 2007 à 14:08
Voila mon problème :

j'ai un premier champ de saisie : "Numéro"
et un textarea "Adresse".

Je voudrais que lorsque l'utilisateur rentre le numéro, lorsqu'il "dé-focus", l'adresse soit automatiquement rentrée dans le champ. A savoir que le numéro et l'adresse sont dans une même base de données.

Donc ce que je voudrais faire, c'est récupérer l'adresse en fonction du numéro de pochette (ca ok c'est pas dur ... un petit SELECT et c'est bon). Et directement l'afficher dans le textarea "Adresse", donc à mes yeux, ce serait lors d'un onBLur.

Mais le problème c'est que je ne vois pas comment faire. Comme ceci ?
<input type="text" onblur=" /*récupération de l'adresse*/;/*remplissage du textarea*/"> 


Sauf que la récupération de l'adresse doit se faire en php ... et mettre du php dans un onblur, (je suis débutant je précise) je ne sais pas comment faire ...
A voir également:

3 réponses

Utilisateur anonyme
12 juil. 2007 à 10:19
on appelle ca de l'ajax, ou du xmlrpc...

comment on met ca en place? aucune idée!

mais je fonctionne reside dans le fait que le javascript va executer une fonction php qui se trouve sur le serveur, ensuite le php renvoie le resultat au javascript, et suivant ton traitement, tu peux mettre à jour ta page client sans la rafraichir!

Mainteant je laisse la place au autre pour savoir comment cela ce met en place au niveau du serveur!
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
12 juil. 2007 à 12:06
Bonjour,

Effectivement, l'Ajax me semble le plus adapté pour faire ce genre de chose. En fait ce qui se cache sous le nom d'Ajax, c'est tout simplement du JavaScript qui fait appel à un script externe.

J'ai sous la main un exemple qui fait à peu près ce que tu veux :
https://www.xul.fr/ajax-get-xml.html

Plutôt que de longues explications, je t'enjoins à aller regarder cette page et son code source.
Une fois que ce sera fait, tu pourras poser des questions plus précises !

Bon, je donne quand même une petite explication : dans la création de l'objet xmlhttprequest, il y a ceci :
		if (window.XMLHttpRequest)
		{
 			req = new XMLHttpRequest();
			if (req.overrideMimeType) 
			{
				req.overrideMimeType('text/xml');
			}
		} 
		else if (window.ActiveXObject) 
		{
			try
			{
				req = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e)
			{
				try {
					req = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
	        }

Pourquoi tout ça pour instancier un pauvre petit objet ? Tout simplement parce que Internet Explorer doit passer par un ActiveX (Msxml2.XMLHTTP ou Microsoft.XMLHTTP), alors que Firefox implémente la méthode "normale", à savoir l'objet javascript window.XmlHttpRequest.
Donc tout ça peut être simplifié, mais on perd la compatibilité avec FF ou IE.

Ensuite, c'est dans cette ligne-là
		req.open("GET", "ajax-get-xml.xml", true);
que tu mets l'URL de ton script. (par exemple, dans ton cas, je pense que tu pourrais remplacer cette ligne par :

var adresse = "getAdresseFromNumero.php?num="+document.getElementById('Numero').Value;
req.open("GET", adresse, true);

Ensuite, il faut créer sur ton serveur un fichier getAdresseFromNumero.php qui prenne un argument de type GET (que tu récupères sous la forme $_GET['num'] ), ce sera le numéro à utiliser pour ta requête.
Ce fichier php doit renvoyer du xml, donc avant toute chose, il faudra placer ceci :
header('Content-type: text/xml');

Ensuite, placer la balise xml racine, que tu peux appeler comme tu veux (par exemple, <root>, ou <adresse> : mais il faut adapter le code javascript que j'ai fourni, c'est pas compliqué y a juste un mot à changer), l'adresse, et enfin fermer la balise.
Le code doit donc ressembler à ceci :
echo "<root>".$adresse."</root>";
Avec $adresse le résultat de ta requête SQL, bien sûr.

Voilà ! Avec ça, ça devrait aller :)

Pour le reste, n'hésite pas à poser les questions que tu veux !

Xavier
0
Mouams Messages postés 2 Date d'inscription jeudi 12 juillet 2007 Statut Membre Dernière intervention 12 juillet 2007
12 juil. 2007 à 14:08
La réponse parfaite je crois :-D

Bon finalement, ce point du boulot je l'ai un peu zappé parce que le boss a oublié ... mais quand il y repensera, je reviendrai par ici :-D

Merci à vous deux.
0