Page 1 sur 1

script méteo problème à l'execution

Posté : 10 avr. 2006, 20:35
par playmobil77d
Bonjour @ tous,

Eh oui c'est encore moi :p. Cette fois, j'ai fais ce script pour récupérer la météo sur le site de météo france, et mon problème est que très souvent lors de la première execution, il ne m'affiche rien, et sinon il m'affiche que des warning (le reste du temps il fonctionne très bien :p.
Pouvez-vous me dire s'il y a des choses à changer ?
Voici mon code :
<?  

//Fonction de recherche

function Search($debut, $recher, $fin, $texte, $offset){

    @preg_match("/($debut)($recher)($fin)/is", $texte, $valeur);

    return $valeur[$offset];

}
 

//Récupération de la page web

$page_web = 'http://www.meteofrance.com/FR/mameteo/prevVille.jsp?LIEUID=FR77393';

 
$page = fopen ($page_web, 'r')

 or die('Impossible d\'ouvrir la page '.$page_web.'.');

$contenu_html = '';

while (!feof ($page)) {

      $contenu_html .= fgets($page, 4096);
}

 
//Jour et heure

$jour = Search("<td align=\"right\" class=\"txt11\"><b><\/b> Heure locale :<\/td><td width=\"40\" align=\"center\" class=\"txt11\">",".*","h<\/td><td width=\"40\" align=\"center\" class=\"txt11\">", $contenu_html, 2);

$jour_def =explode ("<",$jour);

 
//Temps

$temps = Search("<td width=\"75\"><a href=\"#\" onMouseOver=\"showAlt\(\')($jour_def[0])(:)(.*)(\', false\)\" onMouseOut=\"hideAlt\(\)\"><img src=\"\/img\/picto\/gd\/mf\/","p1?[0-9]","\.gif\" border=\"0\"><\/a><\/td>", $contenu_html, 6);
 
//Température

$temp = Search("<tr class=\"bleuTclair\"><td class=\"txt11\">Temp&eacute;rature \(°C\)<\/td><td width=\"40\" align=\"center\" class=\"txt11\">","[0-9]?[0-9]","&deg;<\/td>", $contenu_html, 2);
 
//Direction du vent

$direc = Search("<tr bgcolor=\"#FFFFFF\"><td class=\"txt11\">Direction du vent<\/td><td width=\"40\" align=\"center\" class=\"txt11\"><img src=\"\/img\/picto\/atm\/","v[enosv][enos]?[eo]?","\.gif\">", $contenu_html, 2);
 
//Vitesse du vent

$vites = Search("<tr class=\"bleuTclair\"><td class=\"txt11\">Vitesse du vent \(km\/h\)<\/td><td width=\"40\" align=\"center\" class=\"txt11\">","[0-9]?[0-9]","<\/td>", $contenu_html, 2);

fclose($page);
?>

<table background="../images/nuage.gif" width="100%" height="80px" align="center" cellpadding="0" cellspacing="0">
<?
    echo "<tr><td class=\"Meteo\" colspan=\"2\" class=\"Style12\" align=\"center\" valign=\"middle\">".$jour_def[0]." à Fontenay Trésigny<td></tr>";
    echo "<tr><td class=\"Meteo\" align=\"center\" valign=\"middle\"><center><img src=\"../images/".$temps.".gif\" width=\"20\" height=\"20\"></center></div></td>";
    echo "<td class=\"Meteo\" class=\"Style12\" align=\"center\" valign=\"middle\">".$temp."°C.</td></tr>";
    echo "<tr><td class=\"Meteo\" align=\"center\" valign=\"middle\"><img src=\"../images/".$direc.".gif\"></td>";
    echo "<td class=\"Meteo\" class=\"Style12\" align=\"center\" valign=\"middle\">".$vites." km/h</td></tr>";
?>

</table> 
Merci @ tous ;)

Posté : 10 avr. 2006, 22:07
par Cyrano
La première chose à faire est au niveau de la fonction :
-1- On vire le "@" : quand on développe, on ne masque pas les message d'erreur, c'est un cache-misère, on corrige;
-2- On fait des concaténation surtout dans une expression régulière où le "$" a une signification particulière ;
function Search($debut, $recher, $fin, $texte, $offset)
{
    preg_match("/(". $debut .")(". $recher .")(". $fin .")/is", $texte, $valeur);
    return $valeur[$offset];
}
Essaye déjà avec ça et reviens si tu as toujours le même problème, on continuera l'investigation.

Posté : 11 avr. 2006, 08:23
par Invité
Ok merci j'ai vais essayé sa a toute (j'espère pas mais on ne sait jamais :p)

Posté : 11 avr. 2006, 17:18
par playmobil77d
Bon en fait le code marche comme avant cad bien sauf à la premiere execution ou il me fait ces erreurs :
Notice: Undefined offset: 2 in d:\mon dossier\mon site\php\pages\meteo.php on line 5

Notice: Undefined offset: 6 in d:\mon dossier\mon site\php\pages\meteo.php on line 5

Notice: Undefined offset: 2 in d:\mon dossier\mon site\php\pages\meteo.php on line 5

Notice: Undefined offset: 2 in d:\mon dossier\mon site\php\pages\meteo.php on line 5

Notice: Undefined offset: 2 in d:\mon dossier\mon site\php\pages\meteo.php on line 5
Je pense que dans ce cas il n'arrive pas a voir la page et donc pas analyser les données. Qu'en pensez vous ?

Posté : 12 avr. 2006, 08:25
par playmobil77d
Y a t'il un moyen d'etre sûr que que le fopen recupère la page à tous les coups ?