appel automatique à fonction javascript pour geocoder puis submit formulaire
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 :
Code:
<a href=\'#\' onclick=\'document.getElementById("Formulaire").submit()\'>
après la fin du formulaire, là aussi je ne récupère pas les données dans l'input.
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:
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);}
});
} |
appel automatique à fonction javascript pour geocoder puis submit formulaire
Citation:
Envoyé par
Tsilefy
Tu peux cliquer autant que tu veux sur le bouton avec Javascript (jQuery rends ça très simple), en prenant garde aux limites de l'API geocoder évidemment, sinon tu vas être bloqué.
Mais pourquoi passer par un formulaire et pas utiliser l'API geocoder directement avec PHP?
Merci Tsilefy pour ta réponse rapide.
Le but est bien de ne pas cliquer sur le bouton et rendre automatique (tout en respectant les limites de consultation de geocoder.
J'aurais, bien entendu, préféré utiliser PHP mais je ne vois pas comment appeler geocode directement à partir du serveur.
appel automatique à fonction javascript pour geocoder puis submit formulaire
Citation:
Envoyé par
Tsilefy
Vois le lien que t'as donné
Spartacusply. Tu peux utiliser Curl (ou Guzzle, ou autre...) pour utiliser directement Geocoder depuis ton serveur sans passer par le navigateur et sans opération manuelle.
En plus, un tour rapide sur GitHub
donne un tas de bibliothèques qui feront ça pour toi. Le plus développé étant sans doute
Geocoder de William Durand.
Edit: sinon, si PHP est trop difficile pour toi, il faut que tu regardes comment cliquer sur un bouton en javascript avec jQuery.click().
Merci pour vos réponses et ces infos. Je vais regarder tout ça et vous tiens au courant. A bientôt
appel automatique à fonction javascript pour geocoder puis submit formulaire
Citation:
Envoyé par
aldomalodo
Merci pour vos réponses et ces infos. Je vais regarder tout ça et vous tiens au courant. A bientôt
Alors, au final, les solutions proposées sont en grec.
J'ai donc détourné le problème en évitant de remplir une table avec les coordonnées.
En tous les cas, merci à tous pour votre aide et vos proposition.
A bientôt.