Problème chiffre après la virgule.

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 :

Problème chiffre après la virgule.

Message par JP54 » 25 févr. 2020, 18:29

Bonjour,
je suis en train de modifier mes graphiques avec les nouvelles librairie Highcharts et PHP7.
Je rencontre un problème avec certains chiffres à virgule.

Code : Tout sélectionner

$Normale_an= 785.8;
La variable ci-dessous s'affiche comme ça
colonne "année": 785,0
colonne "14": 8,0
Visible sur le deux dernières colonne à droite du graphique
https://www.meteo-jarny.com/DY-graphiq ... p?An=2020
J'ai le même problème avec le cumul de l'année.
Quelqu'un à déjà eu ce problème?

Mon code PHP

Code : Tout sélectionner

<?php
date_default_timezone_set('Europe/Paris');
setlocale(LC_ALL,"fr_FR.UTF-8");
		
            require("mysqli_connect.php");                     
            if (isset($_GET['annee']))
            $year = $_GET['annee'];
            if (isset($_GET['An'])) // appel par le menu
            $An = $_GET['An'];// appel par le menu
            $sql="select max(tstamp) from minimaxi";
            $query=mysqli_query($conn,$sql);                  
            $list=mysqli_fetch_array($query);	                     

            $start = mktime(23, 59, 59, 12, 31, $An-1);
            $stop = mktime(23, 59, 59, 12, 31, $An);
 
     $sql = "SELECT tstamp, SUM(Rain_jour), substr(recdateTZ,1,6) AS AnneeMois FROM `minimaxi`WHERE tstamp > '$start' AND tstamp <= '$stop' GROUP BY AnneeMois"; 
 
    $query = mysqli_query($conn,$sql);                   
    $i=0;
    while ($list = mysqli_fetch_assoc($query)) {     

    $Rain[$i]=$list['Rain_jour']*1;

       if (date("m",$Dtime[$i]/1000)==1) {$NormaleMensuelle[$i]=69.4;}
       elseif (date("m",$tDime[$i]/1000)==2) {$NormaleMensuelle[$i]=56.1;}
       elseif (date("m",$Dtime[$i]/1000)==3) {$NormaleMensuelle[$i]=65.1;}
       elseif (date("m",$Dtime[$i]/1000)==4) {$NormaleMensuelle[$i]=53.9;}
       elseif (date("m",$Dtime[$i]/1000)==5) {$NormaleMensuelle[$i]=63.3;}
       elseif (date("m",$Dtime[$i]/1000)==6) {$NormaleMensuelle[$i]=63.2;}
       elseif (date("m",$Dtime[$i]/1000)==7) {$NormaleMensuelle[$i]=70.7;}
       elseif (date("m",$Dtime[$i]/1000)==8) {$NormaleMensuelle[$i]=64.2;}
       elseif (date("m",$Dtime[$i]/1000)==9) {$NormaleMensuelle[$i]=66.9;}
       elseif (date("m",$Dtime[$i]/1000)==10) {$NormaleMensuelle[$i]=71;}
       elseif (date("m",$Dtime[$i]/1000)==11) {$NormaleMensuelle[$i]=67.2;}
       elseif (date("m",$Dtime[$i]/1000)==12) {$NormaleMensuelle[$i]=74.8;}

    $Ecart[$i]=$Rain[$i]-$NormaleMensuelle[$i];
    $i++;
    }   

    $Normale=array(69.4, 56.1, 65.1, 53.9, 63.3, 63.2, 70.7, 64.2, 66.9, 71, 67.2, 74.8,null,null);
    $Time=array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre","","Année");
    $Rain=array($Rain[0],$Rain[1],$Rain[2],$Rain[3],$Rain[4],$Rain[5],$Rain[6],$Rain[7],$Rain[8],$Rain[9],$Rain[10],$Rain[11],null,null);
    $Normale_an= 785.8;
    $Pluie_an = $Rain[0]+$Rain[1]+$Rain[2]+$Rain[3]+$Rain[4]+$Rain[5]+$Rain[6]+$Rain[7]+$Rain[8]+$Rain[9]+$Rain[10]+$Rain[11];
    $Ecart=array($Ecart[0],$Ecart[1],$Ecart[2],$Ecart[3],$Ecart[4],$Ecart[5],$Ecart[6],$Ecart[7],$Ecart[8],$Ecart[9],$Ecart[10],$Ecart[11],null);

    ?>
	
    <script language="JavaScript" type="text/javascript">
    eval(<?php echo  "'var dTime =  ".json_encode($Time)."'" ?>);
    eval(<?php echo  "'var dPluie =  ".json_encode($Rain)."'" ?>);
    eval(<?php echo  "'var dNormale =  ".json_encode($Normale)."'" ?>);
    eval(<?php echo  "'var dNormale_an =  ".json_encode($Normale_an)."'" ?>);
    eval(<?php echo  "'var dPluie_an =  ".json_encode($Pluie_an)."'" ?>);
    eval(<?php echo  "'var Ecart =  ".json_encode($Ecart)."'" ?>);	
    </script>

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: Problème chiffre après la virgule.

Message par JP54 » 29 févr. 2020, 13:59

Dominique et moi avons résolu une partie du problème en ajoutant des guillemets simple pour la normale.

Code : Tout sélectionner

 $Normale_an= '785.8';
https://www.meteo-jarny.com/DY-graphiq ... p?An=2012
Le problème reste entier pour le cumul annuel
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: Problème chiffre après la virgule.

Message par JP54 » 29 févr. 2020, 19:27

Problème résolu après pas mal d'heures de recherches et de modifications.
j'ai supprimé la ligne ci-dessous

Code : Tout sélectionner

$Pluie_an = $Rain[0]+$Rain[1]+$Rain[2]+$Rain[3]+$Rain[4]+$Rain[5]+$Rain[6]+$Rain[7]+$Rain[8]+$Rain[9]+$Rain[10]+$Rain[11];
Cette ligne calculait le cumul annuel, elle a été remplacé par une requête sur la table noaa_mois qui calcule le cumul annuel

Code : Tout sélectionner

    $qry='SELECT SUM(Pluie) as Pluie FROM noaa_mois  WHERE Tstamp > '.$start.' AND Tstamp <= '.$stop.''; 
                if ($result = mysqli_query($conn,$qry)) {
                while ($donnees = mysqli_fetch_object($result))
                        {
                        $cont=$donnees ;
                        $Pluie_an = $cont->Pluie;                                                                                                                                                                               
                        }
                        mysqli_free_result($result);
                        }

https://www.meteo-jarny.com/DY-graphiq ... p?An=2020

Pourquoi j'ai eu ce bug. A cause du PHP7 ou des nouvelles librarie Highcharts. Je ne sais pas.
Merci à Dominique, c'est lui qui a trouvé la solution. ;)
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
jturlier
Administrateur du site
Messages : 393
Enregistré le : 10 déc. 2014, 10:20
Localisation : Sérignan 34410
Contact :

Re: Problème chiffre après la virgule.

Message par jturlier » 02 mars 2020, 19:30

Salut Pascal,
les tables NOAA sont faites pour simplifier la récupération des données, aussi bien celle de jour que celle de mois... alors pourquoi se compliquer la vie !
Tu as d'ailleurs, si tes $start et $stop sont des dates AMJ (ou des tstamps), la possibilité d'obtenir la même chose à partir de NOAAjour, la requête est absolument similaire et pourrait te permettre de travailler sur 365 jours flottants, ou sur 90 jours flottants... ou ce que tu veux.
Je préfère travailler avec les AMJ plutôt qu'avec les tstamps qui sont à mon avis moins faciles à interpréter.
Tu vas pouvoir cesser de cogiter toutes les nuits et te reposer :lol:
Amicalement
Jean
Jean

Station :
VP2pro + anémomètre ultrasons et console Vue
Cumulus 1.9.4 + Cumulus2SQL + MySQL

Audio :
FR
PC :
W10 64bits migré
http://meteoserignan.ddns.net
Image

Avatar du membre
jturlier
Administrateur du site
Messages : 393
Enregistré le : 10 déc. 2014, 10:20
Localisation : Sérignan 34410
Contact :

Re: Problème chiffre après la virgule.

Message par jturlier » 02 mars 2020, 19:35

JP54 a écrit :
25 févr. 2020, 18:29
Code : Tout sélectionner

$Normale_an= 785.8;

La variable ci-dessous s'affiche comme ça
colonne "année": 785,0
colonne "14": 8,0
On est en français, à mon avis $Normale_an= 785,8;
serait peut-être mieux.
Jean

Station :
VP2pro + anémomètre ultrasons et console Vue
Cumulus 1.9.4 + Cumulus2SQL + MySQL

Audio :
FR
PC :
W10 64bits migré
http://meteoserignan.ddns.net
Image

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

Re: Problème chiffre après la virgule.

Message par JP54 » 03 mars 2020, 16:52

Bonjour Jean,
Quand j'ai créé ce graphique, il n'y avait pas encore les tables noaa_jour et noaa_mois et même en utilisant ces tables j'aurais eu le même problème.
J'utilise comme beaucoup de personnes le tstamp depuis le début de la création de mes premiers graphiques, difficile de changer les habitudes.
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