Erreur date début

Un problème, une question sur la partie PHP des graphiques

Modérateurs : jturlier, Météo Villarzel

Répondre
JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Erreur date début

Message par JP54 » 27 janv. 2019, 18:13

Bonjour,
J'ai fais un graphique sur les heures d'ensoleillement par année, mon start commence le 01-01-2017 (date de mise en service de ma sonde) et sur mon graphique sur l'axe x commence en 2016.
https://www.meteo-jarny.com/DY-graphiqu ... -annee.php

La partie php

Code : Tout sélectionner

<?php
require("mysqli_connect.php");                     
$sql="select max(tstamp) from ensol";
$query=mysqli_query($conn,$sql);                  
$list=mysqli_fetch_array($query);     

$stop=$list[0];
$start=mktime(0,0,0,1,1,date("2017"));
$stop-(86400*365);

$sql = "SELECT tstamp, SUM(ensolreeldec), substr(recdateTZ,1,4) AS Annee FROM `ensol` WHERE tstamp > '$start' GROUP BY Annee"; 

$query=mysqli_query($conn,$sql);  
$i=0;
while ($list = mysqli_fetch_assoc($query)) {     
if (date("I",time())==0) {
    $time[$i]=($list['tstamp']+3600)*1000;
    }
else 
    {
    $time[$i]=($list['tstamp']+7200)*1000;
    }

    $ensolreeldec[$i]=$list['SUM(ensolreeldec)']*1;

    if (date("m",$time[$i]/1000)==1) {$NormaleMensuelle[$i]=1640.3;}

    $Ecart[$i]=$ensolreeldec[$i]-$NormaleMensuelle[$i];

    $i++;
    }    
    ?>
Le code de xAxis

Code : Tout sélectionner

          
          xAxis: {
              type: 'datetime',
              labels: {
	          step: 2,
                  format: '{value:%Y}',
                  align: 'center',		
                      }
                  },
J'ai jouer avec le "step" sur xAxis, ça ne change rien, j'ai réussie à ce que 2016 ne soit plus sur l'axe x en mettant le start au 09-01-2017 :?: :?:
Quelqu'un aurait une idée?
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

Avatar du membre
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

Re: Erreur date début

Message par PascalWMR » 03 févr. 2019, 17:12

Salut Pascal

Ouhaa ouhaa ouhaa

Normal qu'il t’arrive cela.

Dans ta requête SQL, comme c'est un graphique annuel, on se fou du start et du stop. Y en a pas besoin.

Comme tes enregistrements commence le 1/1/2017, et qu'on le sait, pas besoin de faire des calculs de mktime.
Dans le requête SQL, on determine l'année en dur.
Ta requête devient

Code : Tout sélectionner

$sql = "SELECT tstamp, SUM(ensolreeldec), substr(recdateTZ,1,4) AS Annee FROM ensol WHERE recdateTZ >= '201701010000' GROUP BY Annee"; 
if (date("m",$time[$i]/1000)==1) {$NormaleMensuelle[$i]=1640.3;} Je vois pas bien à quoi ça sert.
Comme c'est un graphique annuel, autant dire
$NormaleMensuelle[$i]=1640.3;
tout simplement

Ensuite pour xAxis, tu supprime step et tu met startOnTick: 'true', comme ci-dessous

Code : Tout sélectionner

xAxis: {
	type: 'datetime',
	startOnTick: 'true',
	labels: {
		format: '{value: %Y}',
		align: 'center',
		}
	},
Voila ça fonctionne comme cela chez moi Heures d'ensoleillement annuelles.

Petite différence, c'est que pour l'année en cours, je lui fait faire un petit calcul.
La normale en cours d'année n'est pas la normale annuelle.
Voici mon code

Code : Tout sélectionner

// Creation d'une variable $Aujoudhui qui sert plus bas a déterminer la valeur de la variable $NormaleAnnuelle
$makeAujoudhui= mktime(0, 0, 0, date('m'), 1, date('Y'));
$Aujoudhui=date("YmdHi", $makeAujoudhui);


// Récupération des données groupée par année
$sql = "SELECT SUBSTR(recdateTZ,1,4) AS An, SUM(h_soleil_jour) AS NbHeures,tstamp FROM sundata WHERE recdateTZ >= '201411010000' GROUP BY An";  
//SELECT tstamp, h_soleil_jour FROM sundata
$query = mysqli_query($conn,$sql);                   
$i=0;
while ($list = mysqli_fetch_assoc($query)) {      
if (date("I",time())==0) { 
	$time[$i]=($list['tstamp']+3600)*1000;
	} 
else {
	$time[$i]=($list['tstamp']+7200)*1000;
  } 

$NbHeures[$i]=$list['NbHeures']*1;
	
	// Détermination de la valeur de $NormaleAnnuelle
	// Les normales ci dessous sont celle de la station Météo France de Metz Marly-Frescaty valable pour ma station.
	// Si année de $time[$i] <  année en cours, Normale annuelle égale Normale annuelle totale soit 1659.7 heures pour ma station
	if (date("Y",$time[$i]/1000)== '2014'){$MoyMensuel[$i]=95.4;}
	elseif (date("Y",$time[$i]/1000) < substr($Aujoudhui,0,4)) {$MoyMensuel[$i]=1659.7;}
	// Sinon année de $time[$i] est l'année en cours, alors Normale annuelle est égale au cumul des normales mensuelles calculées en fonction du mois en cours
	else {
		switch (substr($Aujoudhui,4,2)){
			case '01':
				$MoyMensuel[$i]=51.1;
				break;
			case '02':
				$MoyMensuel[$i]=133.8;
				break;
			case '03':
				$MoyMensuel[$i]=259.1;
				break;
			case '04':
				$MoyMensuel[$i]=433.7;
				break;
			case '05':
				$MoyMensuel[$i]=637.9;
				break;
			case '06':
				$MoyMensuel[$i]=852.9;
				break;
			case '07':
				$MoyMensuel[$i]=1089.1;
				break;
			case '08':
				$MoyMensuel[$i]=1305.2;
				break;
			case '09':
				$MoyMensuel[$i]=1465.0;
				break;
			case '10':
				$MoyMensuel[$i]=1564.3;
				break;
			case '11':
				$MoyMensuel[$i]=1618.1;
				break;
			case '12':
				$MoyMensuel[$i]=1659.7;
				break;
			}
	}
// Calcul de l'écart entre les heures d'ensoleillement effectives et la normale annuelle
$Ecart[$i]=$NbHeures[$i]-$MoyMensuel[$i];


$i++;
}
Je lui fait également faire un petit calcul pour l'année 2014 car mes données solaire commence le 01/11/2014

A+
Pascal
Station VP2Plus, Windows 10 64 bits,WeatherLink 6.0.5, VP2SQL, Graphiques Dynamiques à partir d'une BDD MySQL
Météo Conflans-en-Jarnisy
Image

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: Erreur date début

Message par JP54 » 03 févr. 2019, 18:35

Je fais les modifs demain, j'ai passé une grande partie de l'après midi sur ce graphique sans trouvé la solution, j'ai le cerveau qui fume :roll:
En tout cas merci pour toutes ses infos, ;) je te tiens au courant demain
Pascal
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: Erreur date début

Message par JP54 » 04 févr. 2019, 17:14

Je viens d'effectuer les modifications et j'ai toujours le même problème, j'ai l'année 2016 qui apparait sur l'axe x.
https://www.meteo-jarny.com/DY-graphiqu ... -annee.php

Ma partie PHP

Code : Tout sélectionner

<?php
require("mysqli_connect.php");                     
$sql="select max(tstamp) from ensol";
$query=mysqli_query($conn,$sql);                  
$list=mysqli_fetch_array($query);     

$sql = "SELECT tstamp, SUM(ensolreeldec), substr(recdateTZ,1,4) AS Annee FROM ensol WHERE recdateTZ >= '201701010000' GROUP BY Annee"; 
$query=mysqli_query($conn,$sql);  
$i=0;
while ($list = mysqli_fetch_assoc($query)) {     
if (date("I",time())==0) {
    $time[$i]=($list['tstamp']+3600)*1000;
    }
else 
    {
    $time[$i]=($list['tstamp']+7200)*1000;
    }
    $ensolreeldec[$i]=$list['SUM(ensolreeldec)']*1;
    $NormaleMensuelle[$i]=1640.3;
    $Ecart[$i]=$ensolreeldec[$i]-$NormaleMensuelle[$i];
    $i++;
    }    
    ?>
Mon axe X

Code : Tout sélectionner

        xAxis: {
	        type: 'datetime',
	        startOnTick: 'true',
	    labels: {
		    format: '{value: %Y}',
		    align: 'center',
		        }
	        },  

Je ne pense pas m'être trompé. Je ne vois pas du tout ce qui se passe.
Je n'ai pas mis la partie du code avec la normale en cours d'année, je la mettrais quand mon graphique fonctionnera.
Pourtant j'ai un graphique des heures d'ensoleillement par mois et je n'ai pas ce problème de l'année 2016
https://www.meteo-jarny.com/DY-graphiq ... -mois.php
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: Erreur date début

Message par JP54 » 04 févr. 2019, 18:59

J'ai regardé dans ma base de données et le recdateTZ est '200701010010'

Image

J'ai fais la modif sur le graphique et ça ne change rien
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

Avatar du membre
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

Re: Erreur date début

Message par PascalWMR » 06 févr. 2019, 05:08

Salut Pascal

Vite fait avant que je reparte, ce n'est pas le recdateTZ qui est important, mais le timestamp.

Prend le tstamp de ta base de données et compare le ici http://www.timestamp.pro/.

Je parie que l'on se retrouve le 31/12/2016 à 23h10.

ATTENTION j'en ai parler dans un autre post. Les nouvelles librairies Highcharts ne gère plus les dates comme avant.
c'est ici viewtopic.php?f=9&t=276

A+
Pascal
Station VP2Plus, Windows 10 64 bits,WeatherLink 6.0.5, VP2SQL, Graphiques Dynamiques à partir d'une BDD MySQL
Météo Conflans-en-Jarnisy
Image

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: Erreur date début

Message par JP54 » 07 févr. 2019, 16:49

Parie presque gagné, tstamp 1483225500 23-12-2016 à 23h05 mais je le savais, et j'ai même supprimé cette ligne et ça ne change rien à mon axe x.
De plus je n'utilise pas la dernière version le librairie Highcharts, j'ai une version plus ancienne.
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: Erreur date début

Message par JP54 » 13 févr. 2019, 18:27

J'ai quand même trouvé la solution, je transformé un graphique Highstock en graphique Highcharts, c'est la seule solution que j'ai trouvé pour ne pas avoir 2016 sur l'axe x.
Il me reste à faire la modification pour les normales
https://www.meteo-jarny.com/DY-graphiqu ... -annee.php
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

Répondre