IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

appel automatique à fonction javascript pour geocoder puis submit formulaire [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <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 : 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);}
        });
    }

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    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?

  3. #3
    Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut appel automatique à fonction javascript pour geocoder puis submit formulaire
    Citation Envoyé par Tsilefy Voir le message
    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.

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Pour info ce que propose Google autour de maps ne se cantonne pas à l'API maps, il y aussi le webservice, avec notamment la geolocation API : https://developers.google.com/maps/d...eocoding/intro
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    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().

  6. #6
    Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut appel automatique à fonction javascript pour geocoder puis submit formulaire
    Citation Envoyé par Tsilefy Voir le message
    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

  7. #7
    Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut appel automatique à fonction javascript pour geocoder puis submit formulaire
    Citation Envoyé par aldomalodo Voir le message
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/03/2012, 17h14
  2. Réponses: 7
    Dernier message: 08/10/2005, 08h59
  3. Comment appeler une fonction JavaScript depuis Delphi ?
    Par Alfred12 dans le forum Web & réseau
    Réponses: 4
    Dernier message: 17/06/2005, 18h15
  4. fonction javascript pour tout cocher
    Par Flob dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/02/2005, 10h36
  5. Appel de fonction javascript
    Par lepierre dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/11/2004, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo