script méteo problème à l'execution

Petit nouveau ! | 4 Messages

10 avr. 2006, 20:35

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 ;)
Modifié en dernier par playmobil77d le 11 avr. 2006, 08:22, modifié 1 fois.

Mammouth du PHP | 19672 Messages

10 avr. 2006, 22:07

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

11 avr. 2006, 08:23

Ok merci j'ai vais essayé sa a toute (j'espère pas mais on ne sait jamais :p)

Petit nouveau ! | 4 Messages

11 avr. 2006, 17:18

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 ?

Petit nouveau ! | 4 Messages

12 avr. 2006, 08:25

Y a t'il un moyen d'etre sûr que que le fopen recupère la page à tous les coups ?