Bonjour,
Après avoir tenté de nombreuses solutions, je me retourne vers vous, si vous le voulez bien, pour obtenir de l'aide.
Je dois remplir une table sql (MySQL) avec le nom des 3500 villes de France et leurs coordonnées (latitude et longitude).
Pour ce faire, mon formulaire fait appel à une fonction javascript qui utilise geocoder de Google Maps pour récupérer les coordonnées et qui les stocke dans l'input du formulaire.
Au retour de la fonction javascript je dois soumettre le formulaire pour l'envoyer vers une page PHP qui enregistre les résultats dans la table.
Mon souci réside dans le fait que je dois cliquer 3500 fois sur le bouton geocode qui appelle javascript avant d'envoyer le formulaire pour l'enregistrement total.
Cette solution fonctionne mais je souhaiterais que le chargement des 3500 coordonnées se fasse sans appuyer sur le bouton "geocode";
Si je termine ma fonction javascript par document.submit, je ne récupère pas les données dans l'input.
Si je colle un submit automatique :
après la fin du formulaire, là aussi je ne récupère pas les données dans l'input.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <a href=\'#\' onclick=\'document.getElementById("Formulaire").submit()\'>
J'ai essayé avec une requête de fond XML. Pas plus de résultats.
Avez-vous une idée pour automatiser davantage ?
Voici mon code (auquel j'ai retiré la présentation à des fins de simplification) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 $idconnect = connexion_base(); $requete="SELECT Ville FROM table_villes"; $retselect=mysql_query($requete,$idconnect); if ($retselect != false) { $i=0; echo '<form id="Formulaire" action="ENREGISTRER.php" method="POST" name="formulaire" >'; // ENREGISTRER.php est la page appelée pour enregistrer les données dans la base. while ($resselect=mysql_fetch_row($retselect)) { $nomville=$resselect[0]; $latid="lat".$i; $lngid="lng".$i; $villeid="ville".$i; echo '<input type="button" onclick="geocoder_adresse(\''.$nomville.'\',\''.$i.'\');" value="geocode"> <input type="text" id='.$villeid.' name=ville['.$i.'] value="" > <input type="text" id='.$latid.' name=lat['.$i.'] value="" > <input type="text" id='.$lngid.' name=lng['.$i.'] value="" >'; $i++; } echo '<input type="hidden" name=module value="KVH" > <input type="hidden" name="login" value="alain" > <button type=submit>enregistrer</button> </form>'; } mysql_close($idconnect); ?> // Javascript function geocoder_adresse(ville,hang) { var _lat="lat"+hang; var _lng="lng"+hang; var _ville="ville"+hang; geocoder.geocode( { "address": ville}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { document.getElementById(_lat).value = results[0].geometry.location.lat(); document.getElementById(_lng).value = results[0].geometry.location.lng(); document.getElementById(_ville).value = ville; } else {alert("Le geocodage de " +ville+" a échoué pour la raison suivante : "+ status);} }); }
Partager