Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Thu 16 July 2020 09:18

sylvainSIG
Participant assidu
Lieu: Moissac
Date d'inscription: 29 Nov 2018
Messages: 263

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: 263

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: 95

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: 263

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: 95

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: 263

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: 95

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

 

Pied de page des forums

Powered by FluxBB