Bonjour JP54,
J'ai pris le temps de regarder comment ajouter automatiquement les jours de gel à ton graphique.
Dans un premier temps, j'ai remarqué que ton script ne respectait pas vraiment l'API HighCharts, d'où aucun fonctionnement des options HighCharts que tu as virées.
Si des ingénieurs en informatique se sont donnés la peine de les créer, c'est sans doute parce qu'elles avaient une certaine fonctionnalité.
Ensuite mauvaise nouvelle, j'ai tourné le machin dans tous les sens, mais impossible d'ajouter le cumul annuel dans une quatorzième colonne.
Utilisant un type "Datetime" sur xAxis, on se retrouve avec 12 colonnes, mais bon je n'ai pas dit mon dernier mot.
Pour automatiser, il faut exécuter une requête sql à chaque appel de la page contenant le graphique.
Voici cette requête :
"SELECT substr(recdatetz, 5, 2),count(*) FROM MiniMaxidata
WHERE tstamp > '$start'
AND tstamp <= '$stop'
AND t_out_mini <= 0
group by 1
union
SELECT substr(recdatetz, 5, 2),null FROM MiniMaxidata
WHERE tstamp > '$start'
AND tstamp <= '$stop'
AND substr(recdatetz, 5, 2) not in (SELECT substr(recdatetz, 5, 2)
FROM MiniMaxidata
WHERE tstamp > '$start'
AND tstamp <= '$stop'
AND t_out_mini <= 0)
group by 1
order by 1";
Explications :
Dans un premier temps, avant la requête, j'ai défini un $start et un $stop soit le 1er janvier zéro heure de l'année en cours et le 1er janvier zéro heure de l'année prochaine
Dans la première partie de la requête, je vais chercher mois par mois le nombre de jours avec un t_out_mini négatif dans la table MaxiMinidata.
Pour obtenir le mois je me sers de la rubrique recdatetz sur laquelle j'effectue un "substr", c'est à dire que je ne garde que les deux chiffres commençant en cinquième position.
Par exemple pour le 1er janvier 2014 à 15h30 le recdatetz = 2014
01011530
Pour associer les nombres de jours aux mois, j'effectue un "group by" en fin de la première partie de requête.
Pour la seconde partie de la requête, après "union", j'effectue une recherche sur tous les mois, n'ayant pas eu une température négative, et pour les mois trouvés, je force le nombre de jours à zéro.
Là aussi, j'effectue un "group by" en fin de requête, puis un "order by"général de façon à ce que le résultat soit chronologique.
Le hic c'est que nous sommes en avril, et que la table ne contient pas de résultats pour les 8 mois à venir, le graphique ne comportait donc que 4 colonnes.
J'ai donc créé 12 timestamp "bidons" afin que le graphique comporte bien douze mois dès maintenant.
Pour tester, n'ayant eu qu'un seul jour en mars avec une température négative à côté de Disney, j'ai calé mes start et stop sur l'année 2013, mais avec tes normales à toi.
J'ai également viré tes min et max sur yAxis, ils sont inutiles et empêchent le graphique de s'adapter à son cadre.
En effet, en fonction de la valeur des données l'échelle se modifie automatiquement, ça évite d'avoir un trait gris en bas pour le premier jour de gel de janvier !
Ca donne le résultat suivant :
http://toutletempslaniaque.net/minigraphs/jours_gel.php
Par ailleurs, j'ai vu que tu indiquais "en dur" l'année dans le titre de ton graphique, je t'ai modifié le truc, au premier janvier 2015, le titre sera avec l'année 2015 sans que tu touches à quoi que ce soit.
Est-ce que ca te va ?
Merci de me répondre par MP.
Bonne soirée
Jean-Michel