#1 Thu 16 July 2020 09:18
- sylvainSIG
- Participant assidu
- Lieu: Moissac
- Date d'inscription: 29 Nov 2018
- Messages: 265
Récupérer les valeurs de Lat et Long
Bonjour,
Je suis en train de créer un formulaire pour insérer des données dans une base de données PostGreSQL/PostGIS. Si les autres champs ne posent pas de problème parce que soit des textes soit des listes déroulantes, en revanche renseigner la colonne GEOM n'est pas chose aisée.
1) J'ai cherché à récupérer les valeurs de la longitude et de latitude suite à un click sur une map OpenLayers.
Code:
var infobulle=new ol.Overlay({ element:document.getElementById('info') }); map.addOverlay(infobulle); map.on('singleclick',function(evt){ var coordX = evt.coordinate[0]; var coordY = evt.coordinate[1]; infobulle.setPosition(evt.coordinate); console.log(coordX, coordY); });
2) Désormais les données sont dans la console je dois les stocker pour qu'elles soient intégrables dans la requête PHP. L'idée est de faire quelque chose comme ça :
Code:
$coordX = $coordY = $geom = st_transform(st_point('".$coordX."', '".$coordY."'), 3857); $req = "INSERT INTO matable(geom) VALUES ('".$geom."')";
Seulement $coordX et $coordY existent mais en JS.
Question : comment passer une variable JS en variable PHP ? J'ai vu qu'on pouvait le faire via une requête ajax mais on arrive à la limite de mes compétences...
Merci pour votre aide
Sylvain
Hors ligne
#2 Thu 16 July 2020 11:05
- sylvainSIG
- Participant assidu
- Lieu: Moissac
- Date d'inscription: 29 Nov 2018
- Messages: 265
Re: Récupérer les valeurs de Lat et Long
Alors j'ai réussi à afficher les coordonnées dans des champs texte. Seulement les données renvoyées, c'est du vent, un pur retour js et non un objet que l'on peut traiter....
Hors ligne
#3 Thu 16 July 2020 11:50
- Ben22
- Participant actif
- Lieu: 33
- Date d'inscription: 11 May 2016
- Messages: 96
Re: Récupérer les valeurs de Lat et Long
Bonjour,
Je vous propose d'essayer de l'Ajax avec JQUERY avec la fonction $.ajax dans cet exemple, un json est demandé en retour mais ça peut être ce que vous voulez (cf manuel de $.ajax) :
Code:
$.ajax({ url:'lien/vers/votre/php/script.php', type:'POST', datatype:'json', //format du retour des données data:'go_coord=1&cx='+coordX+'&cy='+coodY, // j'envoie mes coordonnées via de nouvelles variables cx et cy, la variable go_coord est juste présente pour activer le bon code php error: function(){ alert('problème sur l'envoi des coordonnées')}, success: function(json){ //le reste de votre code qui exploite le json en retour } })
Côté php voila ce que ça donne :
Code:
if (isset($_POST['go_coord']){ $x = $_POST['cx']; $y = $_POST['cy']; $sql = "INSERT INTO matable(x, y) VALUES ('".$x.", ".$y." ')"; ......... }
Il est possible que des petites erreurs se soient nicher, à retriturer pour arriver à vos fins, mais c'est un des moyens que j'utilise pour envoyer des données dans postgres.
bon courage
Hors ligne
#4 Thu 16 July 2020 14:25
- sylvainSIG
- Participant assidu
- Lieu: Moissac
- Date d'inscription: 29 Nov 2018
- Messages: 265
Re: Récupérer les valeurs de Lat et Long
Merci beaucoup. Si je saisis bien, la requête ajax dans un fichier, et le fichier PHP dans un autre ?
En fait je comprend pas très bien la ligne "url" vu que je travaille sur un seul et même fichier depuis le début.
Meri
Sylvain
Hors ligne
#5 Thu 16 July 2020 14:44
- Ben22
- Participant actif
- Lieu: 33
- Date d'inscription: 11 May 2016
- Messages: 96
Re: Récupérer les valeurs de Lat et Long
alors effectivement dans cette configuration, les instructions php pour ecrire dans la base sont stockées dans un fichiers php dont l'adresse est renseignée dans la balise 'url'.
Pour les instructions javascript, dont $.ajax, vous pouvez les placer là où vous avez le reste de votre code JS. Ne pas oublier de faire appel à la bibliothèque jquey dans le Head pour utiliser cette syntaxe ajax.
Hors ligne
#6 Thu 16 July 2020 14:57
- sylvainSIG
- Participant assidu
- Lieu: Moissac
- Date d'inscription: 29 Nov 2018
- Messages: 265
Re: Récupérer les valeurs de Lat et Long
Et quel type de code, que dois je mettre après success ? Et je ne souhaite avoir qu'une seule requête sql
Dernière modification par sylvainSIG (Thu 16 July 2020 14:58)
Hors ligne
#7 Thu 16 July 2020 15:06
- Ben22
- Participant actif
- Lieu: 33
- Date d'inscription: 11 May 2016
- Messages: 96
Re: Récupérer les valeurs de Lat et Long
Si vous n'avez pas de retour attendu de données du php, vous pouvez mettre une alert ou console.log comme quoi tout s'est bien passé ou peut-être carrément l'enlever. essayez juste comme ça peut-être :
Code:
$.ajax({ url:'lien/vers/votre/php/script.php', type:'POST', data:'go_coord=1&cx='+coordX+'&cy='+coodY, error: function(){ alert('problème sur l'envoi des coordonnées')}, })
Hors ligne