Actualiser page Javascript/PHP

Fermé
Harrribo Messages postés 291 Date d'inscription vendredi 29 août 2008 Statut Membre Dernière intervention 26 octobre 2011 - 25 août 2009 à 12:03
M@dien Messages postés 437 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 septembre 2010 - 25 août 2009 à 14:39
Bonjour,
je suis en train de créer un site avec une bdd : j'ai choisi le MySQL et le PHP
dans ce site, j'ai une carte google qui permet d'afficher l'endroit où se situe l'information demandée

Dans cette page j'aimerai que lorsque l'icon du point de la carte google s'affiche, on affiche le prochain point de la BDD le plus proche du click (les latitudes et longitudes sont dans la BDD)
donc en faisant une requête qui regarde dans les tables etc, je sais quel calcul faire pour choisir le plus proche.

J'ai réussi à récupérer les coordonnées du click et elle s'affichent sur la page. C'est en javascript
donc comme c'est le php qui s'éxécute avant le javascript je l'ai dans l'os pour envoyer la requête et aller farfouiller dans la BDD

Ma question est donc : comment faire pour que
Une fois cliquer sur la carte google, récupérer les coordonnées en php au lieu du javascript ?

Ou alors récupérer les coordonnées en javascript comme actuellement mais en réactualisant automatiquement la page pour que le php se relance et récupère les coordonnées du click

Je suis clair ou pas ? ^^

Merci

A voir également:

4 réponses

M@dien Messages postés 437 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 septembre 2010 74
25 août 2009 à 12:20
Oui oui.
Le mieux dans ton cas, est de passer les données au serveur pour qu'une page PHP retourne les données.
En utilisant l'AJAX, ça permettra même de ne pas recharger la page entière.

Le script global serait:
1- Récupération des coordonnées du clic par javascript
2- Envoi en ajax des données à une page PHP annexe 'moulinette.php?x=CoordonneesEnX&y=CoordonneesEnY'
3- La page PHP aura alors les coordonnées en requête GET ($_GET['CoordonneesEnX'] et $_GET['CoordonneesEnY']
4- la page PHP récupère les coordonnées suivantes et les retournes à la page d'origine en ECHO
5- la fonction ajax qui attendait la réponse du script PHP aura alors les nouvelles coordonnées en mémoire
6- Le javascript finit l'affichage des nouvelles coordonnées.

J'espère avoir été assez clair.

Je n'ai pas de code tout prèt à te fournir, ton programme étant apparemment assez complexe.
1
Harrribo Messages postés 291 Date d'inscription vendredi 29 août 2008 Statut Membre Dernière intervention 26 octobre 2011 67
25 août 2009 à 14:04
Ok je pense voir comment faire :
apprendre à négocier avec AJAX : https://openclassrooms.com/fr/courses/245710-ajax-et-lechange-de-donnees-en-javascript/244425-le-concept-dajax

Donc si j'ai bien compris ce que tu as dit et le peu que j'ai lu pour le moment
AJAX n'est pas prioritaire sur le php mais est indépendant : il sait travailler tout seul donc s'il a besoin de relancer une page il le fait : donc en gros c'est AJAX qui fait office de rafraichissement de page :D

Sinon question toute conne ^^
moulinette.php c'est juste une page de brouillon en quelque sorte qui lui permet d'être indépendant et travailler de son côté ?
0
M@dien Messages postés 437 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 septembre 2010 74
25 août 2009 à 14:18
Non pas tout à fait.

Il n'y a pas vraiment de priorité entre ajax et php. c'est totalement différent.

En fait, l'AJAX est une manière de coder du javascript. c'est donc du code client, et ce qui est déclenché par l'utilisateur.
L'AJAX permet de lancer des requêtes HTTP sans recharger la page. on demande donc à AJAX de lancer une requête HTTP vers moulinette.php. cette page php contient tout le code nécessaire pour récupérer les données à mettre à jour. et dans tout le code, il ne faut mettre que les valeurs à retourner en ECHO. une fois que le serveur à généré la page, elle est renvoyée à AJAX qui la reçoit dans une variable. il suffit ensuite de manipuler cette variable pour afficher ce que l'on veut.

En résumé, AJAX est comme un tunnel qui permet d'exécuter une page PHP côté serveur.
Et moulinette est une page importante qui fait le fameux calcul du point le plus proche.
0
Harrribo Messages postés 291 Date d'inscription vendredi 29 août 2008 Statut Membre Dernière intervention 26 octobre 2011 67
25 août 2009 à 14:28
Ok bin merci, je sais ce qu'il me reste à faire pendant le temps libre que je pourrai avoir dans les 3 semaines qui arrivent :D

Déjà : voir comment fonctionne AJAX
0
M@dien Messages postés 437 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 septembre 2010 74
25 août 2009 à 14:39
Bon courage alors.
Le mieux est de trouver un bout de code déjà fait et de le faire fonctionner pour voir comment il marche. Le code n'est pas très long mais fastidieux à écrire pour lancer une requête HTTP par AJAX.

Voici un code tout fait que j'utilise pour mes scripts AJAX:
//Creation de l'objet XMLHttpRequest
xhr_object0 = createObjectAJAX();
//On envoie la requete
xhr_object0.onreadystatechange=function() {
var response=null;
if(xhr_object0.readyState == 4 ) response=xhr_object0.responseText;
else response="<h4>Chargement des données...</h4>"; // Ecran de chargement dans le conteneur
document.getElementById('resultat').innerHTML=response;};// on affiche l'écran de chargement
try {
	xhr_object0.open("GET", "moulinette.php?donnees=" + varQuiContientLesDonnees, true);
	xhr_object0.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
	//xhr_object.send(send);
	xhr_object0.send(null);
	//Une fois la reponse recue, on l'injecte dans l'element souhaite
	if(xhr_object0.readyState == 4 && xhr_object0.status == 200)
	document.getElementById('resultat').innerHTML=xhr_object0.responseText;
} catch (e) {document.getElementById('resultat').innerHTML="<p>"+ e +"</p>";}


J'ai souligné les choses importantes à changer.
Il n'est forcément nécessaire d'afficher un écran de chargement ni d'afficher d'erreur ni le résultat du script.
Dans mon cas le fichier moulinette.php me renvoie directement ce que je veux afficher, mais il est possible de travailler avec le résultat de xhr_object0.responseText
0