script méteo problème à l'execution

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : script méteo problème à l'execution

par playmobil77d » 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 ?

par playmobil77d » 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 ?

par Invité » 11 avr. 2006, 08:23

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

par Cyrano » 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.

script méteo problème à l'execution

par playmobil77d » 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 ;)