Intégrer à une base de données des coordonnées géographiques (longitude, longitude)

Contenu du snippet

Ce code permet au moeyn de google map, de récupérer des cordonnées géo des adresses postales passées en paramètres. Ces adresses sont issues d'une base de données. Le fichier insert-in-bdd.php est inutile

Source / Exemple :


<html>
<head>

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/
jquery.min.js"></script>

</head>
<body>
   
    <script type="text/javascript">

 /* Déclaration des variables globales */ 
 var geocoder = new google.maps.Geocoder();
 var addr, latitude, longitude;

 /* Fonction chargée de géolocaliser l'adresse */ 
 function geolocalise(){
  /* Récupération du champ "adresse" */ 
  addr = document.getElementById('adresse').value;
  /* Tentative de géocodage */ 
  geocoder.geocode( { 'address': addr}, function(results, status) {
   /* Si géolocalisation réussie */ 
   if (status == google.maps.GeocoderStatus.OK) {
    /* Récupération des coordonnées */ 
    latitude = results[0].geometry.location.lat();
    longitude = results[0].geometry.location.lng();
    /* Insertion des coordonnées dans les input text */ 
    document.getElementById('lat').value = latitude;
    document.getElementById('lng').value = longitude;
    /* Appel AJAX pour insertion en BDD */ 
    var sendAjax = $.ajax({
     type: "POST",
     url: 'insert-in-bdd.php',
     data: 'lat='+latitude+'&lng='+longitude+'&adr='+addr,
     success: handleResponse
    });
     if (GBrowserIsCompatible())
          {
          var map = new GMap2(document.getElementById("map_canvas"));
          map.setCenter(new GLatLng(latitude,longitude), 12);
// "point" correspond aux coordonnées du marqueur de départ
          var point = new GLatLng(latitude,longitude);
// On ajoute la propriété "draggable" (déplaçable) au marqueur
          var marker = new GMarker(point, {draggable: true});
// Affichage par superposition du marqueur
          map.addOverlay(marker);
          }
   }
   function handleResponse(){
    $('#answer').get(0).innerHTML = sendAjax.responseText;
   }
  });
 }

</script>
<form name="saisie" method="post" action="googleMap1.php5">
<br>
<?php

       include("config_defaults_inc.php5"); //Mes param de connextion à la base de données
      
       
       $espace = "PRODUCTION_"; // prefix des nom des tables
       
       
        $res = mysql_connect($g_hostname,$g_db_username,$g_db_password);
        mysql_select_db($database_name);
        //Nombre de lieux non-remplis -
       	$res = mysql_connect($g_hostname,$g_db_username,$g_db_password) or die ("Connexion impossible");
	mysql_select_db($g_database_name,$res) or die ("selection de la BDD impossible");
        
        $sql = "select * from ".$espace."_TBLLIE where LATITUDE IS NULL and CDEETAFTL='CRS' ";
        
        //$sql = "select POD_TBLDTEEVT.REFDTEEVT, POD_TBLTYPEVT.LIBTYPEVT, TITEVT, POD_TBLDTEEVT.DTEEVT, POD_TBLDTEEVT.HRSDBT, POD_TBLDTEEVT.HRSFIN, POD_TBLDTEEVT.JRNENT, POD_TBLLIE.NOM, POD_TBLLIE.RUE, POD_TBLLIE.CDEPOS, POD_TBLLIE.VIL  , TRFEVT, EVTDSC, POD_TBLDTEEVT.TMSMAJ from POD_TBLDTEEVT, POD_TBLEVT , POD_TBLEVTDSC, POD_TBLLIE, POD_TBLTYPEVT where `DTEEVT` > current_date()  and POD_TBLEVT.REFEVT = POD_TBLEVTDSC.REFEVT and POD_TBLLIE.REFLIE = POD_TBLEVT.REFLIE and POD_TBLDTEEVT.REFEVT = POD_TBLEVT.REFEVT and POD_TBLTYPEVT.REFTYPEVT = POD_TBLEVT.REFTYPEVT order by POD_TBLDTEEVT.DTEEVT, POD_TBLDTEEVT.HRSDBT;";	
	$id = mysql_query($sql,$res) or die ("Probleme de selection de BDD");
        $nb= mysql_num_rows($id);
        
        //Nombre total de lieux 
        $sql = "select * from ".$espace."_TBLLIE";
        $id = mysql_query($sql,$res);
        $nbTot= mysql_num_rows($id);
        
        //Recherche du lieu a remplir
        $sql = "select * from ".$espace."_TBLLIE where LATITUDE IS NULL ORDER BY REFLIE LIMIT 1,1";
        
        $id2 = @mysql_query($sql,$res);
        $nom = @mysql_result($id2,0,"NOM");
        $rue = @mysql_result($id2,0,"RUE");
        $cdepos = @mysql_result($id2,0,"CDEPOS");
        $vil = @mysql_result($id2,0,"VIL");
        $pk = @mysql_result($id2,0,"REFLIE");
       
        if ($rue=="")
        {
            $add = $vil;
        }
        else
        {
            $add = $rue.",".$vil;
        }
        
        echo "<br><hr><br><b>Clef primaire : <input size='4' type='text' name='nro' value='".$pk."'><br>".utf8_encode($nom)."</b>";
        echo "  <input type=\"text\" name=\"adresse\" id=\"adresse\" value=\"".utf8_encode($add)."\" />";
        
?>

<br><br>
Latitude : <input type="text" id="lat" value="latitude" name="latitude" readonly />
Longitude : <input type="text" id="lng" value="longitude" name="longitude" readonly />
<input type="button" onclick="geolocalise()" value="géolocaliser" /><input type="submit" name="inserer" value="inserer"><input type="submit" name="sans" value="sans" style="background-color:yellow;"> <button onclick="javascript:location.reload();">Nouvele saisie</button>

</form>
<?php
    if($_POST["inserer"] == "inserer")
    {
        $sql = "update ".$espace."_LIEU set LATITUDE=".$_POST["latitude"].", LONGITUDE=".$_POST["longitude"]." where IDLIEU=".$_POST["nro"].";";
        $id = mysql_query($sql,$res) or die ("insertion échouée");
    }
    
//Cas où il n'y a pas d'adresse postale
    if($_POST["sans"] == "sans")
    {
        $sql = "update ".$espace."_TBLLIE set LATITUDE=0, LONGITUDE=0 where REFLIE=".$_POST["nro"].";";
        $id = mysql_query($sql,$res) or die ("insertion echouée");
    }
    
?>    
<hr>
<br>Liste des endroits non trouvés</br>

<?php
    $sql = "select * from POD_TBLLIE where LATITUDE=0";
    $id2 = mysql_query($sql,$res);
    while (mysql_fetch_row($id2))
    {
        $n = mysql_result($id2, $row, "NOM");
        $v = mysql_result($id2, $row, "VIL");
        $pk = mysql_result($id2, $row, "REFLIE");
        $row++;
        echo $pk.". ".utf8_encode($n)." ".utf8_encode($v)."<br>";
    }
    @mysql_free_result($id);
    mysql_close($res);
    ?>

</body>
</html>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.