modification Script météo

modification Script météo - PHP - Programmation

Marsh Posté le 20-03-2006 à 12:16:32    

bonjour,
 
sur mon site internet en création (http://www.skydivepamiers.fr/index.php) j'ai installé ce script Meteo:  
 

Code :
  1. <?
  2. setlocale(LC_TIME, "fr_FR" ); // ou "fr"
  3. $partner = "";
  4. $ville = "FRXX0076"; $vname="Paris";
  5. $jours = 4;
  6. $url = "http://xoap.weather.com/weather/local/".$ville."?cc=*&unit=s&dayf=".$jours;
  7. // Conversion Fahrenheit->Celsius
  8. function f2c($t) { return round(($t-32)*5/9); }
  9. // Lecture d'un fichier XML
  10. function lit_xml($chaine,$isFile,$item,$champs) {
  11.    // on lit le fichier ou la chaîne
  12.    if($isFile) $chaine = @file_get_contents($chaine);
  13.    if($chaine) {
  14.       // on explode sur <item>
  15.       $tmp = preg_split("/<\/?".$item.">/",$chaine);
  16.       // pour chaque <item>
  17.       for($i=1;$i<sizeof($tmp);$i++)
  18.          // on lit les champs demandés <champ>
  19.          foreach($champs as $champ) {
  20.             $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
  21.             // on ajoute au tableau
  22.             $tmp3[$champ][] = trim(@$tmp2[1]);
  23.          }
  24.       // et on retourne le tableau
  25.       return @$tmp3;
  26.    }
  27. }
  28. // Extraction primaire
  29. $xml = lit_xml($url,true,"day d=.*",array("hi","low","part p=\"d\"","part p=\"n\"" ));
  30. // Extraction des icones, messages et du taux d'humidité
  31. for($i=0;$i<$jours;$i++) {
  32.    $tmp = preg_split("/<\/?icon>/",$xml["part p=\"d\""][$i]);
  33.    $xml["icond"][$i] = $tmp[1];
  34.    $tmp = preg_split("/<\/?t>/",$xml["part p=\"d\""][$i]);
  35.    $xml["altd"][$i] = $tmp[1];
  36.    $tmp = preg_split("/<\/?hmid>/",$xml["part p=\"d\""][$i]);
  37.    $xml["hmid"][$i] = $tmp[1];
  38.    $tmp = preg_split("/<\/?icon>/",$xml["part p=\"n\""][$i]);
  39.    $xml["iconn"][$i] = $tmp[1];
  40.    $tmp = preg_split("/<\/?t>/",$xml["part p=\"n\""][$i]);
  41.    $xml["altn"][$i] = $tmp[1];
  42. }
  43. ?>
  44. <STYLE type="text/css"><!--
  45.    .fond { background-color:#669999 }
  46.    .corps { background-color:#D8E9EC }
  47.    .titre { color: #FFFFFF }
  48.    .sstitre { color: #858586 }
  49. --></STYLE>
  50. <table class=fond>
  51.    <tr><td class=titre><strong>METEO sur <?=$vname?></strong></td></tr>
  52.    <? for($i=0;$i<$jours;$i++) { ?>
  53.       <tr><td class=corps><table>
  54.       <tr>
  55.          <td colspan=3 class=sstitre><strong>
  56.             <?=ucfirst(strftime("%A %d %B %Y",time()+$i*24*3600))?>
  57.          </strong></td>
  58.       </tr>
  59.       <tr>
  60.          <td>Max: <?=($xml["hi"][$i]=="N/A" )?"N/A":f2c($xml["hi"][$i])."°C"?></td>
  61.          <td class=sstitre>JOUR</td>
  62.          <td class=sstitre>NUIT</td>
  63.       </tr>
  64.       <tr>
  65.          <td>Min: <?=($xml["low"][$i]=="N/A" )?"N/A":f2c($xml["low"][$i])."°C"?></td>
  66.          <td rowspan=2><img src="img/<?=$xml["icond"][$i]?>.png"
  67.             width=40 alt="<?=$xml["altd"][$i]?>"></td>
  68.          <td rowspan=2><img src="img/<?=$xml["iconn"][$i]?>.png"
  69.             width=40 alt="<?=$xml["altn"][$i]?>"></td>
  70.       </tr>
  71.       <tr>
  72.          <td>H%: <?=$xml["hmid"][$i]?></td>
  73.       </tr>
  74.       </table></td></tr>
  75.    <? } ?>
  76.    <tr><td align=center class=corps>
  77.       <a href="http://www.weather.com/?prod=xoap&par=<?=$partner?>"
  78.          target="_blank"><IMG src="img/TWClogo_32px.png" border=0></a>
  79.    </td></tr>
  80. </table>


 
 
il marche impec, mais il y a un probleme;  
le site qui fourni le flux xml (weather.com) ne renvoit la prévision que le matin, et tous les jours vers 15h
cela ne renvoit que des "N/A" en guise de previsions.
 
par ailleurs, sur le site d'ou vient ce script, une personne me donne une solution pour eviter cela en modifiant  
un peu le script, mais ne connaissant rien en PHP, je suis un peu perdu.
 
voila ce que me dit cette personne:
 
 
faire une Base de donnée ou plus simplement un fichier dans lequel tu stockes le flux xml de weather :
1. charge le flux xml de weather dans une variable
2. regarde si l'image est en N/A
3a. si non : sauve le flux dans le fichier
3b. si oui charge le fichier dans ta variable
4. affiche la météo d'après ta variable.
 
---------------------
 
quelqu'un aurait une idée ou un debut d'idée pour réaliser ces modifications ?
 
Merci d'avance pour votre aide.

Message cité 3 fois
Message édité par pef le 28-03-2006 à 23:42:51
Reply

Marsh Posté le 20-03-2006 à 12:16:32   

Reply

Marsh Posté le 20-03-2006 à 12:47:10    

Il ne faut pas lire le flux xml distant a chaque affichage de ta page, met lit le une fois par jour, puis tu le stockes sur ton serveur et tu lits ensuite le fichier xml sur ton serveur.


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 20-03-2006 à 18:39:21    

oui c'est exactement ca, mais mon probleme c'est de realiser la modification. je sais pas faire ca :/
peux tu m'aider ? :)


Message édité par pef le 20-03-2006 à 18:40:08
Reply

Marsh Posté le 23-03-2006 à 11:15:28    

up :hello:

Reply

Marsh Posté le 23-03-2006 à 12:21:01    

ta solution se trouve dans les fonctions file_put_contents() et get_file_contents()
 
edit : ansi que file_exists() et stat() pour l'existence et la date du fichier.


Message édité par smaragdus le 23-03-2006 à 12:22:14
Reply

Marsh Posté le 25-03-2006 à 19:28:29    

oula ca me parle pas beaucoup :/ , je crois que j'arriverai jamais a modif ce script

Reply

Marsh Posté le 26-03-2006 à 04:30:33    

pef a écrit :

oula ca me parle pas beaucoup :/ , je crois que j'arriverai jamais a modif ce script


tu sais, tu as aussi le droit de lire la doc....

Reply

Marsh Posté le 26-03-2006 à 13:09:45    

oui j'ai lu, mais ne connaissant rien, c'est pas evident, bref je vais quand meme essayer :)

Reply

Marsh Posté le 27-03-2006 à 19:50:20    

pef a écrit :

bonjour,
 
sur mon site internet en création (http://www.skydivepamiers.fr/index.php) j'ai installé un script Meteo: http://www.asp-php.net/ressources/ [...] spx?id=340 , il marche mais il y a un probleme; le site qui fourni le flux xml ne marche que le matin et vers 15h cela ne renvoit que des "N/A" en guise de previsions.
 
sur le site d'ou vient le script, une personne me donne une solution pour eviter cela en modifiant un peu le script, mais ne connaissant rien en PHP, je suis un peu perdu.
 
voila ce que me dit cette personne:
 
 
Q:"pouvez vous me mettre sur la bonne voie ? je dois utiliser une base de donnee avec du PHP ? merci d'avance."  
 
R:"17/03/2006 de Didier
Base de donnée ou plus simplement un fichier dans lequel tu stockes le flux xml de weather :
1. charge le flux xml de weather dans une variable
2. regarde si l'image est en N/A
3a. si non : sauve le flux dans le fichier
3b. si oui charge le fichier dans ta variable
4. affiche la météo d'après ta variable.
 
---------------------
 
quelqu'un aurait une idée pour réaliser ces modification ?
 
Merci d'avance pour votre aide.


Reply

Marsh Posté le 27-03-2006 à 19:57:24    

T'as pas songé une seconde à apprendre à coder en php?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 27-03-2006 à 19:57:24   

Reply

Marsh Posté le 27-03-2006 à 20:45:52    

euh si tu veux j'ai deja pas mal a faire entre mon boulot (qui n'a rien a voir) et ce site que je fais pour aider mon club!
 
vraiment je n'ai pas le tmp d'apprendre un language.  
C'est fou quand meme, on a pas le droit de demander de l'aide ?

Reply

Marsh Posté le 27-03-2006 à 21:11:58    

pef a écrit :

euh si tu veux j'ai deja pas mal a faire entre mon boulot (qui n'a rien a voir) et ce site que je fais pour aider mon club!
 
vraiment je n'ai pas le tmp d'apprendre un language.


J'vais chialer tiens, c'est trop triste comme histoire :sweat:  

pef a écrit :

C'est fou quand meme, on a pas le droit de demander de l'aide ?


Pas quand on a pas envie de faire le minimum de travail personnel requis.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 27-03-2006 à 21:21:17    

masklinn a écrit :

 
 
Pas quand on a pas envie de faire le minimum de travail personnel requis.


 
arf arretes, si tu savais les heures que je passes pour faire ce site... et toi tu es là a me faire des remarques, je trouve ce
comportement completement nul, laisses moi te le dire! tu n'as rien d'autre a faire que d'emmerder les autres ?

Reply

Marsh Posté le 27-03-2006 à 21:29:23    

pef a écrit :

arf arretes, si tu savais les heures que je passes pour faire ce site... et toi tu es là a me faire des remarques, je trouve ce
comportement completement nul, laisses moi te le dire! tu n'as rien d'autre a faire que d'emmerder les autres ?


 
Ici on aide les gens, on ne fait pas leur boulot à leur place. :sarcastic:  

Reply

Marsh Posté le 28-03-2006 à 23:37:57    

tu m'aides vachement là!

Reply

Marsh Posté le 28-03-2006 à 23:45:06    

pef a écrit :

bonjour,
 
sur mon site internet en création (http://www.skydivepamiers.fr/index.php) j'ai installé ce script Meteo:  
 

Citation :


<?
setlocale(LC_TIME, "fr_FR" ); // ou "fr"
 
$partner = "";
$ville = "FRXX0076"; $vname="Paris";
$jours = 4;
$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=0;$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];
}
 
?>
 
<STYLE type="text/css"><!--
   .fond { background-color:#669999 }
   .corps { background-color:#D8E9EC }
   .titre { color: #FFFFFF }
   .sstitre { color: #858586 }
--></STYLE>
 
<table class=fond>
   <tr><td class=titre><strong>METEO sur <?=$vname?></strong></td></tr>
 
   <? for($i=0;$i<$jours;$i++) { ?>
      <tr><td class=corps><table>
      <tr>
         <td colspan=3 class=sstitre><strong>
            <?=ucfirst(strftime("%A %d %B %Y",time()+$i*24*3600))?>
         </strong></td>
      </tr>
      <tr>
         <td>Max: <?=($xml["hi"][$i]=="N/A" )?"N/A":f2c($xml["hi"][$i])."°C"?></td>
         <td class=sstitre>JOUR</td>
         <td class=sstitre>NUIT</td>
      </tr>
      <tr>
         <td>Min: <?=($xml["low"][$i]=="N/A" )?"N/A":f2c($xml["low"][$i])."°C"?></td>
         <td rowspan=2><img src="img/<?=$xml["icond"][$i]?>.png"
            width=40 alt="<?=$xml["altd"][$i]?>"></td>
         <td rowspan=2><img src="img/<?=$xml["iconn"][$i]?>.png"
            width=40 alt="<?=$xml["altn"][$i]?>"></td>
      </tr>
      <tr>
         <td>H%: <?=$xml["hmid"][$i]?></td>
      </tr>
      </table></td></tr>
   <? } ?>
 
   <tr><td align=center class=corps>
      <a href="http://www.weather.com/?prod=xoap&par=<?=$partner?>"
         target="_blank"><IMG src="img/TWClogo_32px.png" border=0></a>
   </td></tr>
 
</table>


 
 
il marche impec, mais il y a un probleme;  
le site qui fourni le flux xml (weather.com) ne renvoit la prévision que le matin, et tous les jours vers 15h
cela ne renvoit que des "N/A" en guise de previsions.
 
par ailleurs, sur le site d'ou vient ce script, une personne me donne une solution pour eviter cela en modifiant  
un peu le script, mais ne connaissant rien en PHP, je suis un peu perdu.
 
voila ce que me dit cette personne:
 
 
faire une Base de donnée ou plus simplement un fichier dans lequel tu stockes le flux xml de weather :
1. charge le flux xml de weather dans une variable
2. regarde si l'image est en N/A
3a. si non : sauve le flux dans le fichier
3b. si oui charge le fichier dans ta variable
4. affiche la météo d'après ta variable.
 
---------------------
 
quelqu'un aurait une idée ou un debut d'idée pour réaliser ces modifications ?
 
Merci d'avance pour votre aide.


Reply

Marsh Posté le 28-03-2006 à 23:46:27    

pef a écrit :

bonjour,
 
sur mon site internet en création (http://www.skydivepamiers.fr/index.php) j'ai installé ce script Meteo:  
 

Code :
  1. <?
  2. setlocale(LC_TIME, "fr_FR" ); // ou "fr"
  3. $partner = "";
  4. $ville = "FRXX0076"; $vname="Paris";
  5. $jours = 4;
  6. $url = "http://xoap.weather.com/weather/local/".$ville."?cc=*&unit=s&dayf=".$jours;
  7. // Conversion Fahrenheit->Celsius
  8. function f2c($t) { return round(($t-32)*5/9); }
  9. // Lecture d'un fichier XML
  10. function lit_xml($chaine,$isFile,$item,$champs) {
  11.    // on lit le fichier ou la chaîne
  12.    if($isFile) $chaine = @file_get_contents($chaine);
  13.    if($chaine) {
  14.       // on explode sur <item>
  15.       $tmp = preg_split("/</?".$item.">/",$chaine);
  16.       // pour chaque <item>
  17.       for($i=1;$i<sizeof($tmp);$i++)
  18.          // on lit les champs demandés <champ>
  19.          foreach($champs as $champ) {
  20.             $tmp2 = preg_split("/</?".$champ.">/",$tmp[$i]);
  21.             // on ajoute au tableau
  22.             $tmp3[$champ][] = trim(@$tmp2[1]);
  23.          }
  24.       // et on retourne le tableau
  25.       return @$tmp3;
  26.    }
  27. }
  28. // Extraction primaire
  29. $xml = lit_xml($url,true,"day d=.*",array("hi","low","part p="d"","part p="n"" ));
  30. // Extraction des icones, messages et du taux d'humidité
  31. for($i=0;$i<$jours;$i++) {
  32.    $tmp = preg_split("/</?icon>/",$xml["part p="d""][$i]);
  33.    $xml["icond"][$i] = $tmp[1];
  34.    $tmp = preg_split("/</?t>/",$xml["part p="d""][$i]);
  35.    $xml["altd"][$i] = $tmp[1];
  36.    $tmp = preg_split("/</?hmid>/",$xml["part p="d""][$i]);
  37.    $xml["hmid"][$i] = $tmp[1];
  38.    $tmp = preg_split("/</?icon>/",$xml["part p="n""][$i]);
  39.    $xml["iconn"][$i] = $tmp[1];
  40.    $tmp = preg_split("/</?t>/",$xml["part p="n""][$i]);
  41.    $xml["altn"][$i] = $tmp[1];
  42. }
  43. ?>
  44. <STYLE type="text/css"><!--
  45.    .fond { background-color:#669999 }
  46.    .corps { background-color:#D8E9EC }
  47.    .titre { color: #FFFFFF }
  48.    .sstitre { color: #858586 }
  49. --></STYLE>
  50. <table class=fond>
  51.    <tr><td class=titre><strong>METEO sur <?=$vname?></strong></td></tr>
  52.    <? for($i=0;$i<$jours;$i++) { ?>
  53.       <tr><td class=corps><table>
  54.       <tr>
  55.          <td colspan=3 class=sstitre><strong>
  56.             <?=ucfirst(strftime("%A %d %B %Y",time()+$i*24*3600))?>
  57.          </strong></td>
  58.       </tr>
  59.       <tr>
  60.          <td>Max: <?=($xml["hi"][$i]=="N/A" )?"N/A":f2c($xml["hi"][$i])."°C"?></td>
  61.          <td class=sstitre>JOUR</td>
  62.          <td class=sstitre>NUIT</td>
  63.       </tr>
  64.       <tr>
  65.          <td>Min: <?=($xml["low"][$i]=="N/A" )?"N/A":f2c($xml["low"][$i])."°C"?></td>
  66.          <td rowspan=2><img src="img/<?=$xml["icond"][$i]?>.png"
  67.             width=40 alt="<?=$xml["altd"][$i]?>"></td>
  68.          <td rowspan=2><img src="img/<?=$xml["iconn"][$i]?>.png"
  69.             width=40 alt="<?=$xml["altn"][$i]?>"></td>
  70.       </tr>
  71.       <tr>
  72.          <td>H%: <?=$xml["hmid"][$i]?></td>
  73.       </tr>
  74.       </table></td></tr>
  75.    <? } ?>
  76.    <tr><td align=center class=corps>
  77.       <a href="http://www.weather.com/?prod=xoap&par=<?=$partner?>"
  78.          target="_blank"><IMG src="img/TWClogo_32px.png" border=0></a>
  79.    </td></tr>
  80. </table>


 
 
il marche impec, mais il y a un probleme;  
le site qui fourni le flux xml (weather.com) ne renvoit la prévision que le matin, et tous les jours vers 15h
cela ne renvoit que des "N/A" en guise de previsions.
 
par ailleurs, sur le site d'ou vient ce script, une personne me donne une solution pour eviter cela en modifiant  
un peu le script, mais ne connaissant rien en PHP, je suis un peu perdu.
 
voila ce que me dit cette personne:
 
 
faire une Base de donnée ou plus simplement un fichier dans lequel tu stockes le flux xml de weather :
1. charge le flux xml de weather dans une variable
2. regarde si l'image est en N/A
3a. si non : sauve le flux dans le fichier
3b. si oui charge le fichier dans ta variable
4. affiche la météo d'après ta variable.
 
---------------------
 
quelqu'un aurait une idée ou un debut d'idée pour réaliser ces modifications ?
 
Merci d'avance pour votre aide.


Reply

Marsh Posté le 28-03-2006 à 23:59:26    

Ca suffit :fou:
 
Tu te prends en main et tu bosses c'est tout, et arrête de te plaindre, on t'a pas forcé à faire ce site :fou:


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 29-03-2006 à 00:09:06    


// 1. charge le flux xml de weather dans une variable
$meteo=file_get_contents("weather.xml" );
// 2. regarde si l'image est en N/A
if($meteo!="N/A" )
// 3a. si non : sauve le flux dans le fichier
file_put_contents($meteo, "weather.save.xml" );
// 3b. si oui charge le fichier dans ta variable
else $meteo=file_get_contents("weather.save.xml" );
// 4. affiche la météo d'après ta variable.
$xml = lit_xml($url,true,"day d=.*",array("hi","low","part p="d"","part p="n"";));

[:dur]


Message édité par nargy le 29-03-2006 à 00:10:32
Reply

Marsh Posté le 29-03-2006 à 00:31:18    

pef a écrit :

tu m'aides vachement là!


Je t'ai donné toutes les clefs pour résoudre ton problème, maintenant tu te prends par la main et tu bosses la doc comme un grand.

Reply

Marsh Posté le 29-03-2006 à 01:04:37    

desolé pour le flood ct pas voulu :/
 
merci nargy ;)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed