start-stop

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

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

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

Re: start-stop

Message par JP54 » 02 nov. 2014, 09:43

Mon code PHP

Code : Tout sélectionner

<?php
require("mysql_connect.php");

    $start = mktime(0,0,0,4,1,date("Y")); // 4 remplace date("n") puisque tu ne veux que les mois d'avril et il faut mettre 1 à la place de date("j") sinon date("j") extrait le jour en cours
    $stop = mktime(0,0,0,5,1,date("Y")); // ici pour le mois de mktime, tu met 5 (mois de mai)
    // Maintenant dans la requête sql, tu extrait les données qui sont supérieures ou égales à $Start (soit le 01/04/yyyy 00h00mn00s) et inférieures à $stop pour ne pas extraire le 1 mai
    $sql = "SELECT tstamp, avg(t_out_moy) FROM MiniMaxidata WHERE substr(recdateTZ,5,2)='04' group by substr(recdateTZ,1,6) order by 1.";


$query=mysql_query($sql);                   
$i=0;
while ($list = mysql_fetch_assoc($query)) {  
if (date("I",time())==0) {                                                         
	$dtime[$i]=($list['tstamp']+3600)*1000;
	} 
else {
	$dtime[$i]=($list['tstamp']+7200)*1000;
  } 						
$t_out_moy[$i]=$list['t_out_moy']*1;							
$i++;
} 
//echo json_encode($dtime);  
   	
  ?>
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: start-stop

Message par PascalWMR » 02 nov. 2014, 10:09

ReRe JP

1- Enlève le $start et le $stop si tu veux extraire tous les mois d'avril de toutes les années
2- Enlève la boucle de test heure d'été (sinon tu va avoir le problème que tu a soulevé dans le tuto pluviométrie)
3- Il y avait une erreur dans $t_out_moy[$i]=$list['t_out_moy']*1;. Il faut mettre $t_out_moy[$i]=$list['AVG(t_out_moy)']*1;

Code : Tout sélectionner

<?php
require("mysql_connect.php");

 $sql = "SELECT tstamp, AVG(t_out_moy) FROM MiniMaxidata WHERE substr(recdateTZ,5,2)='04' group by substr(recdateTZ,1,6) order by 1";


$query=mysql_query($sql);                   
$i=0;
while ($list = mysql_fetch_assoc($query)) {  
  
$dtime[$i]=($list['tstamp']+7200)*1000;            
$t_out_moy[$i]=$list['AVG(t_out_moy)']*1;                     
$i++;
} 
  ?>

<script type="text/javascript"> 
eval(<?php echo  "'var dtime =  ".json_encode($dtime)."'" ?>);
eval(<?php echo  "'var t_out_moy =  ".json_encode($t_out_moy)."'" ?>);  

</script>
Essaie ce code ça doit marcher.

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: start-stop

Message par JP54 » 02 nov. 2014, 10:21

Super, ça fonctionne parfaitement. Maintenant il faut que je comprenne cette foutu partie php qui me pose problème pour chaque graphique que j'essaie de créé :mrgreen:
Merci beaucoup 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: start-stop

Message par JP54 » 07 déc. 2014, 18:20

Petite demande d'explication sur cette ligne

$sql = "SELECT tstamp, AVG(t_out_moy) FROM MiniMaxidata WHERE substr(recdateTZ,5,2)='04' group by substr(recdateTZ,1,6) order by 1";

Que veux dire recdateTZ,5,2 et recdateTZ,1,6
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: start-stop

Message par PascalWMR » 07 déc. 2014, 18:59

Salut JP
JP54 a écrit :Petite demande d'explication sur cette ligne

$sql = "SELECT tstamp, AVG(t_out_moy) FROM MiniMaxidata WHERE substr(recdateTZ,5,2)='04' group by substr(recdateTZ,1,6) order by 1";

Que veux dire recdateTZ,5,2 et recdateTZ,1,6
La variable recdateTZ a ce format 201401010000 (ici le 1 janvier 2014 à 00 heure 00 minute)
Année sur 4 chiffres
Mois sur 2 chiffres
Jours sur 2 chiffres
Heure sur 2 chiffres
Minutes sur 2 chiffres

Donc, recdateTZ,5,2 veux dire que l'on extrait le mois de la date recdateTZ du 5éme chiffre pour une longueur de 2 chiffres

et recdateTZ,1,6 veux dire que l'on extrait l'année et le mois de la date recdateTZ du 1er chiffre pour une longueur de 6 chiffres.

Si c'est la requète qui te chagrine, je l'explique,
Je sélectionne le tstamp et la moyenne des températures moyennes AVG(t_out_moy)
de la table MiniMaxidata
dont le mois est avril substr(recdateTZ,5,2)='04'
et je groupe les données sur l'année et le mois group by substr(recdateTZ,1,6), sinon la requête ne sort qu'un seul champ. Sans cette fonction group by, elle ferait la moyenne des température moyenne de tous les mois d'avril.
Avec cette fonction group by, la requete sort une table avec la moyenne des températures moyennes des mois d'avril uniquement pour chaque année présentent dans la base de données.

Essaie directement cette requête dans phpMyAdmin et tu verra ça apparaît clair comme de l'eau de roche.
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: start-stop

Message par JP54 » 07 déc. 2014, 19:55

Maintenant je comprends, je savais bien qu'il y avait un rapport avec le tstamp mais je ne voyais pas comment, c'est beaucoup plus clair.
merci beaucoup pour ces explications
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