Donnée du jour sur plusieurs années

Forum destiné aux problèmes de Tags, recherche d’une fonction, d’un calcul, Tag qui parait ne pas fonctionner, du Tag et rien que du Tag !
Répondre
Avatar du membre
webmaster
Site Admin
Site Admin
Messages : 2611
Enregistré le : 12 déc. 2006, 20:54
Localisation : Rieux 51 FRANCE
Contact :

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

Message par webmaster » 20 févr. 2014, 09:10

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.
Cordialement

Rieux

Tudgur
Participation 6
Participation 6
Messages : 1770
Enregistré le : 13 mai 2007, 16:47
Localisation : 29880 Plouguerneau
Contact :

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

Message par Tudgur » 20 févr. 2014, 09:52

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 ?
Cordialement.

Tudgur
http://meteo-plouguerneau.fr" onclick="window.open(this.href);return false;

Avatar du membre
webmaster
Site Admin
Site Admin
Messages : 2611
Enregistré le : 12 déc. 2006, 20:54
Localisation : Rieux 51 FRANCE
Contact :

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

Message par webmaster » 20 févr. 2014, 15:51

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();
?>
Cordialement

Rieux

Tudgur
Participation 6
Participation 6
Messages : 1770
Enregistré le : 13 mai 2007, 16:47
Localisation : 29880 Plouguerneau
Contact :

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

Message par Tudgur » 20 févr. 2014, 17:02

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 ?
Cordialement.

Tudgur
http://meteo-plouguerneau.fr" onclick="window.open(this.href);return false;

Avatar du membre
webmaster
Site Admin
Site Admin
Messages : 2611
Enregistré le : 12 déc. 2006, 20:54
Localisation : Rieux 51 FRANCE
Contact :

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

Message par webmaster » 20 févr. 2014, 17:22

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 !
Cordialement

Rieux

Tudgur
Participation 6
Participation 6
Messages : 1770
Enregistré le : 13 mai 2007, 16:47
Localisation : 29880 Plouguerneau
Contact :

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

Message par Tudgur » 20 févr. 2014, 18:37

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.
Cordialement.

Tudgur
http://meteo-plouguerneau.fr" onclick="window.open(this.href);return false;

Avatar du membre
webmaster
Site Admin
Site Admin
Messages : 2611
Enregistré le : 12 déc. 2006, 20:54
Localisation : Rieux 51 FRANCE
Contact :

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

Message par webmaster » 20 févr. 2014, 21:54

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 !
Cordialement

Rieux

Tudgur
Participation 6
Participation 6
Messages : 1770
Enregistré le : 13 mai 2007, 16:47
Localisation : 29880 Plouguerneau
Contact :

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

Message par Tudgur » 20 févr. 2014, 22:38

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...
Cordialement.

Tudgur
http://meteo-plouguerneau.fr" onclick="window.open(this.href);return false;

Tudgur
Participation 6
Participation 6
Messages : 1770
Enregistré le : 13 mai 2007, 16:47
Localisation : 29880 Plouguerneau
Contact :

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

Message par Tudgur » 25 févr. 2016, 13:31

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.
Cordialement.

Tudgur
http://meteo-plouguerneau.fr" onclick="window.open(this.href);return false;

Avatar du membre
webmaster
Site Admin
Site Admin
Messages : 2611
Enregistré le : 12 déc. 2006, 20:54
Localisation : Rieux 51 FRANCE
Contact :

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

Message par webmaster » 25 févr. 2016, 21:39

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.
Cordialement

Rieux

Tudgur
Participation 6
Participation 6
Messages : 1770
Enregistré le : 13 mai 2007, 16:47
Localisation : 29880 Plouguerneau
Contact :

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

Message par Tudgur » 26 févr. 2016, 08:34

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.
Cordialement.

Tudgur
http://meteo-plouguerneau.fr" onclick="window.open(this.href);return false;

Répondre