I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document)...

28
Paolo Camagni Riccardo Nikolassy I linguaggi del Web HTML, CSS, JavaScript,VBScript, ASP, PHP EDITORE ULRICO HOEPLI MILANO

Transcript of I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document)...

Page 1: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

P a o lo C a m a g n iR ic c a rd o N ik o la s s y

I linguaggi del WebHTML, CSS, JavaScript,VBScript, ASP, PHP

EDITORE ULRICO HOEPLI MILANO

Page 2: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

Copyright © Ulrico Hoepli Editore S.p.A. 2009via Hoepli 5, 20121 Milano (Italy)

tel. +39 02 864871 – fax +39 02 8052886

e-mail [email protected]

www.hoepli.it

Tutti i diritti sono riservati a norma di legge

e a norma delle convenzioni internazionali

ISBN 978-88-203-4225-8

Ristampa:

4 3 2 1 0 2009 2010 2011 2012 2013

Realizzazione editoriale

ART Servizi Editoriali S.p.A. - Bolognawww.art.bo.it

Coordinamento editoriale: Monica Monari

Redazione: Simona Sansavini

Progetto grafico: Marina Baldisserri

Impaginazione: Sonia Bertusi

Copertina: MN&CG S.r.l., Milano

Stampa: Arti Grafiche Franco Battaia S.r.l. - Zibido San Giacomo (MI)

Printed in Italy

UN TESTO PIÙ RICCO E SEMPRE AGGIORNATOAlla pagina web www.hoeplieditore.it/4225-8 sono disponibili:

• materiali didattici integrativi;

• eventuali aggiornamenti dei contenuti del testo;

• un estratto esemplificativo del volume in formato PDF che può essere

consultato, scaricato e stampato.

Page 3: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

3

Presentazione 6

Modulo 1 - Le reti, l’HTML e i fogli di stile 7

U.A. 1 - Le reti di computer 8

1.1 Le reti di computer 8

1.2 Le topologie di rete 9

1.3 Il modello ISO/OSI e Internet 10

1.4 Il cablaggio e i dispositivi di rete 11

1.5 Gli indirizzi IP 13

1.6 I protocolli e il routing 14

1.7 La rete Internet 15

1.8 L’architettura del Web 16

1.9 I servizi di Internet 17

1.10 I domini, il DNS e la registrazione

di siti 18

1.11 Proxy 19

Esempi di laboratorio 20

Esercizi di applicazione 27

U.A. 2 - Il linguaggio HTML 28

2.1 HTML 28

2.2 Creare una pagina 29

2.3 La sintassi 30

2.4 L’intestazione di un documento 31

2.5 Il corpo del documento

(tag <BODY>) 33

2.6 I caratteri speciali 35

2.7 I paragrafi e la formattazione

del testo 36

2.8 I tag di gestione del testo

(text level) 37

2.9 La definizione del carattere 38

2.10 Le intestazioni (titoli) 40

2.11 Le immagini 41

2.12 Gli elenchi 43

2.13 Gli elenchi strutturati 44

2.14 Le tabelle 46

2.15 I collegamenti ipertestuali (link) 49

2.16 Gli oggetti multimediali 51

2.17 Inserire applet Java 52

2.18 I frame 53

2.19 I frame annidati 55

2.20 I moduli e il server web 58

2.21 Il modulo di immissione form 59

2.22 Gli elementi che compongono

i moduli (campi) 60

Esercizi di applicazione 65

U.A. 3 - I fogli di stile (CSS) 67

3.1 Gli stili, gli elementi e le proprietà 67

3.2 I fogli di stile 68

3.3 Le priorità e gli stili ripetuti 70

3.4 Le proprietà 71

3.5 Come definire le aree 75

3.6 Le classi 80

3.7 La proprietà z-index 81

3.8 Le pseudoclassi 82

3.9 Il cursore del mouse 82

Esempi di laboratorio 84

Esercizi di applicazione 86

Modulo 2 - Gli script lato client 87

U.A. 4 - Un linguaggio lato client: JavaScript 88

4.1 Le pagine dinamiche e i linguaggi

di scripting 88

4.2 Gli script lato client e lato server 89

4.3 Che cosa serve per iniziare 90

4.4 Dove inserire gli script 91

4.5 Gli script gestori di evento 91

4.6 Gli script da file esterni 93

4.7 Le finestre di dialogo 93

4.8 Scrivere nella pagina 95

4.9 Le variabili 95

4.10 Gli operatori e le funzioni

aritmetiche 96

4.11 Le conversioni di tipo 96

4.12 Le stringhe 97

4.13 I vettori 100

4.14 La selezione 101

4.15 I cicli in JavaScript 102

4.16 Le funzioni 105

4.17 Le funzioni e gli eventi 105

In d ic e

Page 4: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

4.18 La convalida dei moduli

con JavaScript 108

4.19 Gli oggetti del browser 111

4.20 Il documento (document) 114

4.21 La barra degli indirizzi (location) 116

4.22 La cronologia del browser

(history) 116

4.23 La gestione degli eventi 117

4.24 Le immagini 119

Esempi di laboratorio 121

Esercizi di applicazione 125

U.A. 5 - Un linguaggio lato client: VBScript 126

5.1 VBScript 126

5.2 I tipi di variabili 126

5.3 Gli array 127

5.4 Le finestre in VBScript 128

5.5 La selezione 129

5.6 I cicli in VBScript 131

5.7 Le subroutine 133

5.8 Il passaggio dei parametri 134

5.9 Le funzioni 134

5.10 Le funzioni interne di VBScript 135

5.11 Associare gli eventi 139

5.12 VBScript e il browser 139

5.13 La convalida prima dell’inoltro

di un modulo 140

5.14 VBScript e i confronti tra le date 141

Esempi di laboratorio 142

Esercizi di applicazione 146

Modulo 3 - Gli script lato server 147

U.A. 6 - Gli script lato server con ASP 148

6.1 Gli script lato server 148

6.2 Le pagine dinamiche e gli script

lato server 150

6.3 La sintassi ASP 150

6.4 L’inclusione di file esterni

in pagine ASP 151

6.5 Gli oggetti di ASP 151

6.6 L’oggetto Response 154

6.7 La comunicazione client/server

e l’oggetto Request 155

6.8 L’oggetto Request 156

6.9 La collection Request.Form 157

6.10 La collection

Request.ServerVariables 158

6.11 Un esempio sull’oggetto

Request 159

6.12 L’oggetto Server 161

6.13 L’oggetto Application 163

6.14 L’oggetto Session 166

6.15 Le sessioni e il file Global.asa 167

6.16 ASP e i file di testo 169

6.17 La protezione delle pagine 170

6.18 I cookie 171

6.19 Diversi metodi a confronto

sulla “persistenza” dei dati 172

6.20 L’oggetto ASPError 173

Esempi di laboratorio 175

Esercizi di applicazione 181

U.D. 7 - L’interazione tra ASP e i database 183

7.1 I database e il Web 183

7.2 L’architettura di un’applicazione

web 184

7.3 Le tabelle di Access 185

7.4 Le interrogazioni ai dati presenti

in tabella (query) 186

7.5 La connessione DSN ad Access 190

7.6 La connessione DSN-less

ad Access 192

7.7 L’oggetto RecordSet 193

7.8 Come paginare i risultati

di un Recordset 195

7.9 Un esempio di navigazione

tra record 197

7.10 La selezione nel Recordset 202

7.11 La selezione condizionale

di un Recordset 203

7.12 Usare le relazioni in un

Recordset 205

7.13 Raggruppare i Recordset 207

7.14 L’inserimento di nuovi record

nella tabella 208

7.15 L’eliminazione di record

in una tabella 211

7.16 L’aggiornamento di record

in una tabella 215

7.17 L’esecuzione di stored procedure

Access 217

7.18 Leggere un file XML in ASP 218

Esempi di laboratorio 221

Esercizi di applicazione 232

Indice

4

Page 5: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

Indice

5

U.D. 8 - Gli script lato server con PHP 234

8.1 La sintassi fondamentale di PHP 234

8.2 L’installazione di PHP

in ambienti diversi 234

8.3 I blocchi e i commenti 238

8.4 Gli operatori 238

8.5 I costrutti principali 239

8.6 I cicli e i controlli 241

8.7 I tipi di dati 242

8.8 Il casting 243

8.9 L’output in PHP 245

8.10 Le funzioni native particolari

di PHP 245

8.11 Le variabili e le costanti 247

8.12 Le variabili provenienti dai form 249

8.13 I cookie 250

8.14 Gli array 251

8.15 Inviare file al client con header()

e readfile() 253

8.16 Le funzioni 256

8.17 La persistenza in PHP 258

8.18 L’inclusione di file esterni 262

8.19 I file in PHP 262

Esempi di laboratorio 266

Esercizi di applicazione 271

U.D. 9 - L’interazione tra PHP e i database 272

9.1 I tipi di connessione ai database 272

9.2 La connessione ad Access DSN-less

con le funzioni COM 272

9.3 La connessione al database

con COM e ADO 273

9.4 Inserire nuovi record 273

9.5 Leggere da una tabella 274

9.6 L’aggiornamento di una tabella 274

9.7 Il flusso dei dati nella

comunicazione tra PHP e MySQL 275

9.8 MySQL 275

9.9 Le funzioni di connessione

al database MySQL 276

9.10 La funzione mysql_query() 277

9.11 Un esempio di lettura

da una tabella MySQL 277

9.12 Aggiungere dati a una tabella

MySQL 277

9.13 L’aggiornamento dei record

di una tabella MySQL 278

9.14 L’eliminazione di un record

da una tabella MySQL 278

9.15 Verificare i risultati di una query

MySQL 278

Esempi di laboratorio 281

Esercizi di applicazione 287

Page 6: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

6

Caratteristiche generali

Questo volume è stato scritto con l’obiettivo di fornire una panoramica sulle principalitecnologie che permettono il funzionamento di Internet. Presenta e approfondisce i lin-guaggi di scripting e di marcatura maggiormente diffusi per la creazione di pagine webstatiche, dinamiche, lato client e lato server. La trattazione parte dai concetti basilari delle tecnologie di rete e si spinge sino all’inter-facciamento con i database Access e MySQL. Fornisce inoltre ampio spazio alle temati-che relative alle architetture Three-Tier, che rappresentano un modello imprescindibilenella gestione dei siti web dinamici. I linguaggi presentati sono molteplici e vanno daquelli di marcatura come HTML e CSS a quelli di scripting lato client (JavaScript e VB-Script), fino ai linguaggi di scripting lato server (ASP e PHP).Il volume raccoglie inoltre numerosi approfondimenti che riguardano argomenti correla-ti (SQL, XML, RSS) spesso presentati all’interno di esempi pratici.

Impianto didattico

Il testo è caratterizzato da una struttura modulare: gli argomenti vengono forniti conesempi di difficoltà crescente, consentendo in tal modo allo studente di acquisire le cono-scenze di base delle tematiche illustrate. Ogni Modulo presenta un macro argomento. Imoduli sono a loro volta suddivisi in Unità di apprendimento. Ciascuna Unità sviluppaun argomento specifico ed è suddivisa in paragrafi. Al termine delle Unità di apprendi-mento sono presenti due sezioni:

: una sezione per l’attività di laboratorio con esempi svolti. Gli esempi più articola-ti vengono suddivisi in fasi e presentati corredati dalle codifiche, molto ricche dicommenti;

: una sezione per la verifica delle conoscenze e competenze acquisite, suddivisa inesercizi da svolgere e domande aperte.

A chi è rivolto il volume

Il libro si rivolge prevalentemente ai trienni degli Istituti Tecnici Industriali per gli indirizzidi Informatica, Elettronica, Elettrotecnica, Telecomunicazioni, al triennio dei Licei Tecni-ci, al Liceo Scientifico Tecnologico, al Liceo Scientifico a indirizzo PNI, ai corsi di Infor-matica, Elettronica, Telecomunicazioni degli Istituti Professionali e a tutti coloro che desi-derano approfondire le tematiche riguardanti i linguaggi di programmazione per il Web.

Paolo CamagniRiccardo Nikolassy

P re s e n t a z io n e

Page 7: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

script client

Modulo

Gli script lato client2

U.A. 4 Un linguaggio lato client: JavaScript

U.A. 5 Un linguaggio lato client: VBScript

PREREQUISITI

$ Utilizzo di un sistema operativo

$ Conoscenza dei contenuti del Modulo 1

$ Conoscenze basilari delle tecniche

di programmazione

$ Caratteristiche fondamentali di hardware

e software

COMPETENZE

$ Sapere creare semplici script lato client

in JavaScript e VBScript

$ Sapere descrivere e utilizzare gli elementi

dei linguaggi JavaScript e VBScript

$ Sapere redigere un documento HTML

contenente script

$ Sapere impostare la struttura di uno

script in JavaScript e in VBScript

per la gestione degli eventi

$ Sapere creare script lato client

per la validazione dei moduli

CONOSCENZE

$ Conoscenza delle principali tecnologie

di programmazione lato client

$ Conoscenza della sintassi e delle modalità

di utilizzo delle istruzioni per il controllo

del flusso JavaScript e VBScript

$ Conoscenza del modello a oggetti

del browser usato dagli script

lato client

$ Conoscenza della gestione dei moduli

attraverso i linguaggi di script

JavaScript e VBScript

$ Conoscenza delle tecniche di validazione

dei moduli mediante JavaScript

e VBScript

&

Page 8: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

126

Unità di apprendimento Un linguaggio lato client: VBScript

55

5.1 VBScript

VBScript è un semplice linguaggio di scripting che esiste sia nella versione lato client sia in quella latoserver per l’implementazione di pagine ASP. Si tratta di un linguaggio che nasce come semplificazionedel noto linguaggio di programmazione Visual Basic. L’importanza di questo linguaggio si evince pro-prio dal fatto che una volta appreso diventa molto semplice sia muoversi all’interno di documenti ASPsia lavorare in Visual Basic, linguaggio molto richiesto nelle aziende informatiche. Un’altra peculiaritàdel VBScript lato client è la possibilità di creare script che interagiscono con i fogli di stile CSS. La dif-ferenza sostanziale tra JavaScript e VBScript sta nel fatto che mentre il primo è un reale linguaggioorientato agli oggetti, quindi risolve molte delle sue problematiche ricorrendo a proprietà e metodi, ilsecondo lavora molto con le funzioni predefinite.Come visto per JavaScript, anche per VBScript il codice può essere scritto direttamente all’interno del-le pagine HTML in una coppia di tag che definiscono uno script. Attenzione perché nel caso di VB-Script, contrariamente a JavaScript, la definizione del linguaggio è obbligatoria, come illustrato dall’e-sempio che segue.

<SCRIPT LANGUAGE=”VBScript”>

<!—

‘ Questo è un commento in VBScript

document.write(“Saluti a tutti da VBScript”)

—>

</SCRIPT>

5.2 I tipi di variabili

In VBScript sono disponibili i seguenti tipi di variabile:

È importante sottolineare che anche VBScript è in grado di gestire il BOM (Browser Object Model). Pertantotutti gli oggetti appartenenti al browser vengono “riflessi” all’interno degli script scritti in VBScript. È moltoimportante ricordare che in VBScript le stringhe sono sempre racchiuse tra doppi apici, in quanto gli apicisingoli si usano per i commenti.

TIPO INTERVALLO

Byte Da 0 a 255

Boolean True o false

Integer Da –32.768 a 32.767

Long Da –2.147.483.648 a 2.147.483.647

Single Da –3,402823E38 a –1,401298E–45 per i valori negativi; da 1,401298E–45 a 3,402823E38 per i valori positivi

Double Da –1,79769313486232E308 a –4,94065645841247E–324 per i valori negativi; da 4,94065645841247E–324 a 1,79769313486232E308 per i valori positivi

Currency Da –922.337.203.685.477,5808 a 922.337.203.685.477,5807

Date Dall’1 gennaio dell’anno 100 al 31 dicembre 9999, inclusi

Page 9: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

Esistono due tipi di dichiarazione in VBScript: implicita ed esplicita, come visto per JavaScript.

La dichiarazione esplicitaAvviene mediante la parola chiave dim, per esempio:

Dim mese

mese=”Gennaio”

Dim n

n=100

La dichiarazione implicita

mese=”Gennaio”

Il concatenamento di stringhe avviene mediante l’operatore & a differenza di JavaScript. Per esempio:

mesi=”Gennaio” & “ Febbraio”

In tal modo viene semplicemente assegnato il nome alla variabile in un punto qualsiasi dello script. È tut-tavia consigliabile non adottare questo metodo per evitare errori di ortografia nel nome della variabile;inoltre, dichiarando le variabili all’inizio dello script, si rende il codice più ordinato e leggibile. È possi-bile utilizzare l’istruzione Option Explicit per richiedere la dichiarazione esplicita di tutte le varia-bili. Tale istruzione deve essere la prima dello script.I nomi delle variabili seguono le seguenti regole:

: devono iniziare con una lettera dell’alfabeto;: non possono includere punti;: non devono essere composti da più di 255 caratteri;: devono essere univoci nell’area di validità in cui la variabile è dichiarata;: VBScript non è case sensitive, a differenza di JavaScript.

5.3 Gli array

La dichiarazione di un vettore si effettua scrivendo il nome del vettore seguito da parentesi. Nell’esem-pio seguente, viene dichiarato un vettore contenente 11 elementi:

Dim vet(10)

Anche se tra parentesi è indicato il numero 10, il vettore contiene 11 elementi. In VBScript infatti gli ar-ray sono sempre in base zero e di conseguenza il numero degli elementi in essi contenuti corrispondesempre al numero indicato tra parentesi più uno. Nell’esempio seguente vengono assegnati i dati da 0 a10 ai vari elementi dell’array:

vet(0) = 256

vet(1) = 324

vet(2) = 100

...

vet(10) = 55

Unità di apprendimento 5 - Un linguaggio lato client: VBScript

127

TIPO INTERVALLO

Object Qualsiasi riferimento a Object

String La lunghezza di stringhe di lunghezza variabile può essere compresa tra 0 e 2 miliardi di caratteri

Variant Le variabili variant possono contenere un dato di qualunque tipo ed è il tipo che viene assegnato automaticamente da VBScript quando una variabile non viene espressamente dichiarata

Page 10: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

Gli array non sono limitati a una sola dimensione. È infatti possibile specificare fino a 60 dimensioni, an-che se nella maggior parte dei casi ne vengono specificate solo tre o quattro. Per dichiarare dimensionimultiple (matrici) è necessario separare con una virgola i valori delle dimensioni indicati tra parentesi.Nell’esempio seguente viene dichiarata la matrice mat composta da 10 righe e 10 colonne:

Dim mat(9,9)

5.4 Le finestre in VBScript

VBScript gestisce tutte le finestre di dialogo riflesse dall’oggetto window e inoltre aggiunge le poten-zialità offerte dal sistema operativo Windows. Pertanto è possibile usare le finestre mostrate sotto.

: dal BOM del browser:• alert

• confirm

• prompt

: da Windows:• MsgBox

• InputBox

La funzione MsgBox permette di visualizzare una finestra di dialogo. Possiede la sintassi seguente:

variabile = MsgBox(“Messaggio”,tipo di finestra,”Titolo”)

Il messaggio è di tipo testuale. Per andare acapo si usa la funzione Chr(13) o Chr(10). Il tipo di finestra è un numero tra i seguenti:

0 : solo il bottone OK

1 : bottoni OK e Cancel

2 : bottoni Abort, Retry e Ignore

3 : bottoni Yes, No e Cancel

4 : bottoni Yes e No

5 : bottoni Retry e Cancel

16 : icona di Critical Message

32 : icona di Warning Query

48 : icona di Warning Message

64 : icona di Information Message

Il titolo è il testo per la barra del titolo.A seconda di dove clicca l’utente, la funzionepuò restituire uno dei seguenti valori:

1 : click su OK

2 : click su Cancel

3 : click su Abort

4 : click su Retry

5 : click su Ignore

6 : click su Yes

7 : click su No

La funzione InputBox permette di visualizzare una finestra di dialogo e consente all’utente di immet-tere un dato. Possiede la sintassi seguente:

variabile = InputBox(“Messaggio”,”Titolo”)

Modulo 2 - Gli script lato client

128

Page 11: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

Se l’utente sceglie OK o preme INVIO, la funzione InputBox restituirà il contenuto della casella ditesto. Se invece l’utente sceglie il pulsante Annulla, la funzione restituirà una stringa di lunghezza ze-ro (“”). Per esempio è possibile effettuare un ciclo di inserimento valori fintanto che l’utente non de-cide di premere Annulla. Il ciclo termina quando l’utente preme il pulsante Annulla:

document.write “<TABLE BORDER=0>”

Dim i,nome

i=1

Do

nome = InputBox (“inserisci il nome”,”Inserimento valori”)

If nome = “” Then

Exit Do

Else

document.write “<TR><TD bgcolor=’12AABB’>” & i &

“<TD bgcolor=’BBCC00’>” & nome

End If

i = i + 1

Loop While true

document.write “</TABLE>”

Dopo aver immesso i nomi, quando si fa click su Annulla si ottiene l’elenco indicato nella figura che segue.

5.5 La selezione

Il costrutto di selezione consente di scegliere se eseguire o meno alcune istruzioni (blocco) in base alvalore booleano assunto da una certa espressione condizionale verificata da un operatore relazionale. Sibasano sul concetto di verità e falsità e generano solo due diversi valori, rispettivamente ‘true’ oppu-re ‘false’. Gli operatori elencati di seguito vengono usati soltanto nelle istruzioni condizionali:

Restituisce ‘true’ se il risultato dell’espressione posta a sinistra è maggiore del risultato del-l’espressione posta a destra.

Restituisce ‘true’ se il risultato dell’espressione posta a sinistra è maggiore o uguale al risul-tato dell’espressione posta a destra.

Restituisce ‘true’ se il risultato dell’espressione posta a sinistra è minore del risultato dell’e-spressione posta a destra.

Restituisce ‘true’ se il risultato dell’espressione posta a sinistra è minore o uguale al risultatodell’espressione posta a destra.

Restituisce ‘true’ se il risultato dell’espressione posta a sinistra è diverso del risultato dell’e-spressione posta a destra.

Restituisce ‘true’ se il risultato dell’espressione posta a sinistra è uguale al risultato dell’e-spressione posta a destra.

=

<>

<=

<

>=

>

Unità di apprendimento 5 - Un linguaggio lato client: VBScript

129

Page 12: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

Gli operatori logici sono assai simili a quelli relazionali in quanto restituiscono soltanto un valore di ve-rità che può essere vero o falso (true o false). Gli operatori logici sono i seguenti:

Operatore di AND logico.

Operatore di OR logico.

La sintassi della selezione è la seguente:

If condizione Then

istruzioni ...

End If

La selezione si dice binaria se consente di scegliere quali istruzioni o blocchi di istruzioni eseguire in ba-se al valore booleano assunto da una certa espressione condizionale.

If condizione Then

istruzioni ...

Else

istruzioni ...

End If

Per esempio:

Dim a

Dim b

a = 1

b = 2

If a < b Then

document.write “a è minore di b”

Else

document.write “a è maggiore di b”

End If

La selezione multipla è un’alternativa all’uso della selezione binaria annidata. Si usa quando è necessa-rio eseguire operazioni legate a valori precisi. Mediante la selezione multipla si possono porre una seriedi condizioni da valutare in modo sequenziale.

Select Case espressione

{

Case valore

istruzioni ...

Prima di tutto è necessario chiarire che non essendoci un delimitatore di statement, co-me per esempio il punto e virgola in JavaScript, non si può scrivere tutto il codice su unariga, ma ciascuna riga possiede solo uno statement. Tuttavia, quando si scrive il codicedirettamente in un tag HTML, è possibile scrivere più righe di codice separandole tra diloro dai due punti. Per esempio:

<INPUT TYPE=”button” onclick=’window.status=”prima

istruzione”:MsgBox “seconda istruzione”’>

Cliccando sul pulsante si ottiene l’esecuzione delle due istruzioni insequenza: la prima istruzione scrive nella barra di stato della finestrae la seconda apre una finestra di dialogo.

not

Or

and

Modulo 2 - Gli script lato client

130

Page 13: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

...

Case valore “ennesimo”

istruzioni...

Case Else

istruzioni...

End Select

Per esempio:

Dim mese

mese = Month(Date())

document.write “Questo è il mese di “

Select Case mese

Case 1 document.write “Gennaio”

Case 2 document.write “Febbraio”

Case 3 document.write “Marzo”

Case 4 document.write “Aprile”

Case 5 document.write “Maggio”

Case 6 document.write “Giugno”

Case 7 document.write “Luglio”

Case 8 document.write “Agosto”

Case 9 document.write “Settembre”

Case 10 document.write “Ottobre”

Case 11 document.write “Novembre”

Case 12 document.write “Dicembre”

End Select

5.6 I cicli in VBScript

In VBScript sono disponibili le seguenti istruzioni per l’esecuzione di cicli:

: Do...Loop: le istruzioni vengono ripetute fino a quando una condizione risulta true. : For...Next: le istruzioni vengono ripetute il numero di volte specificato da un contatore. : For Each...Next: un gruppo di istruzioni viene ripetuto per ciascun elemento incluso nell’in-

sieme di un array.

Do...LoopRipete un blocco di istruzioni fintanto che una condizione è true o fino a quando diventa true.

Do While oppure Until condizione

istruzioni...

Loop

In alternativa, è possibile utilizzare la seguente sintassi:

Do

istruzioni...

Loop While oppure Until condizione

L’esempio che segue mostra due casi di utilizzo di cicli Do. Il primo caso mostra un ciclo con controlloiniziale: il ciclo termina quando la condizione non è più verificata. Il secondo caso mostra un ciclo concontrollo finale: essendoci la parola chiave while significa che il ciclo termina quando la condizione èfalsa. Il ciclo viene ripetuto una sola volta in quanto la condizione risulta subito falsa.Il primo ciclo prende il nome di ciclo a controllo in testa mentre il secondo ciclo a controllo in coda.La differenza sta nel fatto che nel secondo tipo, anche se la condizione risultasse falsa, le istruzioni pre-senti verrebbero eseguite almeno una volta.

Unità di apprendimento 5 - Un linguaggio lato client: VBScript

131

Page 14: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

Il seguente esempio mostra due casi di utilizzo di cicli Do con controllo sul falso. Il primo caso mostraun ciclo a controllo iniziale che termina quando la condizione è verificata. Il secondo caso mostra inve-ce un ciclo a controllo finale.

For...Next

Consente di eseguire un blocco di istruzioni un numero specificato di volte. La sintassi è la seguente:

For contatore = valore_iniziale To valore_finale Step incremento

istruzioni...

Next

I seguenti esempi mostrano l’uso del ciclo. Il primo mostra un ciclo con passo 2 che viene eseguito per5 volte. Il secondo mostra un ciclo con passo negativo.

Modulo 2 - Gli script lato client

132

Dim c, n

c = 0

n = 10

Do While n > 5 ‘ciclo ripetuto per 5 volte

n = n – 1

c = c + 1

Loop

MsgBox “Il ciclo viene eseguito

“ & c & “ volte.”

Dim c,n

c = 0

n = 10

Do ‘ciclo ripetuto per 1 volta

n = n – 1

c = c + 1

Loop While n > 10

MsgBox “Il ciclo viene eseguito

“ & c & “ volte.

Dim c, n

c = 0

n = 10

Do Until n = 5 ‘ciclo ripetuto 5 volte

n = n – 1

c = c + 1

Loop

MsgBox “Il ciclo viene eseguito

“ & c & “ volte.”

Dim c, n

c = 0

n = 1

Do ‘ciclo ripetuto per 9 volte

n = n + 1

c = c + 1

Loop Until n = 10

MsgBox “Il ciclo viene eseguito

“ & c & “ volte

Esiste una particolare istruzione chiamata Exit Do che permette di “forzare” l’uscita dal blocco Do. Il se-guente esempio illustra l’uscita dal ciclo quando la condizione è verificata (n<10):

Dim c, n

c = 0

n = 9

Do Until n = 10

n = n – 1

c = c + 1

If n < 10 Then Exit Do

Loop

MsgBox “Il ciclo viene eseguito “ & c & “ volte

Dim i, c

For i = 2 To 10 Step 2 ‘ciclo ripetuto

‘5 volte

c = c + 1

Next

MsgBox “Il ciclo viene eseguito

“ & c & “ volte.”

Dim i, c

For i = 16 To 2 Step -2 ‘ciclo eseguito

‘8 volte

c = c + 1

Next

MsgBox “Il ciclo viene eseguito

“ & c & “ volte.”

Page 15: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

For Each In...Next

Consente di individuare gli elementi di un array senza ricorrere all’indice numerico che li identifica. Ilseguente esempio mostra l’uso di questo ciclo per visualizzare tutti gli elementi dell’array giorni:

Dim giorni(7)

giorni(0) = “domenica”

giorni(1) = “lunedì ”

giorni(2) = “martedì ”

giorni(3) = “mercoledì ”

giorni(4) = “giovedì ”

giorni(5) = “venerdì ”

giorni(6) = “sabato”

For Each giorno In giorni

document.write( giorno & “<br />” )

Next

5.7 Le subroutine

Le subroutine vengono usate per eseguire delle azioni all’interno dello script. Il corpo della subroutineviene generalemente inserito all’inizio del documento e precisamente nella <HEAD>, in tal modo è visi-bile al resto del documento. Per richiamare la subroutine dal codice basta scrivere in nome della sub-routine stessa seguito dai parametri separati tra loro dalla virgola. Per dichiarare una subroutine è ne-cessario scrivere la parola chiave Sub seguita dal nome della subroutine e dai parametri posti tra paren-tesi e separati tra di loro dalla virgola:

‘ dichiarazione Subroutine

Sub nome_Subroutine(parametri...)

istruzioni...

End Sub

‘ Chiamata Subroutine

nome_Subroutine parametro1, parametro2, ...

Il seguente esempio mostra l’utilizzo di una subroutine che visualizza una tabella con righe e colonnepassati come parametri:

Sub Tabella(r,c)

tab=”<TABLE BORDER=1>”

For i=1 To r

tab = tab & “<TR>”

For j=1 To c

tab = tab & “<TD width=20><BR>”

Next

Next

document.write tab & “</TABLE>”

Il contatore può essere anche di tipo float. La parola chiave Steppuò essere omessa percontatori interi unitari. È infine importante ricordare che il ciclo For di VBScript incremen-ta al Next. Così all’uscita del seguente ciclo il contatore vale 6 e non 5:

Dim i

For i=1 To 5

...

Next

MsgBox “Il contatore i vale “ & i

Unità di apprendimento 5 - Un linguaggio lato client: VBScript

133

Page 16: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

End Sub

Tabella 3,5

Tabella 5,4

In questo esempio si notano tre variabili di tipo locale, si tratta di tab e dei contatori i e j. Tali varia-bili infatti, vengono implicitamente dichiarate all’interno della subroutine. Vi sono anche due parame-tri passati per valore che rappresentano la dimensione della tabella da creare.

5.8 Il passaggio dei parametri

VBScript consente di passare parametri per valore e per riferimento. Se nulla viene specificato nella di-chiarazione di subroutine si tratta sempre di un passaggio di parametri per valore. Per indicare se il pa-rametro viene passato per valore o per riferimento è necessario anteporre al parametro formale la paro-la chiave ByRef (riferimento) o ByVal (valore, si può omettere). Quando un parametro viene passa-to per valore, la sua modifica nella subroutine non si ripercuote nel seguito del codice che richiama laroutine. Quando invece un parametro viene passato per riferimento la modifica del parametro all’in-terno della routine si ripercuote anche nel seguito del codice di chiamata. L’esempio che segue mostrauna subroutine alla quale vengono passati due parametri, uno per valore e uno per riferimento.

Sub prova(ByRef p1,ByVal p2)

p1 = p1 / 2

p2 = p2 / 2

End Sub

Dim a,b

a=5

b=10

document.write “<P>Prima della chiamata “ & a & “ “ & b

prova a, b

document.write “</P><P>Dopo la chiamata “ & a & “ “ & b & “</P>”

5.9 Le funzioni

Le funzioni (Function) vengono usate per eseguire delle azioni all’interno dello script. La differenzacon le subroutine è che le funzioni possono restituire un valore associato alla funzione stessa. La sintas-si per la dichiarazione di una funzione prevede la parola chiave Function seguita dal nome della fun-zione e dai parametri scritti tra parentesi e separati dalla virgola:

‘Dichiarazione di una funzione

Function nome_Funzione(parametro1, parametro2, ...)

istruzioni ...

End Function

‘Chiamata di una funzione

a = nome_funzione(parametro1, parametro2, ...)

L’esempio che segue mostra l’uso di una funzione alla quale viene passato un valore che rappresenta unatemperatura in gradi Fahrenheit. La funzione elabora il risultato e lo restituisce sotto forma di tempera-tura in gradi Celsius:

Function celsius(gradi)

celsius = (gradi – 32) * 5 / 9

End Function

MsgBox celsius(20)

Per uscire anticipatamente da una funzione si usa l’istruzione Exit Function.

Modulo 2 - Gli script lato client

134

Page 17: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

5.10 Le funzioni interne di VBScript

Vediamo una tabella riassuntiva di alcune funzioni matematiche:

Vediamo una tabella riassuntiva di alcune funzioni per la gestione delle stringhe:

Unità di apprendimento 5 - Un linguaggio lato client: VBScript

135

FUNZIONE SIGNIFICATO ESEMPIO

Abs(numero) Valore assoluto Abs(–58)Ris: 58

Atn(numero) Arcotangente 4 * Atn(1)Ris: 3,14159265358979

Cos(numero) numero in radianti Coseno Cos(30 * 3,14 / 180)Ris: 0,866158094405463

Exp(numero) e ^ numero (e = 2,718282) Exp(2)Ris: 7,38905609893065

Fix(numero) Parte intera Fix(–7,6)Ris: 7

Int(numero) Parte intera Int(–7,6)Ris: 8

Log(numero) Logaritmo naturale Log(5)Ris: 1,6094379124341

Oct(numero) Ottale in base 10 Oct(8)Ris: 10

Rnd Numero casuale RandomizeInt(Rnd * 10)Ris: nr. casuale >= 0e < 10

Round(numero,decimali) Arrotonda al valore di decimali Round(4.515,2)Ris: 4,51Round(4.516,2)Ris: 4,52

Sin(numero) Seno Sin(30 * 3,14 / 180)Ris: 0,499770102643102

Sqr(numero) numero>0 Radice quadrata Sqr(9)Ris: 3

Tan(numero) Tangente Tan(10)Ris: 0,648360827459087

FUNZIONE SIGNIFICATO ESEMPIO

Asc Restituisce il codice ASCII di un carattere MyNumber = Asc(“A”)

Restituisce 65MyNumber = Asc(“a”)

Restituisce 97MyNumber = Asc(“Albero”)

Restituisce 65

Chr Restituisce un carattere dato MyChar = Chr(65)

il suo codice ASCII Restituisce AMyChar = Chr(97)

Restituisce aMyChar = Chr(62)

Restituisce >MyChar = Chr(37)

Restituisce %

Page 18: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

Modulo 2 - Gli script lato client

136

FUNZIONE SIGNIFICATO ESEMPIO

Instr Restituisce la posizione di una stringa SearchString =”visulabasicscript”

in un’altra Stringa in cui eseguire la ricercaSearchChar = “i”

Esegue la ricerca della lettera “i”MyPos = Instr(4, SearchString,

SearchChar)

Confronto testuale a partire dalla posizione 4Restituisce 10

LCase Converte in minuscolo MyString = “VBSCript”

LCaseString = LCase(MyString)

Il valore di LCaseString è “vbscript”

Left Restituisce un numero di caratteri MyString = “VBSCript”

dalla sinistra di una stringa LeftString = Left(MyString, 3) ‘

Il valore di LeftString è “VBS”

Len Restituisce il numero di caratteri MyString = Len(“VBSCRIPT”) ‘

di una stringa MyString include 8 caratteri

LTrim Toglie gli spazi a sinistra MyVar = LTrim(“ vbscript “)

Il valore di MyVar è “vbscript”

Mid Restituisce un certo numero MyVar = Mid(“VB Script è

di caratteri da una stringa divertente!”, 4, 6)

Il valore di MyVar è “Script”

Replace Restituisce una data sottostringa MyString = Replace(“Linguaggio

JavaScript “, con un’altra“Java”,

“VB”)

Restituisce “VBScript”

Rigth Restituisce un numero di caratteri AnyString = “Salve gente!”

dalla destra di una stringa MyStr = Right(AnyString, 1)

Restituisce “e”MyStr = Right(AnyString, 6)

Restituisce “ gente”MyStr = Right(AnyString, 20)

Restituisce “Salve gente”

Rtrim Toglie gli spazi a destra MyVar = RTrim(“ vbscript “)

Il valore di MyVar è “vbscript”

Space Crea una stringa di spazi MyString = Space(10)

Restituisce una stringa con 10 spazi

Split Crea un array di stringhe più piccole MyString = “VBScriptXè Xdivertente!”

da una stringa MyArray = Split(MyString, “x”)

‘ Il valore di MyArray(0) è “VBScript”‘ Il valore di MyArray(1) è “è”‘ Il valore di )MyArray(2) è “divertente!”

StrComp Confronta il valore di due stringhe MyStr1 = “Cane”

MyStr2 = “Gatto”

MyStr3 = “Gatto”

MyComp = StrComp(MyStr3, MyStr2)

Restituisce 0MyComp = StrComp(MyStr1, MyStr2)

Restituisce –1MyComp = StrComp(MyStr2, MyStr1)

Restituisce 1

String Crea una stringa di un carattere ripetuto MyString = String(5, “*”)

un certo numero di volte Restituisce “*****”MyString = String(5, 42)

Restituisce “*****”MyString = String(10, “ABC”)

Restituisce “AAAAAAAAAA”

Page 19: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

Nell’esempio seguente vengono viste alcune delle funzioni qui sopra descritte:

Dim nome,i

nome = inputbox(“Inserisci il tuo nome”)

document.write “Il tuo nome possiede “ & Len(nome) & “ caratteri<BR>”

document.write “La tua iniziale: “ & Left(nome,1) & “<BR>”

document.write “Le ultime cinque lettere sono: “ & Right(nome,5) & “<BR>”

document.write “Il tuo nome al contrario è : “ & Strreverse(nome) & “<BR>”

document.write “In minuscolo: “ & Lcase(nome) & “<BR>”

document.write “In maiuscolo: “ & Ucase(nome) & “<BR>”

document.write “Iniziale maiuscola: “ & Ucase(Left(nome,1))

& Lcase(Mid(nome,2)) & “<BR>”

For i =1 To Len(nome)

document.write Mid(nome,1,i) & “<BR>”

Next

Vediamo una tabella riassuntiva di alcune funzioni per la gestione delle date:

Unità di apprendimento 5 - Un linguaggio lato client: VBScript

137

FUNZIONE SIGNIFICATO ESEMPIO

StrReverse Inverte una stringa MyStr = StrReverse(“VBScript”)

Il valore di MyStr è “tpircSBV”

Trim Taglia gli spazi da entrambi i lati MyVar = Trim(“ vbscript “)

di una stringa Il valore di MyVar è “vbscript”

Ucase Converte in maiuscolo MyWord = UCase(“Salve gente!”)

Restituisce “SALVE GENTE!”

FUNZIONE SIGNIFICATO ESEMPIO

Date Restituisce la data MyDate = Date

Il valore di MyDate è la data di sistema corrente

Time Restituisce l’ora MyTime = Time

Restituisce l’ora di sistema corrente

Now Restituisce la data e l’ora MyVar = Now

Il valore di MyVar è la data e l’ora corrente

DateAdd Aggiunge un intervallo di tempo La funzione DateAdd non restituisce a una data una data non valida. Nell’esempio seguente

viene aggiunto un mese alla data 31 gennaio:

NewDate = DateAdd(“m”, 1, “31-

Jan-95”)

In questo caso la funzione restituisce 28-feb-95, non 31-feb-95. Se data è 31-gen-96, viene restituito 29-feb-96 perché il 1996 è un anno bisestile

DateDiff Restituisce il tempo tra due date DiffADate = “Giorni mancanti: “

& DateDiff(“d”, Now, “1/1/2010”)

Page 20: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

Il seguente esempio mostra l’uso di alcune funzioni di manipolazione date. La data inserita è 20/12/1976:

Dim DataNascita

Dim giorni(7)

giorni(2)=”Lunedi”

giorni(3)=”Martedi”

giorni(4)=”Mercoledi”

giorni(5)=”Giovedi”

giorni(6)=”Venerdi”

giorni(6)=”Sabato”

giorni(1)=”Domenica”

DataNascita=InputBox (“Quando sei nato (gg/mm/aaaa)?”)

document.write “Sei nato di “ & giorni(Weekday(DataNascita)) & “<BR>”

document.write “Da quando sei nato sono passati “ & Datediff(“d”,DataNascita,Now)

& “ giorni<BR>”

document.write “Da quando sei nato sono passati “ & Datediff(“m”,DataNascita,Now)

& “ mesi<BR>”

document.write “Da quando sei nato sono passati “ & Datediff(“ww”,DataNascita,Now)

& “ settimane”

Modulo 2 - Gli script lato client

138

FUNZIONE SIGNIFICATO ESEMPIO

Day Restituisce il giorno di una data MyDay = Day(“19/10/1962”)

Il valore di MyDay è 19

Month Restituisce il mese di una data MyMonth = Month(“19/10/1962”)

Il valore di MyMonth è 10

Year Restituisce l’anno di una data MyYear = Month(“19/10/1962”)

Il valore di MyYear è 1962

MonthName Restituisce il nome del mese MyMonthName =

Month(“19/10/1962”)

Il valore di MyMonthName è ottobre

WeekDay Restituisce un numero corrispondente MyWeekDay = Week

al giorno della settimana day(“19/10/1962”)

Il valore di MyWeekDay è 6 perché MyDate corrisponde a un venerdì

WeekDayName Restituisce il nome del giorno MyWeekDay = WeekdayName

della settimana (“19/10/1962”)

Il valore di MyWeekDay è venerdì

Second Restituisce i secondi MySec = Second(Now)

Il valore di MySec è un numero che rappresenta i secondi

Minute Restituisce i minuti MyVar = Minute(Now)

Il valore di MyVar è un numero che rappresenta i minuti

Hour Restituisce l’ora MyVar = Hour(Now)

Il valore di MyVar è un numero che rappresenta l’ora in formato (0-23)

FormatDateTime Restituisce la data e l’ora secondo FormatDateTime(now, 0)

un formato Restituisce 16/09/2008 13.52.08 FormatDateTime(now, 1)

Restituisce martedì 16 settembre 2008 FormatDateTime(now, 2)

Restituisce 16/09/2008 FormatDateTime(now, 3)

Restituisce 13.52.08 FormatDateTime(now, 4)

Restituisce 13.52

Page 21: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

5.11 Associare gli eventi

Per associare del codice VBScript a eventi, è possibile procedere in due modi diversi. Un primo me-todo consiste nello scrivere una routine Sub definita come routine di eventi. Il nome della routine ècomposto da due parti separate da un carattere di sottolineatura (_): il nome dell’oggetto sul qualeopera, che deriva dall’attributo NAME e il nome dell’evento associato. Nell’esempio che segue a ogniclick sul pulsante Puls1 viene cercata ed eseguita la corrispondente routine di eventi Puls1_On-Click.

Sub Puls1_OnClick

MsgBox “Hai fatto click!!”

End Sub

Il codice HTML è il seguente:

INPUT NAME=”Puls1” TYPE=”BUTTON” VALUE=”Fai click”>

Il secondo metodo avviene invece mediante la scrittura di uno script specifico per ogni evento, che con-tiene la parola chiave EVENT seguita dal nome dell’evento e FOR seguita dal nome dell’oggetto al qua-le è associata:

<SCRIPT LANGUAGE=”VBScript” EVENT=”OnClick” FOR=”Puls1”>

MsgBox “Hai fatto click!!”

</SCRIPT>

In questo caso, dato che il tag <SCRIPT> specifica l’evento e il controllo, le istruzioni Sub e End Subnon vengono utilizzate.

5.12 VBScript e il browser

Innanzi tutto è importante tenere presente che tutti gli oggetti del browser sono riflessi all’interno degliscript VBScript come visto in precedenza per JavaScript. La notazione che si deve adottare è la dot nota-

tion. In tal modo qualunque oggetto è identificabile indicandone la gerarchia completa fino alla pro-prietà o al metodo interessato. Così se, per esempio, si vuole fare un semplice script con due pulsanti, dicui uno incrementa un valore numerico presente in una casella di testo e l’altro lo decrementa, è suffi-ciente associare all’evento del pulsante una funzione che calcoli il nuovo valore e lo scriva all’interno del-la casella di testo:

<INPUT TYPE=”button” VALUE=” – “ onclick=”dec()”>

<INPUT TYPE=”text” size=3 VALUE=0 NAME=”conta”>

<INPUT TYPE=”button” VALUE=” + “ onclick=”inc()”>

Le funzioni, che devono essere scritte prima del codice HTML, devono semplicemente incrementare odecrementare il valore del campo di nome conta.

Unità di apprendimento 5 - Un linguaggio lato client: VBScript

139

Esiste inoltre un terzo modo: mediante Internet Explorer è possibile aggiungere brevi sezioni di codice sul-la stessa riga nel tag che definisce il controllo. Quando si fa click sul pulsante, l’azione eseguita dal tag<INPUT>, per esempio, è equivalente all’azione eseguita dal codice dell’esempio precedente:

<INPUT NAME=”Button1” TYPE=”button” VALUE=”Fare click qui”

OnClick=’MsgBox “Hai fatto click”’>

La stessa chiamata alla funzione è racchiusa tra virgolette semplici mentre la stringa della funzione MsgBoxè racchiusa tra virgolette doppie. È possibile utilizzare più istruzioni a condizione che siano separate dai duepunti (:).

Page 22: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

Siccome questa casella di testo non è contenuta all’interno di un form, affinché lo script possa indivi-duarla all’interno della gerarchia degli oggetti del browser (BOM) è necessario scriverne il nome dopogli oggetti document.all.

Function inc()

document.all.conta.value=document.all.conta.value+1

End Function

Function dec()

document.all.conta.value=document.all.conta.value-1

End Function

5.13 La convalida prima dell’inoltro di un modulo

Con VBScript si possono eseguire le operazioni di verifica di validità dei dati presenti in un form primadell’inoltro. Il codice HTML genererà una casella di testo e un pulsante. Al form è associata, tramite l’evento On-Submit, la subroutine Verifica che accerta la validità del dato. In questo caso, attraverso la funzio-ne interna di VBScript IsNumeric, viene verificato se il campo contiene un numero; viene verificatainoltre la presenza di un numero compreso tra 0 e 100. Se le condizioni sono accertate, tramite il meto-do submit avviene l’invio del modulo al server:

<FORM NAME=”modulo” OnSubmit=”Verifica”>

Immettere un valore compreso tra 1 e 100:

<INPUT NAME=”numero” TYPE=”TEXT” SIZE=”2”>

<INPUT TYPE=”submit” VALUE=”Invia”>

</FORM>

La subroutine Verifica contiene il codice di controllo della validità:

Sub Verifica

If IsNumeric(document.modulo.numero.value) Then

If document.modulo.numero.value < 1 Or document.modulo.numero.value > 100 Then

MsgBox “Immettere un numero compreso tra 1 e 100”

Else

MsgBox “Valore corretto. Invio in corso...”

modulo.submit

End If

Else

MsgBox “Immettere un numero!”

End If

End Sub

Modulo 2 - Gli script lato client

140

Nell’esempio il valore viene verificato direttamente in base a un numero, ovvero, tramite la funzioneIsNumeric, viene verificato che la stringa inclusa nella casella di testo sia un numero. Anche se in VBScript stringhe e numeri vengono convertiti automaticamente in modo adeguato, è consigliabile con-trollare sempre il sottotipo dei valori immessi dall’utente e utilizzare, se necessario, le funzioni di con-versione. Quando si eseguono somme con i valori di caselle di testo è inoltre necessario convertire i valori in nu-meri in modo esplicito: il segno più (operatore +) rappresenta infatti sia l’addizione sia il concatenamen-to di stringhe. Se, per esempio, Text1 include “1” e Text2 include “2”, il risultato ottenuto sarà il se-guente:

A = Text1.Value + Text2.Value ‘ A è “12”

A = CDbl(Text1.Value) + Text2.Value ‘ A è 3

Page 23: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

5.14 VBScript e i confronti tra le date

La gestione del formato “data” rappresenta in VBScript una caratteristica molto importante. Se inuno script si ha la necessità di confrontare due date tra di loro, non è possibile effettuare una condi-zione del tipo:

If “5/12/2008” < “20/12/2008” Then

Document.write “minore”

Else

Document.write “maggiore o uguale”

End If

Il confronto non viene effettuato tra date, ma tra strighe: in ordine alfabetico il 5 viene dopo il 2, quin-di il risultato è sbagliato. L’accorgimento da adottare quando si vogliono fare confronti tra date, è quel-lo di specificare che i parametri del confronto sono date con la funzione CDate:

If CDate(“5/12/2008”) < CDate(“20/12/2008”) Then

Document.write “minore”

Else

Document.write “maggiore o uguale”

End If

Una funzione che permette di fare confronti tra date è DateDiff: questa funzione restituisce i giorniintercorrenti tra le due date: pertanto 0 se le date sono uguali, un numero negativo se è la prima data èmaggiore, oppure un numero positivo se la seconda data è maggiore della prima. Il valore è espresso ingiorni, come indicato dal primo parametro (“d”), oppure può essere espresso in mesi (“m”) o anni(“yyyy”).

If DateDiff(“d”,”5/12/2008”,”20/12/2008”) > 0 Then

Document.write “minore”

Else

Document.write “maggiore o uguale”

End If

Questa funzione restituisce “minore”.

Unità di apprendimento 5 - Un linguaggio lato client: VBScript

141

Page 24: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

142

Modulo 2 - Gli script lato client

Unità di apprendimento 5

Esempio 1 Il File System di Windows (FSO) e la gestione di file, cartelle e dischiTutti i linguaggi di scripting lato client non consentono di accedere a database o file di testo, oppure inviare una

e-mail attraverso un server di posta elettronica o collegarsi a un altro PC sparso per il mondo alla ricerca di infor-

mazioni. Sotto il nome di ActiveX vi sono una serie di tecnologie che permettono a un software, o a una sua

parte, di interagire con altre parti esterne, indipendentemente dal linguaggio con il quale esse sono state rea-

lizzate. ActiveX, a sua volta, è un sottoinsieme delle classi COM (Component Object Model). In VBScript richia-

mare un ActiveX è estremamente semplice, mediante l’utilizzo dell’oggetto ActiveXObject. Il compito di que-

sto oggetto è quello di attivare e restituire un riferimento proprio a un componente ActiveX. La sintassi neces-

saria è la seguente:

set oggetto = CreateObject(“nomeserver.nometipo”[,”posizione”])

I parametri passati all’oggetto vanno così interpretati:

: nomeserver è il nome dell’applicazione che fornisce l’oggetto. Questo parametro è obbligatorio;: nometipo è il nome della classe dell’oggetto da attivare. Anche questo parametro è obbligatorio;: posizione indica il nome del server nella rete in cui l’oggetto deve venire creato. Questo parametro è

facoltativo.

Una volta creato un oggetto mediante l’utilizzo di ActiveXObject sarà possibile usufruire di esso utilizzando

il riferimento restituito:

oggetto.proprietà

oggetto.metodo(eventuali parametri)

L’oggetto ActiveX al quale rivolgeremo la nostra attenzione sarà Scripting.FileSystemObject, molto pro-

babilmente l’oggetto ActiveX più diffuso e utilizzato insieme a quelli della famiglia ADODB.

Scripting.FileSystemObject (FSO) estende il linguaggio di scripting utlizzato fornendolo di una sempli-

ce interfaccia utile per interagire con il File System del server. In poche parole grazie a questo ActiveX è possi-

bile leggere e scrivere file sull’hard disk del server, creare cartelle, eliminare file che non servono più, ottene-

re la lista di tutti i file contenuti in una cartella, gestire file di testo o binari e tanto altro. Inoltre, a questo og-

getto principale solo collegate anche altre classi di oggetti utili per descrivere i file, le cartelle, i drive e gli

stream. La tabella che segue mostra un elenco dei principali metodi e proprietà messi a disposizione da

Scripting.FileSystemObject:

Esempi di laboratorio

METODI

BuildPath Aggiunge un nome alla fine di un percorso esistente

CopyFile Copia uno o più file da una posizione a un’altra

CopyFolder Copia una cartella da una posizione a un’altra

CreateFolder Genera una nuova cartella

CreateTextFile Crea un file di testo e restituisce un oggetto TextStream utile per lavorare con il file creato

DeleteFile Cancella un file

DeleteFolder Cancella una cartella

DriveExists Restituisce un booleano che indica se il drive specificato esiste

FileExists Restituisce un booleano che indica se il file specificato esiste

FolderExists Restituisce un booleano che indica se la cartella specificata esiste

GetAbsolutePathName Restituisce un percorso completo a partire da uno ambiguo

GetBaseName Restituisce il nome di un file privo dell’estensione

GetDrive Restituisce un oggetto Drive relativo all’unità di un percorso specificato

Page 25: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

143

Unità di apprendimento 5 - Un linguaggio lato client: VBScript

Unità di apprendimento 5

Esempi di laboratorio

Come per un qualsiasi oggetto, per istanziare l’oggetto VBScript occorre una sintassi come la seguente:

Set oggetto = CreateObject(“Scripting.FileSystemObject”)

Ora l’oggetto possiede tutte le proprietà e i metodi che gli permetteranno di settare o leggere informazioni ri-

guardanti il File System. Per esempio:

drive=”C:”

Set oggetto = CreateObject(“Scripting.FileSystemObject”)

msgbox “Dimensione del drive C: “

& FormatNumber (oggetto.GetDrive(drive).TotalSize,0) & “ bytes”

METODI

GetDriveName Restituisce una stringa contenente il nome dell’unità di un percorso specificato

GetExtensionName Restituisce una stringa contenente l’estensione di un file specificato

GetFile Restituisce un oggetto File relativo al percorso specificato

GetFileName Restituisce l’ultimo componente del percorso specificato che non fa parte della specifica di unità

GetFolder Restituisce un oggetto Folder relativo al percorso specificato

GetParentFolderName Restituisce una stringa contenente il nome della cartella principale dell’ultimo componente del percorso specificato

GetSpecialFolder Restituisce la cartella speciale specificata. Cartelle speciali sono per esempio quelle contenenti file temporanei, file di sistema ecc.

GetTempName Restituisce un nome di file o cartella generato in modo casuale, utile per eseguire operazioni che richiedono un file o una cartella temporanea

MoveFile Sposta uno o più file in una diversa posizione

MoveFolder Sposta una cartella in una diversa posizione

OpenTextFile Apre il file specificato e restituisce un oggetto TextStream che può essere utilizzato per leggere il file, scrivere nel file o aggiungere testo alla fine del file

PROPRIETÀ

Drives Un insieme di oggetti Drive disponibili nel computer locale

Alla base della gerarchia si trova l’oggetto File-SystemObject stesso, che espone molti meto-di e una sola proprietà, Drives, che restituiscela collection di tutti i drive del sistema. L’oggettoFileSystemObject è l’unico oggetto “creabi-le” nella gerarchia, cioè l’unico oggetto che puòessere istanziato con CreateObject, come ve-dremo. Tutti gli altri oggetti sono oggetti dipen-denti che derivano da esso e vengono espostisotto forma di metodi o proprietà (figura a lato). E

FileSystemObject

Drive

Folder

File

TextStream

Drives

Folders

Files

Oggetti

Collection

Page 26: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

144

Modulo 2 - Gli script lato client

Unità di apprendimento 5

produce il messaggio indicato nella figura a lato. E

Come si vede dall’oggetto FileSystem, è stato richiamata la proprietà dri-

ve con la sintassi oggetto.GetDrive(drive). Da questo oggetto è stata

visualizzata la proprietà TotalSize che rappresenta la dimensione del drive.

Dall’oggetto FileSystem è possibile richiamare altri oggetti come l’oggetto

cartella, l’oggetto disco e l’oggetto fileTesto:

‘ Istanza dell’oggetto FileSystem:

Set oggetto = CreateObject(“Scripting.FileSystemObject”)

‘ Istanza dell’oggetto Drive:

Set disco = oggetto.GetDrive(“C:”)

‘ Istanza dell’oggetto Cartella:

Set cartella = oggetto.GetFolder(“C:\winnt”)

‘ Istanza dell’oggetto fileTesto

Set fileTesto = oggetto.GetFile(“C:\autoexec.bat”)

‘ Istanza dell’oggetto fileTesto

Set oggettoFileAperto = fileTesto.OpenAsTextStream(1)

Lo scopo dello script che segue è quello di visualizzare il contenuto del disco fisso. Il primo passo consiste nel

visualizzare le cartelle e i file contenuti nella directory radice:

percorso=”C:\”

Set oggetto = CreateObject(“Scripting.FileSystemObject”)

Set cartella = oggetto.GetFolder(percorso)

‘la proprietà subfolders è a sua volta un oggetto che racchiude

‘tutte le sottocartelle contenute

Set sottoCartella = cartella.Subfolders

document.write percorso & “<BR>”

‘ciclo che visualizza tutti gli oggetti contenuti in sottoCartella

For each elemCartella in sottoCartella

document.write “<B>” & replace(lcase(elemcartella),lcase(percorso),””)

&“</B><BR>”

next

‘la proprietà files è a sua volta un oggetto che racchiude tutti

‘i file contenuti

Set file = cartella.files

For each elemFile in file

document.write “ “ & replace(lcase(elemFile),lcase(percorso),””) & “<BR>”

next

Si ottiene

Esecuzione script: Da Risorse del computer:

Esempi di laboratorio

Page 27: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

145

Unità di apprendimento 5 - Un linguaggio lato client: VBScript

Unità di apprendimento 5

Esempi di laboratorio

La variabile percorso contiene il nome della cartella da esaminare, in questo caso la radice del disco fisso.

Vengono creati gli oggetti cartella e sottocartella: quest’ultimo contiene tutte le directory presenti in

cartella. Per visualizzare le varie sottocartelle si sfrutta un ciclo di tipo For Each. Il nome e il percorso di

ogni singola sottocartella, attraverso la funzione stringa replace, viene “ripulito” della parte contenente il per-

corso completo. Lo stesso principio è adottato per leggere i file. Le cartelle, per distinguerle dai file, sono vi-

sualizzate in neretto. Se lo script viene inserito in una funzione che riceve come parametro il percorso di una

cartella è possibile disegnare l’albero con tutte le sottocartelle e i file. Questo script usa il tag <DIV> e la pro-

prietà innerHTML per scrivere all’interno del paragrafo di testo. Il paragrafo di testo viene individuato attraver-

so il metodo document.getElementByID(“testo”):

function cartelle(percorso)

Set oggetto = CreateObject(“Scripting.FileSystemObject”)

Set cartella = oggetto.GetFolder(percorso)

Set sottoCartella = cartella.Subfolders

n = percorso & “<BR>”

For each elemCartella in sottoCartella

nomeCartella=replace(lcase(elemCartella),lcase(percorso),””)

n = n & “<INPUT TYPE=button value=” & nomeCartella & “

“onclick=naviga(‘“ & elemCartella & “‘)><BR>”

next

Set file = folder.files

For each elemFile in file

n = n & “ “ & replace(lcase(elemFile),lcase(percorso),””) & “<br>”

next

document.getelementbyid(“testo”).innerHTML = n

end function

Il codice della sezione <BODY> è il seguente:

<P ID=”testo” onclick=cartelle(“C:\”)>C:\</P>

L’esecuzione dello script visualizza il solo percorso C:\ facendo

click su di esso si ottiene l’elenco delle cartelle presenti nella ra-

dice del disco fisso (C:\). Facendo click sulla cartella prescelta (in

questo caso pippo) si ottiene l’elenco dei file contenuti. E

L’esempio che segue mostra come usare il FileSystemObject

per copiare un file in una cartella. Il file autoexec.bat presente

nella radice viene copiato nella cartella c:\esempio.

origine=”c:\autoexec.bat”

destinazione=”c:\esempio”

Set oggetto = CreateObject(“Scripting.FileSystemObject”)

set file = oggetto.GetFile (origine)

file.Copy destinazione,true

document.write “Il file “ & origine & “ è stato copiato in “ & destinazione & “.”

Se invece volessimo cancellare il file dalla cartella esempio:

origine=”c:\esempio\autoexec.bat”

Set oggetto = CreateObject(“Scripting.FileSystemObject”)

Set file = oggetto.GetFile (origine)

file.Delete

MsgBox “Il file “ & origine & “ è stato cancellato.”

Page 28: I linguaggi del Web - HOEPLI.it · 4.19 Gli oggetti del browser 111 4.20 Il documento (document) 114 4.21 La barra degli indirizzi (location) 116 4.22 La cronologia del browser (history)

146

Modulo 2 - Gli script lato client

Unità di apprendimento 5

Esercizi di applicazione

Valutazione della capacità di applicazione e di approfondimento

1 Crea uno script che dato in input il capitale C, il tasso percentuale I e il numero di anni T, calcoli e visualiz-

zi il montante attraverso la capitalizzazione semplice e la capitalizzazione composta:

: Mcapitalizzazione semplice = C(1 + inter * tempo);

: Mcapitalizzazione composta = C(1 + inter)2.

2 Crea uno script che visualizzi una tabella contenente la tavola pitagorica.

3 Crea uno script che dato in input il saldo del conto corrente in euro, lo trasformi in ducati, grana e tornesi,

sapendo che 1 ducato = 100 grana = 200 tornesi = 4,24 lire.

4 Crea uno script che visualizzi un modulo per l’inserimento dei dati di una fattura commerciale di vendita. Il

pulsante di invio riepiloga i dati in un riquadro <div> opportunamente formattato.

5 Crea uno script che permetta di trasformare un numero inserito, espresso in unità di misura europee (pe-

so, temperatura, lunghezza) in unità anglosassoni e viceversa (per es. gradi Fahrenheit in Celsius, oppure

km in miglia, kg in once ecc.). A fianco del valore numerico una select permette di scegliere l’unità di misu-

ra di partenza e sempre una select permette all’utente di scegliere l’unità che deve essere calcolata.

6 Crea uno script in grado di simulare uno scadenziario. Una serie di caselle di testo (almeno 10) contengono

delle date: il colore del bordo sarà rosso per le date date precedenti o uguali alla data odierna, bordate di

giallo se sono successive di 10 giorni alla data odierna e bordate di verde se successive di oltre 10 giorni.

7 Crea uno script che permetta all’utente di giocare al gioco dell’impiccato. Il modulo deve contenere una casel-

la password in cui inserire la parola da cercare, un campo testo in cui inserire la lettera, un campo testo in cui

appare l’andamento del gioco (lettere indovinate e asterischi) e un campo testo che memorizza gli errori. Pre-

mendo un pulsante (inizia) si richiama una funzione che pone a zero il campo errori e maschera la soluzione

parziale. Per compiere quest’ultima operazione, si utilizzano le funzioni string e len. Alla pressione di un

pulsante (prova), viene cercata la lettera proposta tra le lettere della parola; se trovata viene sostituita. Per

rendere il gioco completo fai apparire un messaggio quando la soluzione non contiene più asterischi.

8 Crea uno script che permetta di giocare con il browser. L’utente pensa a un numero minore di 1000 e il cal-

colatore genera una sequenza di numeri cercando di indovinarlo. Lo script deve sempre riuscire a indovina-

re il numero con meno di 10 tentativi, dove a ogni tentativo l’utente indica al calcolatore se il numero gene-

rato è minore o maggiore di quello da lui pensato.

9 Crea uno script con una funzione in grado di validare una casella di testo contenente un indirizzo e-mail. Per

fare questo utilizza le funzioni stringa di ricerca del carattere chiocciola.

q0 Crea uno script con una funzione in grado di validare una casella di testo contenente un codice fiscale. Per

fare questo utilizza le funzioni stringa adatte a verificarne la lunghezza e la distinzione tra caratteri numeri-

ci e alfabetici.

qa Crea uno script in grado di formattare dei numeri in formato valuta in modo che appaia il simbolo dell’euro

seguito dai numeri separati a gruppi di 3 cifre dal puntino. Per fare questo utilizza l’evento onchange sul-

la casella di testo, insieme a una funzione che verifica ogni volta la lunghezza della stringa e inserisce i ca-

ratteri nella posizione corretta.

Valutazione della conoscenza e della comprensione

1 Spiega come vengono catalogati i linguaggi di script.

2 Determina le differenze che ritieni più evidenti tra linguaggi di script lato server e lato client.

3 Spiega il ruolo del web server nello sviluppo di pagine web con tecnologia client.

4 Illustra dove e come inserire il codice VBScript in pagine web.

5 Esiste una versione di VBScript lato server? Se sì indica il tag necessario per scrivere uno script di questa

categoria.

6 Indica quali differenze riscontri tra le conversioni implicite ed esplicite.

7 Illustra le modalità con le quali vengono associati gli eventi in VBScript.