Corso di ASP
Parte quarta
Impariamo a creare una pagina web dinamica in asp
Nell'ultima lezione abbiamo visto come costruire un motore di ricerca per una ipotetica libreria,lasciandoci con una domanda: "cosa succede cliccando sul titolo di uno dei libri trovati dal motore ?".
Prima di concentrarci sul listato dobbiamo capire la logica che sovrintende al funzionamento del tutto; facciamo quindi un breve riassunto:
1) Abbiamo un form on line con quattro voci, "Titolo, autore, casa
editrice, categoria",nel quale posso scegliere i campi sui quali effettuare
la ricerca, presa una decisione va premuto il tasto "CERCA"
2) Premuto il tasto,entra in gioco il motore di ricerca (motor.asp) che legge da
un database e seleziona i libri con le caratteristiche specificate nel form.
3) Viene generata una pagina (sempre dal motor.asp) che mostra una lista di
libri che possono interessarmi, ma i titoli in realtà sono tutti dei
collegamenti ad una pagina chiamata libro,; rivediamo il link:
<a href="libro.asp?ID=<%=id%>"><%=titolo%></a><br>
Il fatto che vi sia un parametro "?ID=" significa che quando viene
cliccato il titolo di un libro, il browser deve aprire la pagina libro.asp
trasmettendo anche il valore della variabile "id", cui è associata il
contenuto del campo "ID" del database.
Come potete vedere, il valore della variabile id viene inserito in una variabile
che convenzionalmente prende il nome di ID ma che potrebbe chiamarsi anche,ad
esempio, PIPPO es.
<a href="libro.asp?PIPPO=<%=id%>"><%=titolo%></a> <br>
Questa operazione consente di richiamare il file libro.asp, passandogli alcune
informazioni, relative ad immagini, testi, titolo e altro, che sono contenute
nel record relativo al libro selezionato; in base ai dati ricevuti,il motore
libro.asp è in grado di generare una pagina html standard,nella quale però
alcuni elementi sono presi dal record identificato dalla variabile id.
Facciamo un esempio ipotizzando che la lista di titoli a disposizione del motore
di ricerca sia composta da tre libri:
L'Isola del tesoro - Giulio Verne - Ed. Adv - ecc. ecc.
Il Terzo Gemello - Ken Follett - Ed Mondadori…
Neuromante - Gibson - ecc. ecc.
Volendo avere informazioni su "Il Terzo Gemello" basterà cliccare sul
link relativo;date un'occhiata alla barra degli indirizzi del navigatore:
vedrete comparire la stringa
http://www.ibol.it/libri/libro.asp?ID=2
Ovviamente il valore di ID è uguale a due, dato che il libro in questione è al
secondo posto nella lista dei record registrati nel database.. Cliccato il
collegamento, infatti, viene costruita una pagina in base ad un modello
predefinito, che viene riempito con i dati tratti dal record due.
Insomma, con 3 pagine di codice è possibile avere un sito di migliaia di pagine
diverse:
Una pagina per il form on line del motore.
Una pagina asp che effettua le ricerche nel database e stampa a video la lista
dei risultati (come tutti i motori di ricerca su internet).
Una seconda pagina asp che genera da un modello personalizzato la pagina
relativa al libro individuato dal motore.Ora concentriamoci sul listato:
libro.asp:
<HTML>
<HEAD>
<%
REM La variabile ID2 assume il valore della variabile ID presente dopo il "libro.asp?"
REM E' usato l'oggetto request col metodo querystring che serve proprio a
"catturare" i valori
REM delle variabili sulla riga di comando (http://www.ibol.it/libri/libro.asp?ID=2)
id2=request.querystring("id")
REM Definisco la stringa sql utilizzando i comandi dell'omonimo linguaggio in
modo che nel database tutti i campi
REM appartenenti al record numero "ID2"; nel nostro esempio si tratta
del record numero 2
sql="select *from tablibri where id="&id2
REM Come abbiamo visto nella lezione precedente, viene effettuata una
connessione al database libri.mdb
REM e tutte le variabili seguenti vengono "caricate" dei valori
presenti nel record;
REM nel nostro esempio autore="Ken Follet"
Set OBJdbConnection= Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&server.mappath("libri.mdb")
Set RS=OBJdbConnection.Execute(sql)
testo=rs("testo")
titolo=rs("titolo")
autore=rs("autore")
anno=rs("anno")
pagine=rs("pagine")
cat=rs("cat")
ed=rs("editrice")
prezzo=rs("prezzo")
collana=rs("collana")
imm=rs("imm")
REM Qui comincia la costruzione della pagina html Il tag TITLE non è fisso ma
visualizza
REM il valore della variabile titolo; nel nostro esempio titolo="Il Terzo
Gemello"
%>
<TITLE><%=titolo%></TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff" TEXT="#0F0000" LINK="#0000FF"ALINK="#0000CC"
VLINK="#0000FF">
<center>
<h1>Scheda Libro</h1>
<TABLE WIDTH="100%">
<TR>
<TD WIDTH="42%">
<%
REM In questa cella viene visualizzata un'immagine fissa (Image2.gif) nel caso
in cui il campo imm del record contenga un "-", altrimenti viene
visualizzata un'immagine il cui nome viene preso dal
REM database. Es. imm="Terzgem.gif", che rappresenta la copertina del
libro.
if imm="-"then
response.write("<IMG SRC=Image2.gif WIDTH=120 HEIGHT=150 BORDER=0>")
else
response.write("<IMG SRC="&imm&" WIDTH=120 HEIGHT=150
BORDER=0>")
end if
rem Seguono tag html perla barra laterale, i link alle altre pagine del sito e
il resto. Tutto questo costituisce il modello della pagina libro.asp.%>
</TD>
</TR>
<TR>
<TD width="42%" height="22"></TD>
<TD width="58%" height="22"></TD>
</TR>
<TR>
<TD VALIGN="TOP" ALIGN="LEFT" width="58%">
<%
REM Eccoci di nuovo ad una parte dinamica della pagina. Qui impongo che le
parole Titolo, Pagine,ecc.
REM vengano visualizzate in grassetto mentre ciò che segue la dicitura è
prelevata direttamente dal database.
REM Utilizziamo l'oggetto response col metodo write per stampare avideo i tag
html insieme alle variabili.
response.write("<b>Titolo:</b>"&titolo&"<br><b>Autore:
</b>"&autore&"<br><b>Anno:</b>"&anno&"<br><b>
Pagine:
</b>"&pagine&"<br><b>Editrice:</b>"&editrice&"<br>
<b>Prezzo:</b> L.
"&prezzo&"<br><b>Categoria:</b>"&cat&"<br><b>
Collana:</b>
"&collana&"<br><br>")%>
<center>
<p> <br>
<table border=0>
<tr>
<td>
<%
REM Controllo se la variabile testo è diversa da "-". Questo consente
di verificare se c'è un testo descrittivo del libro
REM da importare nella pagina.
if testo<>"-"then
REM Il componente File Access permette di accedere a file in formato testo
tramite due gruppidi oggetti che consentono di trasformare i testi stessi in
oggetti (TextStream)e di crearne delle istanze (FileSystemObject).
REM creo un singoloFileSystemObject (objFileSys) e lo uso per creare tutti gli
oggetti TextStreamnecessari. In questo caso ne serve uno solo.
Set objFileSys=Server.CreateObject("Scripting.FileSystemObject")
REM Usiamo il metodoMapPath per specificare il percorso del file da leggere.
varInputFile=Server.MapPath("/libri")+"\testi\"+testo
REM Creiamo l'oggettoobjTsIn che tramite il metodo OpenTextFile, apre il file
individuato dallavariabile (varInputFile).
Set objTsIn=objFileSys.OpenTextFile(varInputFile)
REM Qui inizia un ciclo di lettura del file usando la proprietà AtEndOfStream
dell'oggettoobjTsIn, da usare col metodo ReadLine,
REM la quale permette di leggere una riga alla volta in un oggetto TextStream.
REM Il ciclo si ferma quando si raggiunge la fine del file di testo; l'oggetto
objTsIn viene quindi chiuso col metodo Close.
Do Until objTsIn.AtEndOfStream
i=i+1
response.write(objTsIn.ReadLine)
loop
objTsIn.Close
end if
%> </td>
</tr>
</table>
</center>
</table>
</BODY>
</HTML>
Concludiamo l’articolo ricordandovi che per utilizzare il gestore di form apparso nella seconda lezione del corso dovete installare la libreria SMTPSVG.DLL contenuta nel file SMTPSVG.ZIP scaricabile da internet, mentre per utilizzare il web counter apparso nella seconda lezione bisogna installare la libreria PageCnt.dll scaricabile anch’esso da internet.
Vi ricordo
che:
Per utilizzare il gestore di form apparso nella seconda lezione del corso dovete
installare la libreria:
SMTPSVG.DLL contenuta nel file SMTPSVG.ZIP scaricabile da Internet.
Per utilizzare il web counter apparso nella seconda lezione:
bisogna installare la libreria PageCnt.dll scaricabile da Internet.