Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Un piccolo calendario

Costruiamo un piccolo calendario da pubblicare sul Web
Costruiamo un piccolo calendario da pubblicare sul Web
Link copiato negli appunti

Può essere utile inserire in una pagina un calendario che, legato ad
altre funzioni VBScript, potrà essere esteso per applicazioni come un'agenda
o una bolla cartolina via WEB ecc.

Partiamo con il definire che giorno della settimana è il primo del mese
corrente. Per farlo basta usare:

primodelmese="01/" & month(date()) & "/" &
year(date())
giornodellaset=WeekDay(primodelmese)

L'obbiettivo è quello di avere una tabella di una riga e 7 colonne:
se il primo del mese è di Domenica, il giorno 1 sarà nella prima
cella, se è di Lunedì, nella seconda, e così a seguire.

Per farlo, si costruisce un ciclo che genera celle vuote finchè non
stampa i giorni in corrispondenza al giorno della settimana cui corrispondono.

<HTML>
<HEAD> <TITLE>Esercizio 2</TITLE>
</HEAD>
<BODY>
<table border=1>
<tr>
<SCRIPT LANGUAGE=vbscript>
<!--
primodelmese="01/" & month(date()) & "/" & year(date())
giornodellaset=WeekDay(primodelmese)
for i=1 to giornodellaset-1
document.write ("<td> </td>")
next
giorno=1
for i=giornodellaset to 7
document.write ("<td>" & giorno & "</td>")
giorno=giorno+1
next
//-->
</SCRIPT>
</tr>
</table>
</BODY>
</HTML>

Passiamo alle righe successive. La variabile giorno indica il giorno a cui
siamo arrivati, non ci resta che compiere lo stesso ciclo in una nuova riga.

<HTML>
<HEAD> <TITLE>Esercizio 2</TITLE>
</HEAD>
<BODY>
<table border=1>
<tr>
<SCRIPT LANGUAGE=vbscript>
<!--
primodelmese="01/" & month(date()) & "/" & year(date())
giornodellaset=WeekDay(primodelmese)
for i=1 to giornodellaset-1
document.write ("<td> </td>")
next
giorno=1
for i=giornodellaset to 7
document.write ("<td>" & giorno & "</td>")
giorno=giorno+1
next
//-->
</SCRIPT>
</tr>
</table>
</BODY>
</HTML>

Prima di continuare, proviamo a generalizzare il codice, che in fondo non è
altro che la ripetizione delle stesse righe per 4 volte:

<HTML>
<HEAD>
<TITLE>Esercizio 2</TITLE>
</HEAD>
<BODY>

<SCRIPT LANGUAGE=vbscript>
<!--
document.write ("<table border=1>")
giornodelmese="01/" & month(date()) & "/" & year(date())
giorno=1
for ciclo=1 to 4
document.write ("<tr>")
giornodellaset=WeekDay(giornodelmese)
for i=1 to giornodellaset-1
document.write ("<td> </td>")
next

for i=giornodellaset to 7
document.write ("<td>" & giorno & "</td>")
giorno=giorno+1
next
document.write ("</tr>")
giornodelmese=(giorno) & "/" & month(date()) & "/" & year(date())
next
document.write ("</table>")
//-->
</SCRIPT>
</BODY>
</HTML>

Quante volte deve essere ripetuto il ciclo? Dipende da quanti sono i giorni
del mese e da che giorno è il primo del mese. Pensandoci un po', si va
dai 4 ai 6 cicli. Per determinare la fine del mese, si può usare questo
espediente: dal primo del mese successivo si toglie un giorno

primodelmesesuccessivo="01" & "/" & (month(date())+1)
& "/" & Year(date())
ultimodelmese=DateAdd("d",-1,primodelmesesuccessivo)

Ora non ci resta che continuare il ciclo finchè la variabile giorno
è minore dell' ultimo del mese:

<HTML>
<HEAD>
<TITLE>Esercizio 2</TITLE>
</HEAD>
<BODY>

<script type="text/vbscript">
<!--
document.write ("<table border=1>")
giornodelmese="01/" & month(date()) & "/" & year(date())
giorno=1
primodelmesesuccessivo="01" & "/" & (month(date())+1) & "/" & Year(date())
ultimodelmese=DateAdd("d",-1,primodelmesesuccessivo)
While (giorno<day(ultimodelmese))
document.write ("<tr>")
giornodellaset=WeekDay(giornodelmese)
for i=1 to giornodellaset-1
document.write ("<td> </td>")
next

for i=giornodellaset to 7
document.write ("<td>" & giorno & "</td>")
giorno=giorno+1
next
document.write ("</tr>")
giornodelmese=(giorno) & "/" & month(date()) & "/" & year(date())
Wend
document.write ("</table>")
//-->
</SCRIPT>
</BODY>
</HTML>

<script type="text/vbscript">
<!--
document.write ("<table class="tabella" border=1>")
giornodelmese="01/" & month(date()) & "/" & year(date())
giorno=1
primodelmesesuccessivo="01" & "/" & (month(date())+1) & "/" & Year(date())
ultimodelmese=DateAdd("d",-1,primodelmesesuccessivo)
While (giorno<day(ultimodelmese))
document.write ("<tr>")
giornodellaset=WeekDay(giornodelmese)
for i=1 to giornodellaset-1
document.write ("<td> </td>")
next

for i=giornodellaset to 7
document.write ("<td>" & giorno & "</td>")
giorno=giorno+1
next
document.write ("</tr>")
giornodelmese=(giorno) & "/" & month(date()) & "/" & year(date())
Wend
document.write ("</table>")
//-->
</script>

Non ci resta che bloccare la scrittura dei giorni alla fine del mese ed abbellire il tutto:

<script type="text/vbscript">
<!--
document.write ("<table border=1>")
document.write ("<tr><td align=center colspan=7>" &
Ucase(monthname(month(date()))) & " " & year(date()) & "</td></tr>")
document.write
("<tr><td>D</td><td>L</td><td>M</td><td>M</td><td>G</td><td>V</td><td>S<
;/td></tr>")
giornodelmese="01/" & month(date()) & "/" & year(date())
giorno=1
'questo controllo risolve il probelma del mese di dicembre
if (month(date())+1)>12 then
anno=Year(date())+1
mese=1
else
anno=Year(date())
mese=(month(date())+1)
end if
primodelmesesuccessivo="01" & "/" & mese & "/" & anno
ultimodelmese=DateAdd("d",-1,primodelmesesuccessivo)
While (giorno<day(ultimodelmese))
document.write ("<tr>")
giornodellaset=WeekDay(giornodelmese)
for i=1 to giornodellaset-1
document.write ("<td> </td>")
next

for i=giornodellaset to 7
document.write ("<td>" & giorno & "</td>")
giorno=giorno+1
if giorno>day(ultimodelmese) then exit for
next
for i=i+1 to 7
document.write ("<td> </td>")
next
document.write ("</tr>")
giornodelmese=(giorno) & "/" & month(date()) & "/" & year(date())
Wend
document.write ("</table>")
//-->
</SCRIPT>

Per chi ama le nuove tecnologie, in ASP.NET un calendario simile a quello appena creato si ottiene richiamando un oggetto!


Ti consigliamo anche