Comment afficher le nom de la ville , la latitude et longitude avec openweather

Résolu/Fermé
flexi2202 Messages postés 3733 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 28 novembre 2022 - Modifié le 19 avril 2021 à 17:27
flexi2202 Messages postés 3733 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 28 novembre 2022 - 20 avril 2021 à 14:48
bonjour a tous
je commence a utiliser openweather et pour l instant j essaye d afficher la ville , la latitude , la longitude
mais impossible
je parviens a afficher des infos mais pas la ville par exemple
voici mon code

 <?php

 $url = "https://api.openweathermap.org/data/2.5/onecall?lat=50.40965313355853&lon=4.441598958007829&exclude=current,minutely,alerts&lang=fr&units=metric&appid=e30eac7b1e60d534d109bfad513a4d9";

 $raw = file_get_contents($url);
$json = json_decode($raw);
 $i=1;
  
foreach ($json->hourly as $hourly) {
$hourly->timezone; //afficher la ville
$hourly->temp; // les températures
$hourly->weather; // la météo avec $daily->weather[0]->main; $daily->weather[0]->description; etc
  echo "La ville est   " . ( $hourly->timezone);
    echo "<br>";}
?>

8 réponses

jordane45 Messages postés 36586 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2022 4 411
19 avril 2021 à 17:45
Bonjour,
Qu'est-ce qui ne marche pas au juste ?
Que contient ta variable $json ?
Que contient ta variable $hourly ?

.... Mettre des var_dump de ces variables dans ton code pour le voir ..... et nous les montrer ....
Sans ça..impossible de te venir en aide.

0
flexi2202 Messages postés 3733 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 28 novembre 2022 173
19 avril 2021 à 20:13
bonjour jordane
merci pour la réponse
ben franchement cela a une puissance terrible ces var_dump

et donc je viens de le faire sur le $json
et donc c est bien la que ce cache ce que je cherche , apparemment toutes les données météo sont enfouies dans cette variable
la partie qui m intéresse est affichée de cette façon et au début de la variable

object(stdClass)#1 (9) { ["lat"]=> float(50.4097) ["lon"]=> float(4.4416) ["timezone"]=> string(15) "Europe/Brussels"
0
jordane45 Messages postés 36586 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2022 4 411
19 avril 2021 à 20:18
Donc la variable timezone se trouve au même niveau que la variable hourly...

Sachant que le timezone... C'est une information qui permet de définir le fuseau horaire.
Aucun rapport avec la ville d'où tu prends la température.... Enfin bon, sauf si la documentation de ton API dit le contraire mais j'en doute...
0
flexi2202 Messages postés 3733 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 28 novembre 2022 173
19 avril 2021 à 22:01
merci pour la reponse jordane
non la variable ce trouve dans le $json
dans la variable $hourly elle s y trouve pas

mais il y a également la longitude et la latitude qui dans l url peux etre remplace par la ville
je pense
donc a faire un essai ...
quoi que même la latitude et la longitude je ne parviens pas a l extraire
0
jordane45 Messages postés 36586 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2022 4 411
Modifié le 19 avril 2021 à 22:04
Je n'ai pas dit qu'elle se trouvait dans la variable $hourly
Mais elle se trouve au même niveau...
Autrement dit, tu y accède de la même façon que la variable $hourly...
0
flexi2202 Messages postés 3733 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 28 novembre 2022 173
19 avril 2021 à 22:42
ah ok
mon objectif final est de pouvoir laisser a utilisateur le choix de choisir sa ville
mais comment y arriver
0
jordane45 Messages postés 36586 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2022 4 411
Modifié le 19 avril 2021 à 23:13
Tu peux toujours utiliser un formulaire dans lequel l'utilisateur choisira sa ville et prendre en compte ce qu'il aura indiqué lors de l'appel à ton API.

Si ta question concerne le fonctionnement de cette API, là nous on n'y pourra rien...
Commence par regarder la documentation...
Comme je te l'ai déjà dit nous n'avons pas de clé pour essayer et je n'ai pas envie d'aller me créer un compte.
Et puis, quand les informations sont disponibles dans la documentation officielle, nous n'avons pas vocation à aller les y chercher à ta place.
Fais donc quelques efforts....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flexi2202 Messages postés 3733 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 28 novembre 2022 173
19 avril 2021 à 23:44
merci pour l aide
non je ne cherche pas le fonctionnement , je suis allé voir la documentation , mais bon comme toute documentation il faut la comprendre ...je pense m avoir bien débrouillé , mais je bloque sur des détails

j avais pas pense avec un formulaire
donc je fais un premier essai en remplaçant dans l url la clé par une variable
et la variable est bien entendu définie en début de code
mais il doit y avoir une erreur car rien ne s affiche

<?php
$apiKey = "e30eac7b1e60d534d109bfad513a4d9" ;




$url = "https://api.openweathermap.org/data/2.5/onecall?lat=50.40965313355853&lon=4.441598958007829&lang=fr&units=metric&appid=. $apiKey";
$raw = file_get_contents($url);
$json = json_decode($raw);
foreach ($json->daily as $daily) {
    $daily->dt; // le timestamp du jour, tu as aussi sunrise, sunset, etc
    $daily->temp; // les températures avec $daily->temp->day; $daily->temp->max; etc
    $daily->weather; // la météo avec $daily->weather[0]->main; $daily->weather[0]->description; etc
    print_r( $daily->dt) ;
    echo "<br>";
}

?>
0
flexi2202 Messages postés 3733 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 28 novembre 2022 173
19 avril 2021 à 23:53
ah voila cela semble fonctionner cette fois pour ceux que cela interesse

<?php

$apiKey = "e30eac7b1e60d534d109bfad513a4d9" ;




$url = "https://api.openweathermap.org/data/2.5/onecall?lat=50.40965313355853&lon=4.441598958007829&lang=fr&units=metric&appid=$apiKey";
echo $url;
$raw = file_get_contents($url);
$json = json_decode($raw);
foreach ($json->daily as $daily) {
    $daily->dt; // le timestamp du jour, tu as aussi sunrise, sunset, etc
    $daily->temp; // les températures avec $daily->temp->day; $daily->temp->max; etc
    $daily->weather; // la météo avec $daily->weather[0]->main; $daily->weather[0]->description; etc
    print_r( $daily->dt) ;
    echo "<br>";
}

 

 
?>
0
jordane45 Messages postés 36586 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2022 4 411
20 avril 2021 à 00:08
Il n'y a aucun rapport entre la variable APIkey.... Et le fait de proposer une recherche par ville...
D'ailleurs, il semble que la recherche se fasse sur la longitude et la latitude... Qui, si je ne m'abuse, sont écrits en dur dans l' url du code que tu nous montres...
0
flexi2202 Messages postés 3733 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 28 novembre 2022 173
20 avril 2021 à 00:23
merci pour l aide jordane

comme explique c est un premier essai
si cela fonctionne avec la clé
il suffit juste de remplacer la latitude et la longitude par deux variables , comme je l ai fait avec ma clé

par contre si on veux trouver la ville il faut connaître la longitude et latitude
il y a des fichiers compresse avec ce genre d info sur le site
donc cela est faisable

demain je ferais des autres essais
0
flexi2202 Messages postés 3733 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 28 novembre 2022 173
20 avril 2021 à 14:48
voila après des essais j ai pas utiliser la bonne api pour effectuer cela
avec celle que j ai utilisé on ne sait pas faire une recherche par ville

je reste sur openweather mais je change d api
0