Page 8 sur 8

Re: Donnée du jour sur plusieurs années

Posté : 20 févr. 2014, 09:10
par webmaster
Bonjour,
webmaster a écrit :Dans ce cas la moyenne reste obligatoirement plausible, mais légèrement faussé si le jour manquant il y avait une mesure extrême.
Tudgur a écrit :Oui, mais on peut très bien imaginer une perte de réception un jour ou un minimum de -15°C par exemple est atteint.
Et dans ce cas la pluvio et l'ensoleillement ne sont pas comptabilisés non plus !
Je ne saisis pas trop.
Oui, nous sommes bien d'accord.
Pour le moment ne complète que le fichier jour afin de ne pas continuer à enregistrer de faux cumuls.
Il est simple de recalculer les cumuls entre deux dates dans les fichiers mois et an.

Re: Donnée du jour sur plusieurs années

Posté : 20 févr. 2014, 09:52
par Tudgur
Bonjour
webmaster a écrit :Pour le moment ne complète que le fichier jour afin de ne pas continuer à enregistrer de faux cumuls.
C'est ce que j'ai fait.
webmaster a écrit :Il est simple de recalculer les cumuls entre deux dates dans les fichiers mois et an.
Il y a un truc ?

Re: Donnée du jour sur plusieurs années

Posté : 20 févr. 2014, 15:51
par webmaster
Met ce code à la racine de ton site hébergeur de la base et lance le script.
Si ta table meme_periode_jours est à jours, cela agrémentera automatiquement tes tables mois et an pour le mois de Février.
Fais une sauvegarde de ta base avant de faire la manip, on ne sait jamais.

Code : Tout sélectionner

<?php

function date_us($date) {
$split = explode("/",$date);
$annee = $split[2];
$mois = $split[1];
$jour = $split[0];
return "$annee"."-"."$mois"."-"."$jour";
}
    $date_debut='2014-02-01';
    $date_fin='2014-'.date('m-d', strtotime('- 1 day'));

    $serveur="localhost";
    $login="root";
    $pass="";
    $base="meteoplouguerne_serreche";
    $table_jours="meme_periode_jours";
    $table_mois="meme_periode_mois";
    $table_ans="meme_periode_annees";
   
$db = mysql_connect($serveur, $login, $pass);
mysql_query("set names UTF8");

for ($boucle=date("j")-1; $boucle; $boucle--)
{

$date_jour = date('Y-m-d', strtotime('- '.$boucle.' days'));
echo $date_jour,'<br>';
//
//                                             ENREGISTREMENT DES MESURES CUMULS ET MOYENNES MENSUELLES J-1
//
$i = 0;
$total_jour_val_temp_min = 0;
$total_jour_val_temp_moy = 0;
$total_jour_val_temp_max = 0;
$total_jour_val_hum_min = 0;
$total_jour_val_hum_moy = 0;
$total_jour_val_hum_max = 0;
$total_jour_val_pression_min = 0;
$total_jour_val_pression_moy = 0;
$total_jour_val_pression_max = 0;
$total_jour_val_pluie = 0;
$total_jour_val_vent_max = 0;
$total_jour_direction_vent = 0;
$total_jour_val_rafale_max = 0;
$total_jour_val_rayon_max = 0;
$total_jour_ensoleillement = 0;

mysql_select_db($base,$db);
$sql = "SELECT * FROM ".$table_jours." WHERE jour_date >= '".$date_debut."' AND jour_date <= '".date('Y-m-d', strtotime('- '.$boucle.' days'))."' ORDER by jour_date ";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_assoc($req))
   {
   $i = $i + 1;
   $jour_val_temp_min = $data['jour_val_temp_min'];
   $jour_val_temp_moy = $data['jour_val_temp_moy'];
   $jour_val_temp_max = $data['jour_val_temp_max'];
   $jour_val_hum_min = $data['jour_val_hum_min'];
   $jour_val_hum_moy = $data['jour_val_hum_moy'];
   $jour_val_hum_max = $data['jour_val_hum_max'];
   $jour_val_pression_min = $data['jour_val_pression_min'];
   $jour_val_pression_moy = $data['jour_val_pression_moy'];
   $jour_val_pression_max = $data['jour_val_pression_max'];
   $jour_val_pluie = $data['jour_val_pluie'];
   $jour_val_vent_max = $data['jour_val_vent_max'];
   $jour_direction_vent = $data['jour_direction_vent'];
   $jour_val_rafale_max = $data['jour_val_rafale_max'];
   $jour_val_rayon_max = $data['jour_val_rayon_max'];
   $jour_ensoleillement = $data['jour_ensoleillement'];   
   
   $total_jour_val_temp_min = $total_jour_val_temp_min + $jour_val_temp_min;
   $total_jour_val_temp_moy = $total_jour_val_temp_moy + $jour_val_temp_moy;
   $total_jour_val_temp_max = $total_jour_val_temp_max + $jour_val_temp_max;   
   $total_jour_val_hum_min = $total_jour_val_hum_min + $jour_val_hum_min;
   $total_jour_val_hum_moy = $total_jour_val_hum_moy + $jour_val_hum_moy;
   $total_jour_val_hum_max = $total_jour_val_hum_max + $jour_val_hum_max;   
   $total_jour_val_pression_min = $total_jour_val_pression_min + $jour_val_pression_min;
   $total_jour_val_pression_moy = $total_jour_val_pression_moy + $jour_val_pression_moy;
   $total_jour_val_pression_max = $total_jour_val_pression_max + $jour_val_pression_max;   
   $total_jour_val_pluie = $total_jour_val_pluie + $jour_val_pluie;
   $total_jour_val_vent_max = $total_jour_val_vent_max + $jour_val_vent_max;
   $total_jour_direction_vent = $total_jour_direction_vent + $jour_direction_vent;
   $total_jour_val_rafale_max = $total_jour_val_rafale_max + $jour_val_rafale_max;
   $total_jour_val_rayon_max = $total_jour_val_rayon_max + $jour_val_rayon_max;
   $total_jour_ensoleillement = $total_jour_ensoleillement + $jour_ensoleillement;   
   }

$moyenne_mois_val_temp_min = $total_jour_val_temp_min / $i;
$moyenne_mois_val_temp_moy = $total_jour_val_temp_moy / $i;
$moyenne_mois_val_temp_max = $total_jour_val_temp_max / $i;
$moyenne_mois_val_hum_min = $total_jour_val_hum_min / $i;
$moyenne_mois_val_hum_moy = $total_jour_val_hum_moy / $i;
$moyenne_mois_val_hum_max = $total_jour_val_hum_max / $i;
$moyenne_mois_val_pression_min = $total_jour_val_pression_min / $i;
$moyenne_mois_val_pression_moy = $total_jour_val_pression_moy / $i;
$moyenne_mois_val_pression_max = $total_jour_val_pression_max / $i;
$moyenne_mois_val_pluie = $total_jour_val_pluie;
$moyenne_mois_val_vent_max = $total_jour_val_vent_max / $i;
$moyenne_mois_direction_vent = $total_jour_direction_vent / $i;
$moyenne_mois_val_rafale_max = $total_jour_val_rafale_max / $i;
$moyenne_mois_val_rayon_max = $total_jour_val_rayon_max / $i;
$moyenne_mois_ensoleillement = $total_jour_ensoleillement;

$sql_insert = "
      mois_date = '$date_jour',
      mois_val_temp_min = '$moyenne_mois_val_temp_min',      
      mois_val_temp_moy = '$moyenne_mois_val_temp_moy',
      mois_val_temp_max = '$moyenne_mois_val_temp_max',   
      mois_val_hum_min = '$moyenne_mois_val_hum_min',      
      mois_val_hum_moy = '$moyenne_mois_val_hum_moy',
      mois_val_hum_max = '$moyenne_mois_val_hum_max',   
      mois_val_pression_min = '$moyenne_mois_val_pression_min',   
      mois_val_pression_moy = '$moyenne_mois_val_pression_moy',
      mois_val_pression_max = '$moyenne_mois_val_pression_max',
      mois_val_pluie = '$moyenne_mois_val_pluie',
      mois_val_vent_max = '$moyenne_mois_val_vent_max',   
      mois_direction_vent = '$moyenne_mois_direction_vent',
      mois_val_rafale_max = '$moyenne_mois_val_rafale_max',   
      mois_val_rayon_max = '$moyenne_mois_val_rayon_max',   
      mois_ensoleillement = '$moyenne_mois_ensoleillement'";
   
mysql_query ("INSERT INTO ".$table_mois." SET ".$sql_insert." ON DUPLICATE KEY UPDATE ".$sql_insert) or die ("<b>Erreur</b> dans la requète <b>" . $sql_insert . "</b> : "  . mysql_error());;

//
//                                             ENREGISTREMENT DES MESURES CUMULS ET MOYENNES ANNUELLES J-1
//
$i = 0;
$total_jour_val_temp_min = 0;
$total_jour_val_temp_moy = 0;
$total_jour_val_temp_max = 0;
$total_jour_val_hum_min = 0;
$total_jour_val_hum_moy = 0;
$total_jour_val_hum_max = 0;
$total_jour_val_pression_min = 0;
$total_jour_val_pression_moy = 0;
$total_jour_val_pression_max = 0;
$total_jour_val_pluie = 0;
$total_jour_val_vent_max = 0;
$total_jour_direction_vent = 0;
$total_jour_val_rafale_max = 0;
$total_jour_val_rayon_max = 0;
$total_jour_ensoleillement = 0;

mysql_select_db($base,$db);
$sql = "SELECT * FROM ".$table_jours." WHERE jour_date >= '".$date_debut."' AND jour_date <= '".date('Y-m-d', strtotime('- '.$boucle.' days'))."' ORDER by jour_date ";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_assoc($req))
   {
   $i = $i + 1;
   $jour_val_temp_min = $data['jour_val_temp_min'];
   $jour_val_temp_moy = $data['jour_val_temp_moy'];
   $jour_val_temp_max = $data['jour_val_temp_max'];
   $jour_val_hum_min = $data['jour_val_hum_min'];
   $jour_val_hum_moy = $data['jour_val_hum_moy'];
   $jour_val_hum_max = $data['jour_val_hum_max'];
   $jour_val_pression_min = $data['jour_val_pression_min'];
   $jour_val_pression_moy = $data['jour_val_pression_moy'];
   $jour_val_pression_max = $data['jour_val_pression_max'];
   $jour_val_pluie = $data['jour_val_pluie'];
   $jour_val_vent_max = $data['jour_val_vent_max'];
   $jour_direction_vent = $data['jour_direction_vent'];
   $jour_val_rafale_max = $data['jour_val_rafale_max'];
   $jour_val_rayon_max = $data['jour_val_rayon_max'];
   $jour_ensoleillement = $data['jour_ensoleillement'];   
   
   $total_jour_val_temp_min = $total_jour_val_temp_min + $jour_val_temp_min;
   $total_jour_val_temp_moy = $total_jour_val_temp_moy + $jour_val_temp_moy;
   $total_jour_val_temp_max = $total_jour_val_temp_max + $jour_val_temp_max;   
   $total_jour_val_hum_min = $total_jour_val_hum_min + $jour_val_hum_min;
   $total_jour_val_hum_moy = $total_jour_val_hum_moy + $jour_val_hum_moy;
   $total_jour_val_hum_max = $total_jour_val_hum_max + $jour_val_hum_max;   
   $total_jour_val_pression_min = $total_jour_val_pression_min + $jour_val_pression_min;
   $total_jour_val_pression_moy = $total_jour_val_pression_moy + $jour_val_pression_moy;
   $total_jour_val_pression_max = $total_jour_val_pression_max + $jour_val_pression_max;   
   $total_jour_val_pluie = $total_jour_val_pluie + $jour_val_pluie;
   $total_jour_val_vent_max = $total_jour_val_vent_max + $jour_val_vent_max;
   $total_jour_direction_vent = $total_jour_direction_vent + $jour_direction_vent;
   $total_jour_val_rafale_max = $total_jour_val_rafale_max + $jour_val_rafale_max;
   $total_jour_val_rayon_max = $total_jour_val_rayon_max + $jour_val_rayon_max;
   $total_jour_ensoleillement = $total_jour_ensoleillement + $jour_ensoleillement;   
   }

$moyenne_an_val_temp_min = $total_jour_val_temp_min / $i;
$moyenne_an_val_temp_moy = $total_jour_val_temp_moy / $i;
$moyenne_an_val_temp_max = $total_jour_val_temp_max / $i;
$moyenne_an_val_hum_min = $total_jour_val_hum_min / $i;
$moyenne_an_val_hum_moy = $total_jour_val_hum_moy / $i;
$moyenne_an_val_hum_max = $total_jour_val_hum_max / $i;
$moyenne_an_val_pression_min = $total_jour_val_pression_min / $i;
$moyenne_an_val_pression_moy = $total_jour_val_pression_moy / $i;
$moyenne_an_val_pression_max = $total_jour_val_pression_max / $i;
$moyenne_an_val_pluie = $total_jour_val_pluie;
$moyenne_an_val_vent_max = $total_jour_val_vent_max / $i;
$moyenne_an_direction_vent = $total_jour_direction_vent / $i;
$moyenne_an_val_rafale_max = $total_jour_val_rafale_max / $i;
$moyenne_an_val_rayon_max = $total_jour_val_rayon_max / $i;
$moyenne_an_ensoleillement = $total_jour_ensoleillement;

$sql_insert = "
      an_date = '$date_jour',
      an_val_temp_min = '$moyenne_an_val_temp_min',      
      an_val_temp_moy = '$moyenne_an_val_temp_moy',
      an_val_temp_max = '$moyenne_an_val_temp_max',   
      an_val_hum_min = '$moyenne_an_val_hum_min',      
      an_val_hum_moy = '$moyenne_an_val_hum_moy',
      an_val_hum_max = '$moyenne_an_val_hum_max',   
      an_val_pression_min = '$moyenne_an_val_pression_min',   
      an_val_pression_moy = '$moyenne_an_val_pression_moy',
      an_val_pression_max = '$moyenne_an_val_pression_max',
      an_val_pluie = '$moyenne_an_val_pluie',
      an_val_vent_max = '$moyenne_an_val_vent_max',   
      an_direction_vent = '$moyenne_an_direction_vent',
      an_val_rafale_max = '$moyenne_an_val_rafale_max',   
      an_val_rayon_max = '$moyenne_an_val_rayon_max',   
      an_ensoleillement = '$moyenne_an_ensoleillement'";
   
mysql_query ("INSERT INTO ".$table_ans." SET ".$sql_insert." ON DUPLICATE KEY UPDATE ".$sql_insert) or die ("<b>Erreur</b> dans la requète <b>" . $sql_insert . "</b> : "  . mysql_error());;
}
mysql_close();
?>

Re: Donnée du jour sur plusieurs années

Posté : 20 févr. 2014, 17:02
par Tudgur
Quel boulot !!!

Chez mon hébergeur la site de Plouguerneau est sous www/
et celui de Serre Che sous www/serre_chevalier.
Je suppose que c'est là que je mets le script, là où se trouve aussi insert_sql_psp.php ?

Re: Donnée du jour sur plusieurs années

Posté : 20 févr. 2014, 17:22
par webmaster
Tudgur a écrit :Je suppose que c'est là que je mets le script, là où se trouve aussi insert_sql_psp.php ?
Oui m'sieur !

Re: Donnée du jour sur plusieurs années

Posté : 20 févr. 2014, 18:37
par Tudgur
V'là M'sieur, c'est fait !!!
Et tout m'a l'air OK.

Bravo !!!

Une broutille, mais sans rapport avec ton fichier :
J'ai commencé à remplir la table jours le 11 février.
A chaque fois que j'ouvre l'une des tables, jours, mois ou années, la première ligne est celle du 11.
Normal j'imagine.
Mais c'est facile à réordonner.
Pour cette raison, j'ai cru que ton fichier n'avait pas fonctionné puisque les cumuls étaient erronés : en fait, c'était parce que les lignes étaient en désordre...

Par contre, la table année ne pourra pas être utilisée en 2015 puisque les moyennes et cumuls ne seront pas ceux d'une année entière.
Mais je peux éventuellement remplir manuellement la table jours pour le mois de janvier et je suppose que ton fichier ne doit pas demander trop de modifs pour qu'il fasse le même boulot.

Re: Donnée du jour sur plusieurs années

Posté : 20 févr. 2014, 21:54
par webmaster
Tudgur a écrit :Pour cette raison, j'ai cru que ton fichier n'avait pas fonctionné puisque les cumuls étaient erronés : en fait, c'était parce que les lignes étaient en désordre...
Bizarre ton histoire, je trie la base par date avant de prendre les valeurs à calculer.
Tudgur a écrit :je suppose que ton fichier ne doit pas demander trop de modifs pour qu'il fasse le même boulot
Si un peu quand même, mais c'est un bout de programme qu'il faut êcrire, il servira certainement plusieurs fois par an !

Re: Donnée du jour sur plusieurs années

Posté : 20 févr. 2014, 22:38
par Tudgur
webmaster a écrit :Bizarre ton histoire, je trie la base par date avant de prendre les valeurs à calculer.
Voilà comment s'ouvrent mes trois tables :
Image Image Image
webmaster a écrit :Si un peu quand même, mais c'est un bout de programme qu'il faut êcrire, il servira certainement plusieurs fois par an !
dans ce cas...

Re: Donnée du jour sur plusieurs années

Posté : 25 févr. 2016, 13:31
par Tudgur
Salut Laurent.

Aurais-tu un peu (?) de temps à me consacrer ?
Les tables mises en place il y a maintenant deux ans, se remplissent.

Image

Mais je ne sais pas du tout comment afficher les données qui m'intéressent !!! :confused:

Comment, par exemple, afficher le 25 février 2016 la température mini sur la même période mois, donc du 1er au 25 février 2015 et sur la même période année, donc du 1er janvier au 25 février 2015, avec éventuellement l'heure et la date ? Ceci à partir de la table meme _periode_jours si je me souviens bien ?

Idem pour la température maxi, la rafale maxi, les précipitations maxi en 1 jour.

De même, comment afficher la température moyenne, les cumuls de pluie et ensoleillement à partir des tables meme_periode_mois et meme_periode_annee ?
Pour le vent moyen, je n'ai pas vérifié si le calcul était fait dans les tables mois et année...

Merci.

Re: Donnée du jour sur plusieurs années

Posté : 25 févr. 2016, 21:39
par webmaster
Bonsoir, Tudgur
Tudgur a écrit :Aurais-tu un peu (?) de temps à me consacrer ?
Je vais en trouver, pas de problèmes.
Tudgur a écrit : Comment, par exemple, afficher le 25 février 2016 la température mini sur la même période mois, donc du 1er au 25 février 2015 et sur la même période année, donc du 1er janvier au 25 février 2015, avec éventuellement l'heure et la date ? Ceci à partir de la table meme _periode_jours si je me souviens bien ?
Par exemple le code suivant te donnera la température mini et moyenne sur la même période l'année précédente.

Code : Tout sélectionner

<?php
$mois_date=(date('Y-m-d',strtotime('-1year')));

$db = mysql_connect('localhost', 'login', 'pass');
mysql_query("set names UTF8"); 
mysql_select_db('meteo',$db);
$sql = "SELECT * FROM mois WHERE mois_date='$mois_date'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_assoc($req))
    {
    $mois_val_temp_min=$data['mois_val_temp_min'];
    $mois_val_temp_moy=$data['mois_val_temp_moy'];
    }
      
mysql_close();

echo $mois_val_temp_min,'°C<br>';
echo $mois_val_temp_moy,'°C<br>';
?>
Il faut bien entendu modifier les infos de connexion à ta bdd et noms de variables et tables.
Personnellement dans ma table, je ne vois pas trace des dates et heures des minis et maxis mensuels tous les jours, mais uniquement en fin de mois.
Il faut que je reprenne la lecture depuis le départ pour suivre le cheminement de ce qui avait été fait.
A suivre donc.

Re: Donnée du jour sur plusieurs années

Posté : 26 févr. 2016, 08:34
par Tudgur
Merci beaucoup !!!

C'est OK pour la moyenne mais pas pour la température mini.
Normal : les tables meme_periode_mois et meme_periode_annee contiennent les moyennes des mini, des maxis, des moyennes, les cumuls de pluie et d'ensoleillement mais aucun extrême...
Pour les température mini, maxi, rafale max..., il faut faire les requêtes sur la table meme_periode_jours.
Mais alors, comment faire pour avoir le mini du 1er février au 26 février 2015, le mini du 1er janvier au 26 février 2015 ?
Idem pour les autres extrêmes.

Pour l'instant je peux donc afficher la température moyenne, les précipitations et l'ensoleillement (en décimal) de le même période mois de l'année précédente.
J'arriverais peut-être à le faire pour la même période année...

Comme tu le dis : a suivre !

Edit 1 : pour la même période année, je n'ai pas eu de problème pour afficher la temp moyenne, les cumuls d'ensoleillement et de pluie.
Par contre, lors de la création des tables, une donnée a été oubliée : le vent moyen.
Il y a la moyenne du vent maxi mais ce n'est pas la même chose...

Edit 2 : j'ai réussi à obtenir l'affichage de l'ensoleillement en heures et minutes.