|
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>
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 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 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
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.
|