|

VERIFICA DI UN MODULO

Nella
sezione precedente abbiamo accennato alla possibilità
di verificare la corretta compilazione di un modulo
grazie all’utilizzo della funzione ‘if... then... end
if’.
Vediamo di approfondirne l’analisi.
Faremo
uso di tre file: modulo.htm, controlla.asp, attenzione.asp
MODULO.HTM
Possiamo tranquillamente riutilizzare il file ‘aggiungi.htm’
creato precedentemente.
L’unica modifica sta nel sostituire ‘aggiorna.asp’ con
‘controlla.asp’. Fatto questo salviamolo col nome ‘modulo.htm’.
Il codice quindi è il seguente:
|
<html>
<body>
<form method="POST" action="controlla.asp">
<p>Link<br>
<input type="text" name="form_link" size="20"></p>
<p>Descrizione<br>
<textarea rows="2" name="form_descrizione"
cols="20"></textarea></p>
<p><input type="submit" value="Invia" name="B1"><input
type="reset" value="Reimposta" name="B2"></p>
</form></body>
</html>
|
CONTROLLA.ASP
Questo file server per verificare il modulo appena
compilato.
Innanzitutto preleviamo i dati dal modulo stesso
|
<%
Dim
link1
link1
= request.form("form_link")
Dim
descrizione1
descrizione1
= request.form("form_descrizione")
|
In
questo modo abbiamo due variabili in cui sono memorizzati
i dati inseriti al momento della compilazione dle form
stesso.
A
questo punto, mediante la funzione ‘if... then... end
if’ possiamo verificarne la validità.
Nel
caso in cui tali valori on corrispondano a determinati
criteri carichiamo la pagina ‘attenzione.asp’ passandole
il parametro ‘error’ con un valore che varia in base
all’errore riscontrato.
|
if
link1 = "" then
response.redirect("attenzione.asp?error=1")
end
if
if
link1 = "prova" then
response.redirect("attenzione.asp?error=2")
end
if
if
descrizione1 = "" then
response.redirect("attenzione.asp?error=3")
end
if
if
descrizione1 = "prova" then
response.redirect("attenzione.asp?error=4")
end
if
|
Pertanto
se la variabile link1 è vuota (= “”) e quindi il primo
campo del modulo non è stato compilato, verrò reindirizzato
sulla pagina ‘attenzione.asp’ passandole il parametro
‘error=1’
Viceversa se in quel campo è stata inserita la parola
‘prova’ il parametro passato alla pagina sarà il numero
2.
Così per la variabile descrizione e il relativo campo
del modulo.
Nel
caso in cui nessuna di queste ipotesi si sia avverata
possiamo continuare nell’esecuzione della nostra pagina,
per esempio aggiungendo i valori appena ottenuti ad
un database come abbiamo fatto prima, oppure visualizzando
a schermo i dati inseriti nel modulo.
In quest’ultimo caso avremo
|
response.write(link1)
%><br>
<%
response.write(descrizione1)
%>
|
Vale
solo la pena notare come il tag <br> relativo
all’interruzione di riga sia al di fuori dei simboli
<% %> che, come già detto, delimitano il codice
ASP. Infatti è un elemento html che nulla ha a che fare
con l’ASP.
Se l’avessimo lasciato all’interno dei ‘marcatori’ <%
%> avremmo ottenuto, come unico risultato, un messaggio
di errore.
Vediamo
ora la struttura del file
ATTENZIONE.ASP
Abbiamo visto che, nel verificarsi di alcune ipotesi
(campi vuoti o con la sola parola ‘prova’), l’utente
viene reindirizzato su questa pagina.
La prima cosa da fare è prendere il valore del parametro
‘error’ che ci viene passato dal file ‘controlla.asp’,
quindi scriveremo
|
<%
Dim
error1
error1
= request.querystring("error")
|
A
questo punto, sempre utilizzando la funzione ‘if...
then... end if’ avremo diversi esiti in base ai codici
di errore.
|
if
error1 = "1" then
response.write("Attenzione!
Non hai compilato il campo LINK!")
end
if
if
error1 = "2" then
response.write("Non
fare lo spiritoso: la parola PROVA non è certo
un link!")
end
if
if
error1 = "3" then
response.write("Attenzione!
Non hai compilato il campo DESCRIZIONE!")
end
if
if
error1 = "4" then
response.write("Stai
scherzando? La parola PROVA non è una descrizione
valida!")
end
if
%>
<a
href="modulo.htm">Torna indietro</a>
e compila i campi mancanti.
|
Come
potete vedere in base alla tipologia di errore avremo
diversi messaggi di errore.
Naturalmente il testo può essere modificato a piacere,
personalizzandone, per esempio, il carattere, la dimensione
o la posizione. Se per esempio vogliamo che il testo
sia visualizzato con font ‘verdana’, carattere 10, con
la parola ‘Attenzione!’ in grassetto e il resto sulla
seconda riga, dovremo scrivere
response.write(“<font
face=‘Verdana’ size=‘2’> <b>Attenzione!</b>
<br>Non hai compilato il campo LINK!</font>“)
Come
si può vedere le virgolette doppie normalmente usate
per ‘font face’ e per ‘size’ sono state sostituite dall’apice
(o apostrofo o virgoletta singola): infatti la stringa
che deve essere visualizzata è compresa fra le virgolette
doppie. Per evitare quindi problemi (e messaggi di errore)
occorre che non ci siano altre virgolette doppie all’interno
della stringa stessa.
L'ultima
parte di codice che abbiamo visto si compone di quattro
if... then... per verificare determinate condizioni
associate alla variabile error. In questo caso
il metodo utilizzato (if... then... appunto)
svolge egregiamente il proprio compito.
Immaginiamo però che il numero degli errori sia
maggiore: se abbiamo predisposto il codice per inviare
venti messaggi di errore diversi, dovremmo utilizzare
if... then...end if per venti volte.
Non esiste altro metodo?
Sì, possiamo utilizzare Select Case la
cui struttura è
Select
case variabile
case
1
codice uno
case
2
codice due
case
3
codice tre
...
end
select
In
baso al valore assunto dalla mia variabile, eseguirò
di volta in volta, il codice specificato nel caso corrispondente.
Quindi se la variabile ha valore '1', verrà eseguito
il 'codice uno'; se ha valore '2' verrà eseguito
il 'codice due' e così via.
Pertanto
potremmo modificare la visualizzazione dei messaggi
di errore così come segue:
Select
case error1
Case
"1"
response.write("Attenzione! Non hai compilato
il campo LINK!")
Case
"2"
response.write("Non
fare lo spiritoso: la parola PROVA non è certo un
link!")
Case
"3"
response.write("Attenzione!
Non hai compilato il campo DESCRIZIONE!")
Case
"4"
response.write("Stai
scherzando? La parola PROVA non è una descrizione
valida!")
End
select
Rispetto
al codice analizzato il risultato non cambia: si ha
però una maggior chiarezza di codice in quanto
tutte le possibilità sono riportate una sotto
l'altra, senza ricorrere a numerosi if... then...
In questo modo è più facile organizzare
gli eventi da associare ai valori della variabili minimizzando
il rischio di possibili errori.
|