- Learn
- Guida VBScript
- Un piccolo calendario
Un piccolo calendario
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!
Se vuoi aggiornamenti su Un piccolo calendario inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Realizzare un carosello di immagini con Twitter Bootstrap – parte 2
Dopo aver inserito il codice per realizzare il carosello di immagini nella nostra pagina Web, è possibile implementare uno script […]