|
Corso
diASP
parte IV
Asp, questi
sconosciuti Corso di asp parte quarta
Impariamo a creare una pagina web dinamica in asp
di Nanni
Bassetti nannib@libero.it
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
larticolo 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 nel cd rom o scaricabile da
internet, mentre per utilizzareil web counter apparso
nella seconda lezione
bisogna installare la libreria PageCnt.dll presente
sul cd rom della terza lezione o scaricabile
anchesso 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 nel CD o
scaricabile da Internet.
Per utilizzare il web counter apparso nella seconda
lezione:
bisogna installare la libreria PageCnt.dll presente sul
CD della terza lezione o scaricabile da Internet.
|