Le Blog de MaxiMoi200

mardi 18 décembre 2007

Classement d'événements tels que certaines fêtes de l'année, du plus proche au plus éloigné de la date actuelle par ordre chronologique

Le probléme est le suivant : nous sommes par exemple le 5 juin. Nous souhaitons trier les 365 prochains jours à partir du 5 juin du plus proche au plus lointain (6 juin, 7 juin, .... 31 décembre ... 1 janvier ... 3 juin, 4 juin).

La méthode est simple : il suffit de fixer théoriquement l'origine des dates d'une année au 5 juin. Autrement dit, le 5 juin devient le jour "0" de l'année (un pseudo 1er janvier). Si l'on ne connaît pas la place exacte d'un jour dans l'année (par exemple le 2 février est le 33 ème jour de l'année), il suffit de l'écrire sous la forme MMJJ. Pour le 5 juin : 0506. Tous les jours sont bien rangés par ordre croissant depuis le 1er janvier (101) jusqu'au 31 décembre (1231), en comptant même le 29 février !

Pour transformer la date courante en jour "0", on retire la valeur de ce jour (506 pour le 5 juin) à toutes les dates. Ainsi, le 5 juin deveint le jour "0" (506-506). Les dates antérieures dans l'année deviennent alors négatives, les autres restent positives. Puis on applique l'opérateur modulo par 1231 (jour le plus "élevé").

Les dates "négatives" sont plus éloignées de la date actuelle que celles positives. Il faut alors les classer et utiliser un moyen de transformer les dates négatives en dates positives, plus élevées que celles qui le sont déjà et triées par ordre décroissant.

Application concrète : classement d'événements tels que certaines fêtes de l'année, du plus proche au plus éloigné par ordre chronologique. Par exemple, le 26 décembre, le premier jour férié est le 1er janvier, le dernier est le 25 décembre

Soit une table 'fêtes' d'une base de données contenant comme champs la date ('date') sous le format "MMJJ" et le jour férié ('férié') correspondant.
Soit la date courante $D exprimée sous la forme "MMJJ".

D'après tout ce qui précède, la requête SQL qui permettrait de classer tous les jours fériés du plus proche de la date D au plus éloigné, par ordre chronologique serait :

SELECT * FROM `fêtes` mod(`date` -$D, 1231 ) * IF( mod(`date` -$D, 1231 ) >0, -1, 1000 ) DESC

Au cas où les dates seraient exprimées à l'aide d'un champ "jour" et d'un champ "mois", il suffirait de les concaténer pour obtenir la forme "MMJJ".

SELECT * FROM `fêtes` mod( CONCAT( `mois` , `jour` ) -$D, 1231 ) * IF( mod( CONCAT( `mois` , `jour` ) -$D, 1231 ) >0, -1, 1000 ) DESC

vendredi 14 décembre 2007

Mes logiciels favoris

Voici une liste non exhaustives des logiciels gratuits pour windows que j'affectionne tout particulièrement

Le gadget Google MaxiMoi200 : carte au hazard

Vous êtes webmaster ou blogueur ? Ajoutez du contenu à votre site gratuitement et très simplement. Le module suivant a été créé par MaxiMoi200. Il présente à chaque rechargement de page une carte de voeux choisie au hazard sur MaxiMoi200.com ! Si vous utilisez la page d'accueil personnalisée de Google vous pouvez lui ajouter ce gadget.

Cliquez ici pour récupérer le code à copier sur les pages de votre site et personnaliser la bordure !

Cliquez ici pour une présentation aux webmaster des google gadgets
Cliquez ici pour un mode d'emploi des google gadgets

dimanche 9 décembre 2007

Statistiques MaxiMoi200 au 9 décembre 2007

273 Cartes
Nombre de visiteurs à ce jour : 1092474
Nombre de pages vues à ce jour : 4697528
Nombre de cartes envoyées à ce jour : 122998
Nombre d'abonnés à la newsletter : 3712
Nombre total d'affichages du gadget : 12552
Nombre total d'appels du flux RSS : 1046

Le flus RSS a été créé il y a un mois. Il propose un fil de nouvelles au même titre que la newsletter.
Le gadget google, créé il y a un mois, permet de proposer au webmaster d'ajouter gratuitement sur le site un module "carte au hazard" MaxiMoi200.
Ajout de la fonctionnalité "envoi différé france/canadaé pour prendre en compte le décalage horaire.
Allègement du module webcam
Ajout d'effets spéciaux MaxiMoi200 : aquarium, lampe et taquin.