[PHP] La météo de demain
31 juillet 2008 à 16:31, par ChristopheBonjour ![]()
Je vais vous dévoiler une technique pour insérer la météo de demain sur votre site web !
le principe est assez simple :
- votre site fait appel à un site de météo, ce site vous renvoi la température etc… puis vous l’afficher, c’est simple comme ça, mais le code est un peu plus complexe
Voici le code presque près à l’emploi :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | <?php setlocale(LC_TIME, "fr_FR"); // ou "fr" header('Content-Type: text/html; charset=utf-8'); $ville = "FRXX0157"; $vname="Istres"; $jours = 2; // mettez 3, vous verrez ;) $url = "http://xoap.weather.com/weather/local/".$ville."?cc=*&unit=s&dayf=".$jours; // Conversion Fahrenheit->Celsius function f2c($t) { return round(($t-32)*5/9); } // Lecture d'un fichier XML function lit_xml($chaine,$isFile,$item,$champs) { // on lit le fichier ou la chaîne if($isFile) $chaine = @file_get_contents($chaine); if($chaine) { // on explode sur <item> $tmp = preg_split("/<\/?".$item.">/",$chaine); // pour chaque <item> for($i=1;$i<sizeof($tmp);$i++) // on lit les champs demandés <champ> foreach($champs as $champ) { $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]); // on ajoute au tableau $tmp3[$champ][] = trim(@$tmp2[1]); } // et on retourne le tableau return @$tmp3; } } // Extraction primaire $xml = lit_xml($url,true,"day d=.*",array("hi","low","part p=\"d\"","part p=\"n\"")); // Extraction des icones, messages et du taux d'humidité for($i=1;$i<$jours;$i++) { $tmp = preg_split("/<\/?icon>/",$xml["part p=\"d\""][$i]); $xml["icond"][$i] = $tmp[1]; $tmp = preg_split("/<\/?t>/",$xml["part p=\"d\""][$i]); $xml["altd"][$i] = $tmp[1]; $tmp = preg_split("/<\/?hmid>/",$xml["part p=\"d\""][$i]); $xml["hmid"][$i] = $tmp[1]; $tmp = preg_split("/<\/?icon>/",$xml["part p=\"n\""][$i]); $xml["iconn"][$i] = $tmp[1]; $tmp = preg_split("/<\/?t>/",$xml["part p=\"n\""][$i]); $xml["altn"][$i] = $tmp[1]; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>La Météo de demain</title> </head> <body> <?php for($i=1;$i<$jours;$i++) { ?> Jour du <?php echo utf8_encode(ucfirst(strftime("%A %d %B %Y",time()+$i*24*3600))); ?><br /> Température Max: <?php echo ($xml["hi"][$i]=="N/A")?"Inconnue":f2c($xml["hi"][$i])."°C" ?><br /> Température Min: <?php echo ($xml["low"][$i]=="N/A")?"Inconnue":f2c($xml["low"][$i])."°C" ?><br /> Humidité: <?php echo ($xml["hmid"][$i]=="N/A")?"Inconnue":$xml["hmid"][$i]." %"?><br /> <br /> JOUR<br /> <img src="./weather_img/<?php echo $xml["icond"][$i]; ?>.png" width="40" alt="<?php echo $xml["altd"][$i]; ?>" /><br /> <br /> NUIT<br /> <img src="./weather_img/<?php echo $xml["iconn"][$i]; ?>.png" width="40" alt="<?php echo $xml["altn"][$i]; ?>" /> <hr /> <?php } ?> </body> </html> |
Ça, c’est pour la ville de Istres, la ville la plus proche de chez moi qui référencée par le site de la météo…
Donc vous allez probablement changer cette ville, pour changer, il faut trouver un code :
Pour Istres, c’est FRXX0157.
Pour trouver le code de votre ville, rendez-vous ici et dans le champs de recherche en haut, vous tapez votre ville, si il trouve rien, tapez une ville plus proche et plus grande de chez vous. Si il trouve, temps-mieux, cliquez-donc sur le lien sous la forme : Ville, Pays. Après, il ne vous reste plus qu’a récupérer le code ville dans l’URL, par exemple, toujours par la ville d’Istres :
http://www.weather.com/outlook/travel/businesstraveler/local/FRXX0157?from=search_city
le code est entre le slash (/) et le point d’interrogation (?)
Copiez-le donc, puis collez-le à la place… changez également le nom de la ville par le votre dans le code
Pour les flémards, voici les codes des principales villes de France :
Paris : FRXX0076
Marseille : FRXX0059
Lyon : FRXX0055
Toulouse : FRXX0099
Nice : FRXX0073
Nantes : FRXX0072
Strasbourg : FRXX0095
Montpellier : FRXX0068
Bordeaux : FRXX0016
Lille : FRXX0052
Testez, et ça marche !
Mais… il doit y avoir des petites images non ?
Oui, en effet, il manque les images des temps: pluie, soleil, nuageux etc…
J’ai réussi à trouvé ses petites images en cherchant, et j’ai fais exprès de réduire l’image avec HTML et non pas sur l’image, pour vous permettre de pouvoir encore plus exploiter ça…
Donc vous pouvez vous procurer les images ici.
Voilà, le design n’est pas terrible, je vous laisse arranger ça ![]()
Merci à Asp-Php.net pour ce script.
Si vous avez des questions, des bugs, n’hésitez pas à poster un commentaire ![]()
