Blog of ChristoPHPe !
Bienvenue sur mon Blog !

Blog of ChristoPHPe !

[PHP] La météo de demain

31 juillet 2008 à 16:31, par Christophe

Bonjour :)
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&eacute;t&eacute;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&eacute;rature Max: <?php echo ($xml["hi"][$i]=="N/A")?"Inconnue":f2c($xml["hi"][$i])."°C" ?><br />
    Temp&eacute;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 />&nbsp;<br />
    JOUR<br />
    <img src="./weather_img/<?php echo $xml["icond"][$i]; ?>.png" width="40" alt="<?php echo $xml["altd"][$i]; ?>" /><br />&nbsp;<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.

Et ça donne ça

Si vous avez des questions, des bugs, n’hésitez pas à poster un commentaire ;)

Un Commentaire pour “[PHP] La météo de demain”


  1. merci

Laisser un commentaire

Nom

Adresse e-Mail

Site Web

 | 




-->