UPDATE :
Bonjour @Toufik83, voici les données sous 30 jours :
Le bug se reproduit également sur 30 jours, normalement on a 2 signalements à 8h ce matin et 3 à 9h, donc 5 au total à cette date (le 21/09). Pourtant sur le graphique 1 mois (le 21/09) on a 2 et 3 sur le même axe au lieu de 5.
avez-vous assez de données dans votre test pour confirmer que cela ne bugue pas de votre côté ?
Script 1 mois :
Javascript :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 try{ // Creating a new connection. //$link =new mysqli($host, $user, $password, $dbName); if($bdd->connect_error) die("Erreur de connexion :".$link->connect_error); $handle2=$bdd->query('SELECT date_format(date_submit,"%Y-%m-%d %H:00") as `date_submit`, count(`signalements`.`id`) as `nb_signalements` FROM `signalements` WHERE date_submit > DATE_SUB(NOW(), INTERVAL 1 MONTH) GROUP BY day(`signalements`.`date_submit`),date_format(`signalements`.`date_submit`,"%d/%m à %Hh00") ORDER BY date_submit ASC' ); while($row2=$handle2->fetch_object()) $dataPoints2[]=["x"=> strtotime($row2->date_submit)*1000, "y"=> $row2->nb_signalements]; $handle2->free_result(); //script de mathieu $maintenant = time(); $il_y_a_1_mois = strtotime("-1 month", $maintenant); $parcours = $il_y_a_1_mois; while ($parcours < $maintenant) { $date_heure = date("Y-m-d H:00:00", $parcours); // Vérifier si la date existe déjà/ou pas, dans le résultat de la requête $dateExist=array_filter($dataPoints2,function($d)use($date_heure){ return date("Y-m-d H:00:00",$d['x'])==$date_heure; }); // s'il N Y A PAS une donnée pour ce jour, on la rajoute if (empty($dateExist)) $dataPoints2[]=["x"=>strtotime($date_heure)*1000,"y"=>0]; // prochain jour $parcours = strtotime("+1 day", $parcours); } //fin script //Trier le tableau en ASC (date inférieure vers date supérieure) usort($dataPoints2,function($a,$b){return $a["x"]>$b["x"]?1:-1;}); ; } catch(\Exception $e){ die("Erreur :".$e->getMessage()); }
Voici la structure de ma table, peut être que le soucis vient de là ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 <script> window.onload = function () { var chart2 = new CanvasJS.Chart("chartContainer2", { animationEnabled: true, backgroundColor: "#F7F7FF", animationDuration: 2000, //change to 1000, 500 etc //width: 320, theme: "light1", // Default: light1 Options: light1″,light2, dark1, dark2 options: { aspectRatio: 1 }, toolTip:{ content: "{name} : {y}" }, axisX: { interval:1,intervalType: "day", valueFormatString: "DD", /* labelFormatter: function (e) { return new Date(e.value).getUTCHours(); }, suffix:"H", */ viewportMinimum: <?=strtotime("-1 days",$dataPoints2[0]["x"]);?> }, axisY:{ interval:1 }, toolTip:{ contentFormatter: function ( e ) { let date=new Date(e.entries[0].dataPoint.x),nbrSignalements=e.entries[0].dataPoint.y, annee=date.getFullYear(),mois=(date.getMonth()+1),jour=date.getDate(),heure=date.getUTCHours(); jour=jour<10?"0"+jour:jour; mois=mois<10?"0"+mois:mois; return annee+"-"+mois+"-"+jour+" "+" : "+nbrSignalements; } }, /* toolTip:{ content: "{name}: {y}" },*/ data: [{ type: "splineArea", //change type to bar, line, area, pie, etc , showInLegend: true, name: "Nombre de signalements", color: "#F92F34", lineThickness: 2, markerSize: 5, xValueType:"dateTime", //connectNullData: true,ceci fonctionne seulement si le y==null dataPoints: <?=json_encode($dataPoints2, JSON_NUMERIC_CHECK); ?> }] }); chart2.render(); } </script>
Partager