Toutes ces histoires de virus, de confinements, de vaccin etc, ont fini tout de même par me porter un peu sur le système, même si j'ai choisi de m'isoler chez ma compagne, plutôt que nous restions chacun seul dans notre maison. Bref, moralement, je n'étais pas au top de ma forme, et comme dans pareil cas, je sais que si je me laisse aller, mon moral s'en ressent, car je pars irrésistiblement vers des considérations existentielles, et donc, j'ai décidé de me lancer dans quelques travaux, afin de m'occuper l'esprit.
D'abord, numériser la (ou les) centaines de diapos en ma possession, que je ne regarde plus, car c'est tout un bazar d'installer l'écran (que, d'ailleurs, j'ai du bazarder car il avait pris mal), et l'appareil à diapo. Au moins, si les photos sont numérisées, pas de problèmes, je peux facilement les projeter sur ma télé. Ma compagne ayant récupéré un scanner permettant cela, j'en ai profité.
Mais j'ai décidé également de me lancer dans une amélioration de certains sites d'association que j'ai créé il y a quelques années, améliorations que je repoussais sans cesse, en bon procrastinateur que je suis...
Bref, au jour d'aujourd'hui, cela fait maintenant plus de quinze jours que je me suis attaqué à un petit problème que je rencontrais sur un site. La situation était celle-ci : sur la page d'accueil du site en question, j'avais fait autrefois un emplacement pour pouvoir y placer une image illustrant la période en cours, image que je changeais régulièrement...
Ayant eu quelques problèmes de santé et m'étant donc retrouvé dans l'impossibilité de gérer cette histoire d'image, l'idée m'est venue d'automatiser la tâche, au moins pour certaines images, comme les saisons, qui durent trois mois, et au sein de ces saisons, diverses fêtes, comme Pâques, Noël, le jour de l'an, le 1er avril, le 1er mai, etc, les événements ponctuels pouvant, eux, continuer à être mis manuellement, juste en saisissant une fourchette de dates...
Ça paraît simple, comme çà, mais ça ne l'est pas vraiment. J'avoue toutefois que je m'en doutais un peu... En effet, s'il m'était facile de programmer x événements un an à l'avance, déjà, rien que les faire se reproduire chaque année, n'était pas de la tarte. En effet, dans le langage des bases de données, j'eus beau chercher dans ma documentation et sur internet, je ne trouvais rien de tout fait pour ne gérer que le mois et le jour, sans l'année. En langage php, j'avais une vague idée de la manière dont cela pouvait se faire, mais au final, je me disais que cela donnerait un code peut-être un peu lourd, d'autant que se posait un deuxième problème: comment faire pour enregistrer mes saisons, alors que parfois, au sein de ces saisons, certaines fêtes prennent le pas pour disparaître ensuite ? Devrais-je morceler toute l'année en une multitude de périodes ? Et comment faire si je voulais par la suite enlever ou rajouter des évènements facilement ? Parce que voyez-vous, j'essaie à chaque fois d'analyser les choses en pensant au futur et à des besoins qui pourraient se faire sentir: j'essaie de tout prévoir à l'avance, ou du moins le plus possible, cela évite un surcroit de travail le jour où l'on veut modifier quelque chose. En quelque sorte, je me fais un genre de cahier des charges, que j'essaie ensuite suivre. C'est souvent cela qui pèche, lorsqu'on fait un site: le dernier que j'ai fait, j'avais essayé d'établir ce cahier des charges en posant des questions à celui qui allait en être un des utilisateurs principaux, et malheureusement, il n'avait pas bien compris le but de cela. Résultat, quand il m'a demandé de faire certaines modifications, je me suis vu obligé de tout recommencer de A à Z, la conception de départ n'étant pas faite pour ce qu'il me demandait. Je dois dire que cela m'a mis quelque peu en colère, car apparemment, il ne réalisait pas du tout, tout le boulot que cela faisait, d'autant plus qu'au départ, j'avais évoqué la chose et qu'il m'avait dit que non. Encore une fois, j'aurais dû m'écouter, moi. Oui, parce que ce genre de choses, ce n'est pas la première fois que ça arrive....Fermons cette parenthèse: aujourd'hui, pour ce site-là, c'est moi qui suis l'utilisateur principal.

Je posais donc quelques questions dans deux forums informatique de ma connaissance, où je savais pouvoir trouver des gens pointus: mon premier souci, à mon avis, était que je n'arrivais pas à bien analyser le problème, or en informatique, si on arrive à bien analyser le problème en le décortiquant correctement, après, le reste n'est plus que de la technique, et la technique, il suffit de l'apprendre, si on ne l'a pas.

Je partais donc sur une histoire de code automatique d'affichage qu'on puisse débrayer, afin de le remplacer momentanément par un autre, manuel, celui-là.
Je n'obtins pas vraiment la réponse souhaitée, mais celle-ci me fit réfléchir et me dire que je me fourvoyais dans quelque chose de trop compliqué: ne pourrais-je pas combiner les différents langages pour essayer de résoudre mon problème ?
En effet, j'avais à ma disposition, d'abord le langage sql permettant de gérer les bases de données et d'y faire des requêtes pour aller y chercher des infos enregistrées, le langage php permettant de faire le lien entre les bases de données et la page pour afficher le résultat des requêtes, et les langages html et css, permettant d'afficher le résultat à ma guise.
Je me dis donc d'abord qu' au lieu de faire un code affichant ceci ou cela selon la date, puis un autre avec une autre condition de date, il serait sans doute plus simple de modifier la table où seraient stockées les données des images, et d'y rajouter les champs: début, fin, image-spéciale (avec format booléen: 1 pour oui, et 0 pour non), puis de fusionner les 2 requêtes en une seule afin que si il y avait deux images correspondantes pour la date, on prenne en priorité celle ayant la valeur image-spéciale non nulle. Je me rendis compte que j'allais monter là un genre d'usine à gaz, et je cherchais donc plus loin, en me disant que bien souvent, le plus simple était la meilleure solution...

Je repartis donc sur mon idée de code "normal", puis envisageais de rajouter un code pour les images spéciales, images qui viendraient éventuellement se mettre par dessus l'image normale en cours, ceci grâce au  langage CSS qui permettrait, en plus, de définir des priorité d'affichage selon la couche.
Partant  de là, j'affinais encore plus: j'avais trois catégories d'images: les saisons, puis au sein de ces saisons, les fêtes, puis rajoutées à tout cela, des évènements ponctuels, et donc, la solution était simple: il fallait 3 couches d'images, avec une requête différente pour chaque couche. Dans ma base de données, j'éclatais donc ma table contenant toutes les infos des images, y compris les dates de début et fin d'affichage, en trois tables distinctes, une par catégorie.

Je me retrouvais à nouveau face à un hic, plus technique, celui-ci: si je savais afficher une image en comparant sa date complète (jour mois année) de début et fin d'affichage avec la date du jour, je ne savais pas faire cela uniquement avec le jour et le mois...Et d'abord, comment enregistrer mes dates dans la base de données, puisqu'il semblait que dans celle-ci, le format de date jour-mois, seuls, n'existait pas ?
Je posais à nouveau la question sur les forums...Sur l'un, un ami me proposa un code complexe visant à enregistrer les dates au format date normal, puis à modifier l'année des évènement par un système de mise à jour automatique à chaque ouverture de la page...Parallèlement sur l'autre forum, quelqu'un m'aiguilla sur la manière de faire une requête pour extraire d'une date donnée, le jour ou le mois et les comparer à ceux d'aujourd'hui, mais ça me sembla sans issue car en comparant les jours et les mois séparément, ça ne fonctionnait pas, et pour cause...Alors j'essayais d'extraire les données séparément pour les concaténer ensuite, mais ça ne fonctionnais toujours pas: toujours un problème de format, supposais-je.

Je dois dire que je désespérais un peu, même si je sentais que je n'étais pas loin du but: j'avais l'impression d'avoir un boulot considérable à faire, et que cela allait m'écraser....

Et puis sur un forum, je posais une question de manière un peu sarcastique, je dois dire, à quelqu'un qui me parlait de datetime (le datetime est un format de date incluant tout: année, mois, jour, heure). Sarcastique, parce que, englué dans mes croyances, je me disais que celui-là se croyait plus fort que les autres: "Le datetime incluant l'année, ne vais-je donc pas être obligé de modifier mes dates chaque 1er janvier ?" Et il me répondit avec assurance que non, heureusement: il suffisait de mettre dans ma table évènement le jour et le mois de début, le jour et le mois de fin...

Je commençai à réaliser soudain que je m'étais peut-être mis une barrière qui n’existait pas: dans mon esprit, si j'avais une date quelconque: 2021-04-28 par exemple, si je forçais son écriture dans le format 04-28 via une formule, le 2021 existait toujours quelque part, même s'il n'était pas écrit, alors qu'il semblait bien que non ! Aargh ! Et j'en étais tellement persuadé que je n'avais même pas pris la peine de tester !!! Quelle erreur grossière de ma part: je me serais ainsi évité bien des réflexions inutiles ! Le pire est que discutant avec mon pote, qui lui, est informaticien de métier, j'avais tellement orienté mes réflexions que lui non plus ne s'était pas posé la question, et était parti dans une mauvaise direction.

Et puis, dans la foulée, dans la même discussion,  un autre écrivit une phrase qui me donna à réfléchir, vu où j'en étais de mes réflexions: "Tu peux formater les dates à ta guise..."
Sacrebleu !
Et si...? Une illumination ? Presque, LOL: le format mois-jour n'existait pas dans la base de données, mais plutôt que de stocker sous ce format, on pouvait stocker au format normal et formater ensuite les données extraites. Une évidence, n'est-ce pas ? Un prof de philo nous disait que l'évidence est extrêmement subjective... Et oui, tellement évident que je ne l'avais pas réalisé !
N'étant pas un maitre es langage sql, je me mis à tester, avec empressement, différentes "orthographes", pour exprimer ce que je voulais... et tout d'un coup, devant mes yeux un peu ébahis: Yesss ! Ça fonctionne ! Euréka ! :-D

Toute la tension accumulée ces derniers jours s'envola d'un seul coup ! :-)

Mais aussitôt après, douche froide !

Non je vous rassure, ce n'était pas une question de code, mais simplement qu'il me fallait mettre à jour toutes mes tables en prévision de l'affichage public, et ça me parut un immense boulot...Je me dis un instant que je n'y arriverai jamais...Je vous l'ai dit: depuis quelque temps, je ne suis au top dans ma tête.
Et puis, je me suis fait violence: je me suis pris par la main, en me disant qu'après tout j'avais tout mon temps, qu'il n'y avait pas d'urgence mais que si je ne m'y mettais pas, ben forcément, ça ne se ferait pas tout seul...je ne sais pourquoi, cela m'a fait penser à ces gens qui trouvent que c'est long d'avoir un rendez-vous chez certains médecins spécialistes et qui, à cause de cela, ne prennent jamais rendez-vous, et du coup, effectivement, c'est long...
Bref, je m'y suis mis et finalement en moins d'une heure, j'avais fini ! Waouh ! Faut dire que lorsque je suis concentré, je suis en général assez efficace dans mon boulot: c'est tout juste si je pense à respirer ;-)
A dire vrai, j'ai pris la sage résolution d'éteindre mon ordi avant 21 heures tous les soirs, car sinon, l'expérience m'a montré que je ne vois pas le temps passer et je me retrouve parfois à 5 ou 6 heures du matin (mon record) encore dessus, et après dans la journée, je suis au radar complet.

Bref, du coup, d'avoir résolu ce problème, j'ai repris de l'estime de moi-même, et mon moral est remonté en flèche !La création, dans quelque domaine que ce soit, me fait toujours cet effet-là: y a pas à dire, c'est valorisant.

Bon évidemment, il faudrait que je remanie la structure globale du site, parce que je m'étais largement inspiré d'un site américain, en leur piquant un peu de code, or plus tard sur un autre site, j'ai réussi à reproduire le même genre, avec mon code à moi, et en plus efficace et moins lourd....Alors, oui...il faudrait... :-D

Bien sûr, quand on est perfectionniste, un site n'est jamais terminé : on rebondit d'amélioration en amélioration, l'une entraînant l'autre...

C'est exactement ce qui se passe: je viens à peine de terminer cela, que je voudrais améliorer autre chose: l'affichage du site pour les i-pad. En effet, ce site est responsive, c'est à dire que son aspect s'adapte à la taille de l'écran, or, si pour les écrans de type smartphone, le site est simplifié, certains éléments étant alors cachés, pour le format i-pad,, qui est intermédiaire entre les smartphone et l'ordinateur, l'affichage pourrait être meilleur, à mon avis. Seulement, n'ayant pas pratiqué depuis longtemps ce genre de chose, il faut que je révise mes bouquins: c'est fou ce que je peux oublier... Je me dis que je ne devais pas avoir aussi bien appris que je le pensais. Prochaine étape, donc: révisions !