C'est bien ce que je pensait. Çà n'est pas comme cela qu'il faut faire.muchistic a écrit :merci beaucoup Pascal, je vais essayer de trouver le format tstamp, et il doit indiquer le début du mois ?
Dis nous plutôt exactement ce que tu veux faire.
A+
Modérateurs : jturlier, Météo Villarzel
C'est bien ce que je pensait. Çà n'est pas comme cela qu'il faut faire.muchistic a écrit :merci beaucoup Pascal, je vais essayer de trouver le format tstamp, et il doit indiquer le début du mois ?
Voila voila du code tout faitmuchistic a écrit :je veux faire un graphique qui appelle le mois en cours. ou alors un exemple, si l'on est les 16 novembre (puisque nov compte 30 jours), je veux que mon graph remonte jusqu'au 16 octobre.
Code : Tout sélectionner
<?php
// appel du script de connexion
require("../Scripts/mysqli_connect.php");
// On récupère le timestamp du dernier enregistrement
$sql="select max(tstamp) from data";
$query = mysqli_query($conn,$sql);
$list=mysqli_fetch_array($query);
// On détermine le stop et le start de façon à récupérer dans la prochaine requête que les données des dernières xx heures
$stop=$list[0];
// teste si le mois précédant de la dernière date enregistrée est égal à 01, 03, 05, 07, 08, 10, 12 (mois à 31 jours)
if (((date('m', $stop)-1==01) || (date('m', $stop)-1==03) || (date('m', $stop)-1==05)|| (date('m', $stop)-1==07)|| (date('m', $stop)-1==08)|| (date('m', $stop)-1==10) || (date('m', $stop)-1==12))) {$nbjm=31;}
// teste si le mois précédant de la dernière date enregistrée est égal à 04, 06, 09, 11 (mois à 30 jours)
elseif (((date('m', $stop)-1==04) || (date('m', $stop)-1==06) || (date('m', $stop)-1==09)|| (date('m', $stop)-1==11))) {$nbjm=30;}
// teste si le mois précédant de la dernière date enregistrée est égal à 02, et si l'année est bissextile
elseif (((date('m', $stop)-1==02) && (date('L', $stop)-1==1))) {$nbjm=29;}
// teste si le mois précédant de la dernière date enregistrée est égal à 02, et si l'année n'est pas bissextile
elseif (((date('m', $stop)-1==02) && (date('L', $stop)-1==0))) {$nbjm=28;}
$start=$stop-(86400*$nbjm);
echo date('d m Y H i', $start)
?>
il ne faut pas tester le nombre de jours du mois en cours, mais le nombre de jours du mois passé.si l'on est les 16 novembre (puisque nov compte 30 jours), je veux que mon graph remonte jusqu'au 16 octobre
Code : Tout sélectionner
<?php
// appel du script de connexion
require("mysql_connect.php");
// On récupère le timestamp du dernier enregistrement
$sql="select max(tstamp) from data";
$query = mysql_query($conn,$sql);
$list=mysql_fetch_array($query);
// On détermine le stop et le start de façon à récupérer dans la prochaine requête que les données des dernières xx heures
$stop=$list[0];
// teste si le mois précédant de la dernière date enregistrée est égal à 01, 03, 05, 07, 08, 10, 12 (mois à 31 jours)
if (((date('m', $stop)-1==01) || (date('m', $stop)-1==03) || (date('m', $stop)-1==05)|| (date('m', $stop)-1==07)|| (date('m', $stop)-1==08)|| (date('m', $stop)-1==10) || (date('m', $stop)-1==12))) {$nbjm=31;}
// teste si le mois précédant de la dernière date enregistrée est égal à 04, 06, 09, 11 (mois à 30 jours)
elseif (((date('m', $stop)-1==04) || (date('m', $stop)-1==06) || (date('m', $stop)-1==09)|| (date('m', $stop)-1==11))) {$nbjm=30;}
// teste si le mois précédant de la dernière date enregistrée est égal à 02, et si l'année est bissextile
elseif (((date('m', $stop)-1==02) && (date('L', $stop)-1==1))) {$nbjm=29;}
// teste si le mois précédant de la dernière date enregistrée est égal à 02, et si l'année n'est pas bissextile
elseif (((date('m', $stop)-1==02) && (date('L', $stop)-1==0))) {$nbjm=28;}
$start=$stop-(86400*$nbjm);
echo date('d m Y H i', $start)
?>
<script type="text/javascript">
eval(<?php echo "'var dTime = ".json_encode($dtime)."'" ?>);
eval(<?php echo "'var outdoortemperature = ".json_encode($outdoortemperature)."'" ?>);
eval(<?php echo "'var debut = ".json_encode($debut)."'" ?>);
eval(<?php echo "'var minuit = ".json_encode($minuit)."'" ?>);
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<META NAME="SUBJECT" CONTENT="Graphique Vantage Pro Davis">
<META NAME="DESCRIPTION" CONTENT="graphique dynamique">
<META NAME="KEYWORDS" CONTENT=" météo, pluie, vent, température, temperature, station, Vantage, Davis, Pro, Davis Vantage Pro,pression, UV, soleil,">
<META NAME="REVISIT-AFTER" CONTENT="5 DAYS">
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=9" >
<META NAME="LANGUAGE" CONTENT="FR">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Meteo Canejan / Graphique dynamique température et point de rosée sur 24h
heures</title>
<meta http-equiv="refresh" content="300">
<!-- 1. Add these JavaScript inclusions in the head of your page -->
<script type="text/javascript" src="jquery/jquery.min.js"></script>
<script type="text/javascript" src="highcharts/js/highcharts.js"></script>
<script type="text/javascript" src="highcharts/js/themes/default.js"></script>
<script type="text/javascript" src="highcharts/js/modules/exporting.js"></script>
<script type="text/javascript" src="jquery/overlib.js"></script>
<script type="text/javascript" src="jquery/overlib_fade.js"></script>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet"/>
<style type ='text/css'>
.style1 {
color: #0000FF;
}
</style>
<!-- 2. Add the JavaScript to initialize the chart on document ready -->
<script type="text/javascript">
function comArr(unitsArray) {
var outarr = [];
for (var i = 0; i < dTime.length; i++) {
outarr[i] = [dTime[i], unitsArray[i]];
}
return outarr;
}
var conf_heure =
{
days: {'Sun': 'Dimanche','Mon': 'Lundi','Tue': 'Mardi','Wed': 'Mercredi','Thu': 'Jeudi','Fri': 'Vendredi','Sat': 'Samedi'},
mois: {'01': 'Janvier','02': 'Février','03': 'Mars','04': 'Avril','05': 'Mai','06': 'Juin','07': 'Juillet','08': 'Août','09': 'Septembre','10': 'Octobre','11': 'Novembre','12': 'Décembre'},
}
$(function () {
var chart;
$(document).ready(function() {
var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
Highcharts.setOptions({
lang: {
months: ["Janvier "," Février "," Mars "," Avril "," Mai "," Juin "," Juillet "," Août "," Septembre "," Octobre "," Novembre "," Décembre"],
weekdays: ["Dim "," Lun "," Mar "," Mer "," Jeu "," Ven "," Sam"],
resetZoom: 'Reset zoom',
resetZoomTitle: 'Reset zoom à 1:1',
downloadPNG: "Télécharger au format PNG image",
downloadJPEG: "Télécharger au format JPEG image",
downloadPDF: "Télécharger au format PDF document",
downloadSVG: "Télécharger au format SVG vector image",
exportButtonTitle: "Exporter image ou document",
printChart: "Imprimer le graphique",
loading: "Laden..."
}
});
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
zoomType: 'x',
alignTicks: false,
type: 'spline',
marginRight: 30,
marginBottom: 50,
plotBorderColor: '#000000',
plotBorderWidth: 1,
borderColor: '#000000',
borderWidth: 1,
plotBackgroundColor: '#F7F8E0',
backgroundColor: '#67C9F1',
animation: {
duration: 5
}
},
legend: {
enabled: true,
align: 'right',
layout: 'horizontal',
verticalAlign: 'top',
y: -5,
x: -600,
backgroundColor: '#F7F8E0',
},
title: {
text: 'Temperature sous abris des dernieres 24 heures',
x: -20 //center
},
subtitle: {
text: '© Meteo Canejan',
x: -20
},
credits: {
text: 'Météo Canéjan',
href: 'http://www.meteo-canejan.php',
style: {
cursor: 'pointer',
color: '#666666',
fontSize: '12px'}
},
xAxis: {
type: "datetime",
dateTimeLabelFormats: {day: "%H:%M", hour: "%H:%M"},
//tickInterval: 7200*1000,
labels: {rotation: 0, align: 'right', style:{font: '', color: '#000000'} },
title: false,
plotLines: [{
value: minuit,
dashStyle: 'longdashdot',
width: 1,
color: '#000000',
label: {
text: 'Minuit',
align: 'right',
style:{font: 'bold 10px sans-serif', color: '#000000'},
rotation: 0,
y: 20,
x: 0-2,
}
}],
},
yAxis: {
minorGridLineColor: '#C5EEFA',
minorTickInterval: 'auto',
labels: {rotation: 0, align: 'right', style:{font: '', color: '#000000'} },
title: {
text: 'Temperature (°C)'
},
plotLines: [{
value: 0,
width: 1,
color: '#FF0000'
}]
},
tooltip: {
crosshairs:[true],
borderColor: '#4b85b7',
shared: true,
backgroundColor: '#edf1c8',
formatter: function() {
var s = '<b>'+ Highcharts.dateFormat('%e %B a %H:%M', this.x) +'</b>';
$.each(this.points, function(i, point) {
var unit = {
'Temperature': ' °C',
}[this.point.series.name];
s = s + '<br>' + '<span style="color:'+ point.series.color +'">' + point.series.name + '</span> : '
+Highcharts.numberFormat(point.y,1,","," ")
+ unit;
});
return s;
},
},
plotOptions: {
series: {
marker: {
enabled: false
},animation: {
duration: 9000
}
}
},
series: [
{
name: 'Temperature',
zIndex: 1,
color: '#ff0000',
data: comArr(outdoortemperature)
},
]}, function(chart) {
chart.renderer.image('http://www.meteo-canejan.fr/graphique/blason1.png', 10, 3, 43, 50)
.add();
});
});
});
</script>
</head>
<body>
<div id="container" style="width: 600px; height: 400px; margin: 0 auto"></div>
</body>
</html>
Code : Tout sélectionner
<?php
error_reporting( E_ALL );
// appel du script de connexion
require("mysqli_connect.php");
// On récupère le timestamp du dernier enregistrement
$sql="select max(tstamp) from data";
$query = mysqli_query($conn,$sql);
$list=mysqli_fetch_array($query);
// On détermine le stop et le start de façon à récupérer dans la prochaine requête que les données des dernières xx heures
$stop=$list[0];
// teste si le mois précédant de la dernière date enregistrée est égal à 01, 03, 05, 07, 08, 10, 12 (mois à 31 jours)
if (((date('m', $stop)-1==01) || (date('m', $stop)-1==03) || (date('m', $stop)-1==05)|| (date('m', $stop)-1==07)|| (date('m', $stop)-1==08)|| (date('m', $stop)-1==10) || (date('m', $stop)-1==12))) {$nbjm=31;}
// teste si le mois précédant de la dernière date enregistrée est égal à 04, 06, 09, 11 (mois à 30 jours)
elseif (((date('m', $stop)-1==04) || (date('m', $stop)-1==06) || (date('m', $stop)-1==09)|| (date('m', $stop)-1==11))) {$nbjm=30;}
// teste si le mois précédant de la dernière date enregistrée est égal à 02, et si l'année est bissextile
elseif (((date('m', $stop)-1==02) && (date('L', $stop)-1==1))) {$nbjm=29;}
// teste si le mois précédant de la dernière date enregistrée est égal à 02, et si l'année n'est pas bissextile
elseif (((date('m', $stop)-1==02) && (date('L', $stop)-1==0))) {$nbjm=28;}
$start=$stop-(86400*$nbjm);
echo date('d m Y H i', $start)
// Récupération des données sur les dernières 48 heures avec un tri ascendant sur le timestamp
$sql = "SELECT tstamp, outdoortemperature,dewpoint FROM data where tstamp >= '$start' and tstamp <= '$stop' ORDER BY 1";
$query=mysqli_query($conn,$sql);
$i=0;
while ($list = mysqli_fetch_assoc($query)) {
if (date("I",time())==0) {
$time[$i]=($list['tstamp'])*1000;
}
else {
$time[$i]=($list['tstamp']+7200)*1000;
}
$outdoortemperature[$i]=$list['outdoortemperature']*1;
$dewpoint[$i]=$list['dewpoint']*1;
$i++;
}
?>