Salut,
et bien en fait il est généré toutes les 3h
Mon vrai code est celui ci (je stock dans une BDD entre 2 MAJ du XML)
Lorsque le XML est a jour (le temsp de chargement de la page dure 5s environ) par la suite, comme les nouvelles données sont dans la base, le temps de chargement de page est largement moins long
<?php
//// Fonction de recombinaison des tableaux
function array_combine($arr1,$arr2) {
$out = array();
foreach ($arr1 as $key1 => $value1) {
$out[$value1] = $arr2[$key1];
}
return $out;
}
//// Fonction de direction du vent en fonction des degrés
function points_cardinaux($degres) {
switch($degres){
case $degres >= '337' AND $degres < '360' :
$point = 'N';
break;
case $degres >= '0' AND $degres < '22' :
$point = 'N';
break;
case $degres >= '22' AND $degres < '67' :
$point = 'NE';
break;
case $degres >= '67' AND $degres < '112' :
$point = 'E';
break;
case $degres >= '112' AND $degres < '157' :
$point = 'SE';
break;
case $degres >= '157' AND $degres < '202' :
$point = 'S';
break;
case $degres >= '202' AND $degres < '247' :
$point = 'SO';
break;
case $degres >= '247' AND $degres < '292' :
$point = 'O';
break;
case $degres >= '292' AND $degres < '337' :
$point = 'NO';
break;
}
return $point;
}
///// Fonction de jour ou de nuit
function jour_nuit($temps){
$heure_du_jour = date('H');
if($temps != "brouillard" AND $temps != "brouillardgivrant" AND $temps != "couvert" AND $temps != "neigefaible" AND $temps!="neifefaible" AND $temps != "neigeforte" AND $temps != "neigemoderer" AND $temps != "pluiefaible" AND $temps != "pluieforte" AND $temps != "pluiemoderer"){
if($heure_du_jour >= '08' AND $heure_du_jour <= '21'){
$jour_nuit = "jour_";
}
else{
$jour_nuit = "nuit_";
}
}
else {
$jour_nuit = "";
}
return $jour_nuit;
}
///// Fonction pour la mise à jour
function heure_maj($heure){
switch($heure){
case $heure > 02 AND $heure <= 05 :
$maj = 02 ;
break;
case $heure > 05 AND $heure <= 08 :
$maj = 05;
break;
case $heure > 08 AND $heure <= 11 :
$maj = 08;
break;
case $heure > 11 AND $heure <= 14 :
$maj = 11;
break;
case $heure > 14 AND $heure <= 17 :
$maj = 14;
break;
case $heure > 17 AND $heure <= 20 :
$maj = 17;
break;
case $heure > 20 AND $heure <= 23 :
$maj = 20;
break;
case $heure <= 02 :
$maj = 23;
break;
}
return $maj;
}
//// Fonction pour la légende
function legende($temps){
switch($temps){
case "soleil" :
$legende = "Ciel dégagé";
break;
case "voile" :
$legende = "Ciel voilé";
break;
case "nuageux" :
$legende = "Ciel nuageux";
break;
case "couvert" :
$legende = "Ciel couvert";
break;
case "brouillard" :
$legende = "Brouillard";
break;
case "brouillardgivrant" :
$legende = "Brouillard givrant";
break;
case "neigefaible" :
$legende = "Neige faible";
break;
case "neifefaible" :
$legende = "Neige faible";
break;
case "neigemoderer" :
$legende = "Neige modérée";
break;
case "neigeforte" :
$legende = "Neige forte";
break;
case "pluiefaible" :
$legende = "Pluie faible";
break;
case "pluiemoderer" :
$legende = "Pluie modérée";
break;
case "verglas" :
$legende = "Verglas";
break;
case "averse" :
$legende = "Averses de pluie";
break;
case "averseneige" :
$legende = "Averses de neige";
break;
case "orageloc" :
$legende = "Orages locaux";
break;
case "oragefort" :
$legende = "Orages";
break;
}
return $legende;
}
////////
/////
//////
$date_jour = date('Ymd');
$heure = date('H');
switch($heure){
case $heure >= '00' AND $heure < '02' :
$heure_jour = '23';
$jour = date('d');
$mois = date('m');
$an = date('Y');
$date_jour = date('Ymd',mktime(1,0,0,$mois,$jour-1,$an));
break;
case $heure >= '02' AND $heure < '08' :
$heure_jour = '05';
break;
case $heure >= '08' AND $heure < '13' :
$heure_jour = '11';
break;
case $heure >= '13' AND $heure < '20' :
$heure_jour = '17';
break;
case $heure >= '20' AND $heure <= '23' :
$heure_jour = '23';
break;
}
$date_meteo = $date_jour.$heure_jour;
////////
include("../admin/include/acces/connect_sql.php");
MYSQL_CONNECT($serveur,$utilisateur_sql,$mdp_sql) or die ("Connexion impossible");
MYSQL_SELECT_DB($db) or die ("Connexion à la base de données $db impossible");
$sql_meteo = mysql_query("SELECT temps, temperature, direction, vent FROM meteo WHERE date=\"$date_meteo\"");
if(mysql_num_rows($sql_meteo) != 0){
//// actualisation des donnees
$sql_maj = mysql_query("SELECT contenu FROM donnees_diverses WHERE titre=\"maj_meteo\"");
while($result_maj=mysql_fetch_array($sql_maj)){
$dern_maj = $result_maj['contenu'];
}
$heure_pr_maj = date('H');
$heure_maj = heure_maj($heure_pr_maj);
$date_maj = date('Ymd').$heure_maj;
/// on met à jour
if($date_maj > $dern_maj){
$date_array = array();
$description_array = array();
for($i = 0; $i < 12; $i++){
$url = "http://www.meteorologic.net/webmaster/xml/xml_perso_881_849eac2b5cb8ad4a1e3fd597cb038c2a.xml";
$xml = file_get_contents($url);
$xml = domxml_open_mem($xml);
$xml = $xml->document_element();
$node_array = $xml->get_elements_by_tagname('date');
$node = $node_array[$i];
$date = $node->get_content();
array_push($date_array,$date);
//////
$node_array = $xml->get_elements_by_tagname('description');
$node = $node_array[$i+2];
$description = $node->get_content();
array_push($description_array,$description);
/////
}
$donnees_meteo = array_combine($date_array, $description_array);
$donnees_du_jour = $donnees_meteo[$date_meteo];
$donnees_du_jour = explode(" = ", $donnees_du_jour);
$temps = $donnees_du_jour[1];
$temps = explode(" ",$temps,2);
$temps = $temps[0];
$temperatures = $donnees_du_jour[2];
$temperatures = explode(" ",$temperatures,2);
$temperatures = $temperatures[0];
$direction = $donnees_du_jour[4];
$direction = explode(" ",$direction,2);
$direction = $direction[0];
$vent = $donnees_du_jour[3];
$vent = explode(" ",$vent,2);
$vent = $vent[0];
/// MAJ
include("../admin/include/acces/connect_sql.php");
MYSQL_CONNECT($serveur,$utilisateur_sql,$mdp_sql) or die ("Connexion impossible");
MYSQL_SELECT_DB($db) or die ("Connexion à la base de données $db impossible");
foreach ($donnees_meteo as $key => $val) {
$date_sql = mysql_real_escape_string($key);
$donnees_du_jour_sql = explode(" = ", $val);
$temps_sql = $donnees_du_jour_sql[1];
$temps_sql = explode(" ",$temps_sql,2);
$temps_sql = $temps_sql[0];
$temperatures_sql = $donnees_du_jour_sql[2];
$temperatures_sql = explode(" ",$temperatures_sql,2);
$temperatures_sql = $temperatures_sql[0];
$direction_sql = $donnees_du_jour_sql[4];
$direction_sql = explode(" ",$direction_sql,2);
$direction_sql = $direction_sql[0];
$vent_sql = $donnees_du_jour_sql[3];
$vent_sql = explode(" ",$vent_sql,2);
$vent_sql = $vent_sql[0];
mysql_query("UPDATE meteo SET temps=\"$temps_sql\", temperature=\"$temperatures_sql\", direction=\"$direction_sql\", vent=\"$vent_sql\" WHERE date=\"$date_sql\" LIMIT 1");
}
mysql_query("UPDATE donnees_diverses SET contenu=\"$date_maj\" WHERE titre=\"maj_meteo\" LIMIT 1");
}
/////
while($result_meteo=mysql_fetch_array($sql_meteo)){
$temps = stripslashes($result_meteo['temps']);
$temperatures = stripslashes($result_meteo['temperature']);
$direction = stripslashes($result_meteo['direction']);
$vent = stripslashes($result_meteo['vent']);
}
}
///////////
else {
$date_array = array();
$description_array = array();
for($i = 0; $i < 12; $i++){
$url = "http://www.meteorologic.net/webmaster/xml/xml_perso_881_849eac2b5cb8ad4a1e3fd597cb038c2a.xml";
$xml = file_get_contents($url);
$xml = domxml_open_mem($xml);
$xml = $xml->document_element();
$node_array = $xml->get_elements_by_tagname('date');
$node = $node_array[$i];
$date = $node->get_content();
array_push($date_array,$date);
//////
$node_array = $xml->get_elements_by_tagname('description');
$node = $node_array[$i+2];
$description = $node->get_content();
array_push($description_array,$description);
/////
}
$donnees_meteo = array_combine($date_array, $description_array);
$donnees_du_jour = $donnees_meteo[$date_meteo];
$donnees_du_jour = explode(" = ", $donnees_du_jour);
$temps = $donnees_du_jour[1];
$temps = explode(" ",$temps,2);
$temps = $temps[0];
$temperatures = $donnees_du_jour[2];
$temperatures = explode(" ",$temperatures,2);
$temperatures = $temperatures[0];
$direction = $donnees_du_jour[4];
$direction = explode(" ",$direction,2);
$direction = $direction[0];
$vent = $donnees_du_jour[3];
$vent = explode(" ",$vent,2);
$vent = $vent[0];
/// insertion de la météo dans la base de donnees
include("../admin/include/acces/connect_sql.php");
MYSQL_CONNECT($serveur,$utilisateur_sql,$mdp_sql) or die ("Connexion impossible");
MYSQL_SELECT_DB($db) or die ("Connexion à la base de données $db impossible");
mysql_query("TRUNCATE meteo");
foreach ($donnees_meteo as $key => $val) {
$date_sql = mysql_real_escape_string($key);
$donnees_du_jour_sql = explode(" = ", $val);
$temps_sql = $donnees_du_jour_sql[1];
$temps_sql = explode(" ",$temps_sql,2);
$temps_sql = $temps_sql[0];
$temperatures_sql = $donnees_du_jour_sql[2];
$temperatures_sql = explode(" ",$temperatures_sql,2);
$temperatures_sql = $temperatures_sql[0];
$direction_sql = $donnees_du_jour_sql[4];
$direction_sql = explode(" ",$direction_sql,2);
$direction_sql = $direction_sql[0];
$vent_sql = $donnees_du_jour_sql[3];
$vent_sql = explode(" ",$vent_sql,2);
$vent_sql = $vent_sql[0];
mysql_query("INSERT INTO meteo VALUES ('', '$date_sql', '$temps_sql', '$temperatures_sql', '$direction_sql', '$vent_sql')");
}
$heure_pr_maj = date('H');
$heure_maj = heure_maj($heure_pr_maj);
$date_maj = date('Ymd').$heure_maj;
mysql_query("UPDATE donnees_diverses SET contenu=\"$date_maj\" WHERE titre=\"maj_meteo\" LIMIT 1");
}
////
?>
<!-- Méteo -->
<style>
<!--
a.info{
position:relative;
z-index:99;
text-decoration:none;
color:black;
}
a.info:hover{
z-index:100;
color:black;
}
a.info span{
display: none;
color:black;
}
a.info:hover span{
display:block;
position:absolute;
top:2em; left:2em;
border:1px solid #000000;
background-color:#FFFFCC;
color:#000000;
text-align: left;
font-weight:none;
font-family:Arial;
font-size:8pt;
padding:3px;
color:black;
}
-->
</style>
<table cellpadding="0" cellspacing="0" style="cursor:pointer; margin-top:0px; margin-bottom:0px;" onclick="document.location.href='meteo.php';">
<tr>
<td style="padding-right:10px;">
<p style="margin-top:0px; margin-bottom:0px;" align="center"><a class="info" href="#"><img src="../meteo/pictos/<?php
echo jour_nuit($temps);
echo $temps;
?>.gif" width="25" height="25" border="0" align="absmiddle"><span><NOBR><?php echo legende($temps) ?></NOBR></span></a></p>
</td>
<td style="padding-right:10px;"><a class="info" href="#"><img align="absmiddle" src="../meteo/pictos/temperature.gif" width="9" height="25" border="0" style="margin-right:2px;"><span><NOBR>Température : <?php echo round($temperatures); ?>°C</NOBR></span></a><font face="Arial"><span style="font-size:8pt;"><a class="info" href="#"><b><?php
echo round($temperatures);
?>°C</b><span><NOBR>Température : <?php echo round($temperatures); ?>°C</NOBR></span></a></span></font></td>
<td style="padding-right:5px;"><a class="info" href="#"><img align="absmiddle" src="../meteo/pictos/vent.gif" width="21" height="25" border="0"><span><NOBR>Direction : <?php echo points_cardinaux($direction); ?></NOBR><BR /><NOBR>Vitesse : <?php echo round($vent); ?>Km/h</NOBR></span></a></td>
<td><font face="Arial"><span style="font-size:8pt;"><a class="info" href="#"><b><?php
echo points_cardinaux($direction);
?></b><br /><?php
echo round($vent);
?> km/h<span><NOBR>Direction : <?php echo points_cardinaux($direction); ?></NOBR><BR /><NOBR>Vitesse : <?php echo round($vent); ?>Km/h</NOBR></span></a></span></font></td>
</tr>
</table>
<!-- Fin Méteo -->