Utiliser les infos d'un tableau JSON

Résolu/Fermé
Greemty - Modifié le 21 sept. 2019 à 17:50
 Greemty - 21 sept. 2019 à 18:32
Bonjour,
je souhaite réaliser un site avec une carte, pour ce faire je dois géocoder des adresses ce que je pense avoir réussi mais les informations que je reçois sont sous la forme d'un objet JSON et j'aimerai récupérer seulement la latitude et la longitude de manière à pouvoir placer un marqueur sur ma carte. Voci mon code :
<?php 
            $requser = $bdd->prepare('SELECT * FROM infos WHERE id = ?');
            $requser->execute(array(1));
            $userinfo = $requser->fetch();
        ?>
        <script>
            /* Différents marqueurs */
            var geocode = <?php echo $userinfo['cooradresselog1']; ?>;
            var lat = geocode[0]["lat"][0];
            var lon = geocode[0]["lon"][0];
            var marker = L.marker([lon,lat]).addTo(map);
            marker.bindPopup("").closePopup();
        </script>

Les données stockées dans ma base de données sont les suivantes :
[{"place_id":"222927656"
   ,"licence":"https:\/\/locationiq.com\/attribution"
   ,"osm_type":"relation"
   ,"osm_id":"145776"
   ,"boundingbox":["49.2608124","49.2934736","-0.7275671","-0.6757378"]
   ,"lat":"49.2764624"
   ,"lon":"-0.7024738"
   ,"display_name":"Bayeux, Calvados, Normandy, Metropolitan France, 14400, France"
   ,"class":"boundary","type":"administrative","importance":0.92352299096107
   ,"icon":"https:\/\/locationiq.org\/static\/images\/mapicons\/poi_boundary_administrative.p.20.png"
}]


EDIT : Ajout des balises de code
EDIT² : Déplacement du sujet dans le bon forum..... PHP (ou à la limite, Javascript ).


Merci d'avance pour vos réponses !
A voir également:

1 réponse

jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689
21 sept. 2019 à 17:55
Bonjour,

En PHP... il faut utiliser la fonction json_decode. avec le second paramètre à "true" si tu souhaites manipuler les données comme un array...

Et vu que tu veux ensuite mettre cette donnée dans un JS... il faut penser à mettre des quotes
var geocode = "<?php echo $userinfo['cooradresselog1']; ?>";


Et vu que tu ne nous as pas parlé d'erreur... c'est donc que tu n'utilises pas la CONSOLE de ton navigateur... Grosse erreur... surtout quand on code du Javascript.
Donc active la console de ton navigateur ( console Javascript cela va de soit ) puis ajoutes un
console.log("geocode",geocode);

histoire de voir ce que ta variable contient.


Mais dans ton code... il vaudrait mieux rester en JSON dans le Javascript... et d'ailleurs... tout charger depuis du Javascript ( avec un peu d'ajax pour aller chercher les données en bdd )
https://codes-sources.commentcamarche.net/source/102253-exemple-ajax-en-jquery

1
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689
21 sept. 2019 à 18:16
0
Merci beaucoup pour vos conseils !
J'ai réussi à faire ce que je voulais en changeant légèrement de méthode...
Malgré tout je vais me renseigner sur votre technique qui semble bien plus orthodoxe.
Si intéressé :

<?php 
$requser = $bdd->prepare('SELECT * FROM infos WHERE id = ?');
$requser->execute(array(1));
$userinfo = $requser->fetch();
$jsondata = $userinfo['cooradresselog1'];
$stjson = "$jsondata";
$coo = json_decode($stjson, true);
foreach ($coo as $emp) {
$longitude = $emp[lat];
$latitude = $emp[lon];

?>

<script>
/* Différents marqueurs */

var marker = L.marker([<?php echo $longitude.", ".$latitude; ?>]).addTo(map);
marker.bindPopup("").closePopup();
<?php } ?>
</script>
0