start-stop
Modérateurs : jturlier, Météo Villarzel
-
- Messages : 331
- Enregistré le : 15 févr. 2014, 06:44
- Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
- Contact :
start-stop
Ayant des lacunes en PHP, j'ai du mal à comprendre certaines choses
J'aurais voulu des explications sur:
$start=$stop-(86400*730);
$start=$stop-(86400*31);
JP54
J'aurais voulu des explications sur:
$start=$stop-(86400*730);
$start=$stop-(86400*31);
JP54
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/
http://www.meteo-jarny.com/
- Météo Villarzel
- Administrateur du site
- Messages : 524
- Enregistré le : 06 févr. 2014, 09:48
- Contact :
Re: start-stop
Salut Pascal,
C'est la plage que tu veux tracer
$start=$stop-(86400); = tracer les dernières 24 heures (60x60x24 =86400)
tu peux mettre tous les calculs que tu veux
$start=$stop-(86400);
est identique à
$start=$stop-(60*60*24);
Donc dans tes exemples
$start=$stop-(86400*730); = un graphique sur 730 jours ???
$start=$stop-(86400*31); = un graphique sur 31 jours
ceci étant la durée depuis le dernier enregistrement
A+
C'est la plage que tu veux tracer
$start=$stop-(86400); = tracer les dernières 24 heures (60x60x24 =86400)
tu peux mettre tous les calculs que tu veux
$start=$stop-(86400);
est identique à
$start=$stop-(60*60*24);
Donc dans tes exemples
$start=$stop-(86400*730); = un graphique sur 730 jours ???
$start=$stop-(86400*31); = un graphique sur 31 jours
ceci étant la durée depuis le dernier enregistrement
A+
-
- Messages : 331
- Enregistré le : 15 févr. 2014, 06:44
- Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
- Contact :
Re: start-stop
Bonjour Pierre André,
je pense avoir compris
Si je veux faire un graphique uniquement du mois d'avril 2014 qui commence le 1er et qui termine le 30
$start=$stop-(86400*31);
$start = mktime(0,0,0,date("n"),1,date("Y"));
$stop = mktime(23,59,59,date("n"),31,date("Y"));
je pense avoir compris
Si je veux faire un graphique uniquement du mois d'avril 2014 qui commence le 1er et qui termine le 30
$start=$stop-(86400*31);
$start = mktime(0,0,0,date("n"),1,date("Y"));
$stop = mktime(23,59,59,date("n"),31,date("Y"));
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/
http://www.meteo-jarny.com/
- helmain
- Administrateur du site
- Messages : 54
- Enregistré le : 09 févr. 2014, 12:44
- Localisation : FRANCE - Lagny-sur-Marne (77)
- Contact :
Re: start-stop
Bonjour Pascal,
C'est presque ça !
Attention aux signes dans ta requête sql.
Pour $start = mktime(0,0,0,date("n"),1,date("Y")); il faudra mettre dans ta requête where tstamp > '$start' soit le signe strictement supérieur.
En effet, l'enregistrement de 00:00 concerne des évènements qui se sont produits antérieurement, donc qui n'appartiennent pas au 1er jour du mois mais au jour précédent.
Si tu mets $stop = mktime(23,59,59,date("n"),31,date("Y")); tu n'auras les enregistrements que jusqu'à 23:59:59 même avec un signe <= dans ta requête.
Comme le pas d'enregistrement le plus bas est la minute, ton dernier enregistrement sera celui de 23:59 il te manquera donc une minute.
Pour la borne de fin il vaut mieux mettre : $stop = mktime(0,0,0,date("n")+1,1,date("Y")); et dans la requête and tstamp <= '$stop', là le signe doit être inférieur ou égal !
Ainsi tu as tous les enregistrements, y compris celui du 01/05 à 00:00, enregistrement qui contient les données comprises en 23:59 et 00:00 ou 23:55 et 00:00 du 30 avril si l'on a un pas d'enregistrement de 1 ou de 5 minutes.
Autre chose dans le mktime il faut toujours utiliser les paramètres sans les zéro initiaux date("n") pour le mois, date("j") pour le jour, si tu utilises les paramètre "m" ou "d" tu auras des surprises.
Il est également possible de faire suivre la fonction date() d'un nombre positif ou négatif qui correspondra à un nombre de d'heures, de minutes, de secondes, de mois, de jours ou d'années selon l'endroit et le paramètre utilisé.
Ainsi mktime(0,0,0,date("n")+1,1,date("Y")) correspond au 01/05/2014 à 00:00:00, mktime(0,0,0,date("n"),1,date("Y")-2) = 01/04/2012 à 00:00:00, mktime(0, 0, 0, 4, -31, 2000) = 29/02/2000 à 00:00:00
Fastoche !
Amuse toi bien !
Jean-Michel
C'est presque ça !
Attention aux signes dans ta requête sql.
Pour $start = mktime(0,0,0,date("n"),1,date("Y")); il faudra mettre dans ta requête where tstamp > '$start' soit le signe strictement supérieur.
En effet, l'enregistrement de 00:00 concerne des évènements qui se sont produits antérieurement, donc qui n'appartiennent pas au 1er jour du mois mais au jour précédent.
Si tu mets $stop = mktime(23,59,59,date("n"),31,date("Y")); tu n'auras les enregistrements que jusqu'à 23:59:59 même avec un signe <= dans ta requête.
Comme le pas d'enregistrement le plus bas est la minute, ton dernier enregistrement sera celui de 23:59 il te manquera donc une minute.
Pour la borne de fin il vaut mieux mettre : $stop = mktime(0,0,0,date("n")+1,1,date("Y")); et dans la requête and tstamp <= '$stop', là le signe doit être inférieur ou égal !
Ainsi tu as tous les enregistrements, y compris celui du 01/05 à 00:00, enregistrement qui contient les données comprises en 23:59 et 00:00 ou 23:55 et 00:00 du 30 avril si l'on a un pas d'enregistrement de 1 ou de 5 minutes.
Autre chose dans le mktime il faut toujours utiliser les paramètres sans les zéro initiaux date("n") pour le mois, date("j") pour le jour, si tu utilises les paramètre "m" ou "d" tu auras des surprises.
Il est également possible de faire suivre la fonction date() d'un nombre positif ou négatif qui correspondra à un nombre de d'heures, de minutes, de secondes, de mois, de jours ou d'années selon l'endroit et le paramètre utilisé.
Ainsi mktime(0,0,0,date("n")+1,1,date("Y")) correspond au 01/05/2014 à 00:00:00, mktime(0,0,0,date("n"),1,date("Y")-2) = 01/04/2012 à 00:00:00, mktime(0, 0, 0, 4, -31, 2000) = 29/02/2000 à 00:00:00
Fastoche !
Amuse toi bien !
Jean-Michel
Station Vantage Pro2 + Soil/Leaf + Anémomètre déporté - Weatherlink 6.0.3 - Weather Display 10.37S build 84 - Cumulus 1.9.4 build 1099 - GraphWeather 3.0.28 - Windows 10/64 - VP2SQL + WDTU 1.2 pour Envoy8x - Hébergé par o2switch (MySql/PgSql)
-
- Messages : 331
- Enregistré le : 15 févr. 2014, 06:44
- Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
- Contact :
Re: start-stop
Pas si fastoche que ça
Merci pour tes explications que je vais mettre ne pratique, je reviens si je n'y arrive pas
Merci pour tes explications que je vais mettre ne pratique, je reviens si je n'y arrive pas
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/
http://www.meteo-jarny.com/
-
- Messages : 331
- Enregistré le : 15 févr. 2014, 06:44
- Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
- Contact :
Re: start-stop
J'essaie de faire un graphique de la température moyenne des mois d'avril et uniquement des moi d'avril.
J'aimerais bien que les pros du PHP jette un coup d'oeil sur ma partie PHP. je ne suis absolument pas sur que ce soit coreect. De plus comment sélectionné juste les mois d'avril et pas les autres mois
J'aimerais bien que les pros du PHP jette un coup d'oeil sur ma partie PHP. je ne suis absolument pas sur que ce soit coreect. De plus comment sélectionné juste les mois d'avril et pas les autres mois
Code : Tout sélectionner
<?php
require("mysql_connect.php");
$sql="select max(tstamp) from MiniMaxidata";
$query=mysql_query($sql);
$list=mysql_fetch_array($query);
$stop=$list[0];
$start=$stop-(86400*31);
$start = mktime(0,0,0,date("n"),date("j"),date("Y"));
$stop = mktime(23,59,59,date("n")+1,1,date("j"),date("Y"));
$sql = "SELECT tstamp, t_out_moy FROM MiniMaxidata where tstamp > '$start' and tstamp <= '$stop' 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;
}
$dmean[$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/
http://www.meteo-jarny.com/
- PascalWMR
- Messages : 328
- Enregistré le : 16 févr. 2014, 09:28
- Localisation : CONFLANS EN JARNISY (F54800)
- Contact :
Re: start-stop
Salut Pascal
Ici
Donc pour grapher uniquement les mois d'avril, cette partie de code est inutile.
Ensuite tu redéfini $Start et $Stop avec mktime ce qui est bon, mais c'est pas la bonne syntaxe.
Voici donc la bonne syntaxe.
Nb dans la syntaxe de mktime, le paramètre date("Y") détermine l'année en cours. Si tu veux extraire une autre année, il faut remplacer date("Y") par l'année désirée sur 4 chiffres soit pour 2013, mktime(0,0,0,4,1,2013).
Bon dimanche (à priori pluvieux)
A+
Pascal
Il y a un petit problème dans ton code . Tu défini 2 fois les variables $Start et $Stop.JP54 a écrit :J'essaie de faire un graphique de la température moyenne des mois d'avril et uniquement des moi d'avril.
J'aimerais bien que les pros du PHP jette un coup d'oeil sur ma partie PHP. je ne suis absolument pas sur que ce soit coreect. De plus comment sélectionné juste les mois d'avril et pas les autres mois
Ici
tu récupère le $Stop à partir de la plus grande valeur de la table MiniMaxidata et tu dis que le $Start est égal à cette valeur - 31x86400 soit 31 jours.$sql="select max(tstamp) from MiniMaxidata";
$query=mysql_query($sql);
$list=mysql_fetch_array($query);
$stop=$list[0];
$start=$stop-(86400*31);
Donc pour grapher uniquement les mois d'avril, cette partie de code est inutile.
Ensuite tu redéfini $Start et $Stop avec mktime ce qui est bon, mais c'est pas la bonne syntaxe.
Voici donc la bonne syntaxe.
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, t_out_moy FROM MiniMaxidata where tstamp >= '$start' and tstamp < '$stop' ORDER BY 1";
Bon dimanche (à priori pluvieux)
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
Météo Conflans-en-Jarnisy
- PascalWMR
- Messages : 328
- Enregistré le : 16 févr. 2014, 09:28
- Localisation : CONFLANS EN JARNISY (F54800)
- Contact :
Re: start-stop
Re bonjour
Je viens d'y penser
Cette requête exécutée sans start ni stop, extrait directement les températures moyennes des mois d'avril uniquement sur toute la base de donnée et les classe par année et mois.
SELECT substr(recdateTZ,1,6), avg(t_out_moy) FROM MiniMaxidata WHERE substr(recdateTZ,5,2)='04' group by substr(recdateTZ,1,6) order by 1
Si ça peut servir
A+
Pascal
Je viens d'y penser
Cette requête exécutée sans start ni stop, extrait directement les températures moyennes des mois d'avril uniquement sur toute la base de donnée et les classe par année et mois.
SELECT substr(recdateTZ,1,6), avg(t_out_moy) FROM MiniMaxidata WHERE substr(recdateTZ,5,2)='04' group by substr(recdateTZ,1,6) order by 1
Si ça peut servir
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
Météo Conflans-en-Jarnisy
-
- Messages : 331
- Enregistré le : 15 févr. 2014, 06:44
- Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
- Contact :
Re: start-stop
Salut Pascal, merci pour ton aide,
J'ai mis ton premier code, ça fonctionne (je n'en doutais pas), mais ça graphe les températures moyenne des jours du mois d'avril du 1er au 30 et non la température moyenne du mois.
Avec la deuxième requête:
SELECT substr(recdateTZ,1,6), avg(t_out_moy) FROM MiniMaxidata WHERE substr(recdateTZ,5,2)='04' group by substr(recdateTZ,1,6) order by 1
Rien ne s'affiche dans le graphique, je pense que c'est normal vu qu'elle est prévue pour extraire les températures moyenne des mois d'avril
Je cherche afin de corriger le problème et d'avoir la température moyenne d'avril et non la température moyenne des jours d'avril
J'ai mis ton premier code, ça fonctionne (je n'en doutais pas), mais ça graphe les températures moyenne des jours du mois d'avril du 1er au 30 et non la température moyenne du mois.
Avec la deuxième requête:
SELECT substr(recdateTZ,1,6), avg(t_out_moy) FROM MiniMaxidata WHERE substr(recdateTZ,5,2)='04' group by substr(recdateTZ,1,6) order by 1
Rien ne s'affiche dans le graphique, je pense que c'est normal vu qu'elle est prévue pour extraire les températures moyenne des mois d'avril
Je cherche afin de corriger le problème et d'avoir la température moyenne d'avril et non la température moyenne des jours d'avril
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/
http://www.meteo-jarny.com/
- PascalWMR
- Messages : 328
- Enregistré le : 16 févr. 2014, 09:28
- Localisation : CONFLANS EN JARNISY (F54800)
- Contact :
Re: start-stop
Re JP¨
Essaie cette requête, c'est la même que l'autre sauf qu'elle extrait tstamp dont tu peux te servir pour faire ton graph.
SELECT tstamp, avg(t_out_moy) FROM MiniMaxidata WHERE substr(recdateTZ,5,2)='04' group by substr(recdateTZ,1,6) order by 1.
Pour comprendre, il faudrait que j'ai le restant de ton code php
A+ Pascal
Essaie cette requête, c'est la même que l'autre sauf qu'elle extrait tstamp dont tu peux te servir pour faire ton graph.
SELECT tstamp, avg(t_out_moy) FROM MiniMaxidata WHERE substr(recdateTZ,5,2)='04' group by substr(recdateTZ,1,6) order by 1.
Pour comprendre, il faudrait que j'ai le restant de ton code php
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
Météo Conflans-en-Jarnisy