Afficher le dicton du jour

Sur la page d'accueil de votre site, pourquoi ne pas afficher chaque jour un dicton ou le nom des personnes à fêter ?

Rien de plus simple avec JavaScript : une liste de dictons pour chacun des jours de l'année sous forme d'un tableau dicton[jour], avec comme numéro de jour jjmm (2501 pour 25 janvier).
Et le calcul du numéro du jour d'aujourd'hui par
100 * aujourd.getDate() + aujourd.getMonth() +1



En pratique, on peut utilement isoler la base de données (la liste de dictons) dans une page js séparée (liste_dictons.js dans notre exemple) et ne conserver que l'affichage du dicton dans la page html :


<HTML><HEAD>
<SCRIPT>
function cree_tableau()
{num=0
this.length=cree_tableau.arguments.length
while(num<this.length)
{this[num]=cree_tableau.arguments[num]
num++}}
</SCRIPT>
<SCRIPT LANGUAGE="Javascript" SRC="liste_dictons.js"></SCRIPT>
</HEAD>
<BODY>
<SCRIPT>
mois=new cree_tableau("janvier","f&eacute;vrier","mars","avril","mai","juin","juillet","ao&ucirc;t","septembre","octobre","novembre","d&eacute;cembre");
aujourd=new Date();
num=100 * aujourd.getDate() + aujourd.getMonth() +1;
document.write("<U>Aujourd'hui, " + aujourd.getDate() + " " + mois[aujourd.getMonth()] + "</U><BR>")
dict(num)
</SCRIPT>
texte de la page

</BODY></HTML>


La feuille liste_dictons.js contiendra pour sa part la définition du tableau dicton[jour] et la fonction dict(num) qui se contente d'inscrire le dicton du jour:

function dict(num){dicton=new cree_tableau()
dicton [101] = "S'il pleut la nuit de la nouvelle ann&eacute;e,<BR> &nbsp;&nbsp; Le laboureur n'aura gu&egrave;re de denr&eacute;es<BR> &nbsp;&nbsp; &nbsp;&nbsp; Et l'on aura pas de bon vin<BR> &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; Pour noyer son pauvre chagrin."
dicton [201] = "Saint-Clair porte quarantaine"
dicton [301] = "Sainte Genevi&egrave;ve ne sort point <BR><BR>si saint Marceau ne la rejoint."
dicton [401] = "Le jour de la Saint Odilon <BR>Souvent n'am&egrave;ne rien de bon."
dicton [501] = "A la saint Sim&eacute;on,<BR>La neige et les tisons"
dicton [601] = "Si le soir des Rois<BR> &nbsp;&nbsp; Beaucoup d'&eacute;toiles tu vois,<BR> &nbsp;&nbsp; &nbsp;&nbsp; Auras s&eacute;cheresse en &eacute;t&eacute;<BR> &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; Et beaucoup d'oeufs au poulailler."
dicton [701] = "Saint Raymond, Sainte M&eacute;lanie.<BR><BR>S'il g&egrave;le &agrave; la saint Raymond, <BR>L'hiver est encore long."
dicton [801] = "Temps de saint Lucien,<BR>Temps de chien.<BR><BR>Au jour de Sainte Gudule,<BR>Le jour cro&icirc;t, mais le froid ne recule."
dicton [901] = "Saint Adrien, Sainte Alix, Saint Julien.<BR><BR>Pour Saint Adrien, le froid nous revient."
dicton [1001] = "Saint Guillaume"
......


Enfin, pour écrire et mettre à jour commodément la liste de dictons (fichier texte liste_dictons.js), on peut partir d'une base Excel et utiliser VBA.
Dans notre feuille Excel, les dictons sont disposés dans 4 colonne, une pour chaque trimestre, chaque mois occupant 31 lignes (il n'y a pas de mois de plus de 31 jours).
La macro VBA crée le fichier liste_dictons.js (en écrasant éventuellement la version antérieure), puis balaie la liste des dictons jour par jour et les recopie dans le fichier texte :

Sub mise_a_jour_liste_dictons()
Open "C:\liste_dictons.js" For Output As #1
Print #1, Chr$(13) & "function dict(num){dicton=new cree_tableau()"
For col = 1 To 4
For lin = 1 To 93
jour = lin - 31 * ((lin - 1) \ 31)
mois = 1 + (lin - 1) \ 31 + 3 * (col - 1)
If Cells(lin, col) = "" Then
Print #1, Chr$(13) & "dicton [" & 100 * jour + mois & "] = " & Chr(34) & "pas de dicton" & Chr(34)
Else
Print #1, Chr$(13) & "dicton [" & 100 * jour + mois & "] = " & Chr(34) & mise_en_forme(Cells(lin, col)) & Chr(34)
End If
Next lin
Next col
Print #1, Chr$(13) & "document.write(dicton[num])}"
Close #1
End Sub

Function mise_en_forme(txt)
mise_en_forme = WorksheetFunction.Substitute(txt, " ", " &nbsp;&nbsp; ")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, Chr(10), "<BR>")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "à", "&agrave;")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "â", "&acirc;")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "ä", "&auml;")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "é", "&eacute;")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "è", "&egrave;")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "ê", "&ecirc;")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "ë", "&euml;")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "î", "&icirc;")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "ï", "&iuml;")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "ô", "&ocirc;")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "ö", "&ouml;")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "ù", "&ugrave;")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "û", "&ucirc;")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "ü", "&uuml;")
mise_en_forme = WorksheetFunction.Substitute(mise_en_forme, "ç", "&ccedil;")
End Function


télécharger la liste des dictons et la macro (fichier Excel Zippé, 22 ko)

Pour ajouter le dicton du jour sur votre page Web :
- lancer la macro VBA après avoir pris soin de préciser en ligne 2 de la macro le chemin d'accès de la page Web (ou plus simple, recopier simplement la page liste_dictons.js dans le même répertoire que la page html),
- recopier dans l'entête de la page Web, entre les balises <HEAD> et </HEAD>, les lignes suivantes :

<SCRIPT>
function cree_tableau()
{num=0
this.length=cree_tableau.arguments.length
while(num<this.length)
{this[num]=cree_tableau.arguments[num]
num++}}
</SCRIPT>
<SCRIPT LANGUAGE="Javascript" SRC="liste_dictons.js"></SCRIPT>


Puis, dans le corps de la page Web (entre les balises <BODY> et </BODY>, à l'endroit choisi pour insérer le dicton,

<SCRIPT>
mois=new cree_tableau("janvier","f&eacute;vrier","mars","avril","mai","juin","juillet","ao&ucirc;t","septembre","octobre","novembre","d&eacute;cembre");
aujourd=new Date();
num=100 * aujourd.getDate() + aujourd.getMonth() +1;
document.write("<U>Aujourd'hui, " + aujourd.getDate() + " " + mois[aujourd.getMonth()] + "</U><BR>")
dict(num)
</SCRIPT>



**************

On peut simplifier la mise en oeuvre du programme en regroupant toutes les fonctions JavaScript dans le fichier JS, afin de ne laisser dans la feuille html qu'une ligne de code l'endroit o doit être inséré le dicton : En enregistrant la page "les_dictons.js" dans le même répertoire que la page html et en recopiant la ligne
<SCRIPT SRC="les_dictons.js"></SCRIPT>
dans le corps de la page Web, on obtient :


**************