4/5 (3 avis)
Snippet vu 13 034 fois - Téléchargée 19 fois
<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>
25 mars 2012 à 14:43
crsetaftl est un flag qui stipule l'état de l'enregistrement dans la base (en creation, cree, supprime...) et qui de ce fait n'a pas vraiment de rapport avec la choucroute dans notre cas (d'où l'absence de commentaires à cet égard)
pour la base SQL, qui commence avec un préfix stipulant notre environnement (developpement, test, production) il ets simpplement possible de l'enlever n et de nommer les tables "_TBLLIE", ou lui donner un autre nom. Cette table doit comporter deux champs : longitude et latitude
la difference entre $database_name et $g_database_name est effectivement une erreur de ma part, lorsque j'ai "anonymisé" mon code. bien entendu c'est le même champs (je vais corriger cela si je peux)
Enfin pour les cotes (simples cotes) effectivement je n'ai pas traité car dans ma base de donnée, je n'avais pas de cotes.
Dernier enfin, le fait de ne pas boucler correspondait à un besoin très précis (j'avais penser à boucler) c'est que parfois, dans la boucle, il ne trouvait pas les coordonnées dans GMap. Ce que Georges (propose comme amélioration, je l'avais codé au départ et l'ai volontairement supprimé..
@ Georges : je me tiens à ta disposition si tu veux de l'aide
25 mars 2012 à 11:46
Intéressant comme script, mais il manque pas mal d'infos pour le faire tourner !
Comme la base sql qu'il faudrait joindre, que l'on comprenne à quoi correspondent certaines tables.
exemple : CDEETAFTL='CRS' correspond à quoi ?
Et il y a des erreurs dans la source, comme par exemple ligne 73 le nom de la base s'appel "$database_name" et ligne 76 "$g_database_name"
J'ai quand même réussi à le lancer, mais ca bloque régulièrement dès que l'adresse comporte un '
Amélioration possible : Une petit boucle qui le fait tourner sur une table d'adresse !
Georges
29 janv. 2012 à 11:09
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.