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.

 


primaparte | secondaparte | terzaparte | quartaparte | quintaparte | sestaparte