|

PASSARE VALORI AD UN'ALTRA PAGINA

In
questo caso abbiamo una pagina che contiene un elenco
di link. Cliccando su uno qualsiasi di quei link viene
aperta un’ulteriore pagina che ne visualizza il relativo
testo.
Facciamo
qui riferimento alla sezione ‘Consigli’ del sito http://www.amicopc.com:
credo che sia meglio darle un’occhiata prima di continuare,
in modo da comprenderne il funzionamento.
Per
comodità utilizziamo lo stesso database ‘link.mdb’
Abbiamo
pertanto bisogno di creare due file: il file di partenza
(che chiameremo ‘elenco.asp’) che visualizza i link
e il file ‘scheda.asp’ che visualizza invece la descrizione
del link stesso.
ELENCO.ASP
Come
abbiamo fatto anche prima, creiamo la connessione con
il nostro database ‘link.mdb’ posizionato nella cartella
‘database’
|
<%
Dim Conn
Set Conn
= Server.CreateObject("ADODB.Connection")
conn.Open
"driver={Microsoft Access Driver (*.mdb)};dbq="
& server.mappath("database/link.mdb")
|
Definiamo
il RecordSet
|
Dim rs
Set rs =
Server.CreateObject("ADODB.Recordset")
|
e
definiamo il criterio di ricerca all’interno dei database
| rs.Open
"select * from link order by id DESC",
conn |
Anche
qui chiediamo di selezionare (SELECT) tutti i valori
(*) dalla tabella link (FROM LINK) e di ordinarli per
ID (ovvero il campo contatore) decrescente (ORDER BY
ID DESC), in modo che le aggiunte più recenti (ID
maggiore) siano visualizzate ai primi posti.
In
questo modo vengono selezionati tutti i dati presenti
nel nostro database, finche non giungiamo alla fine
del file stesso (End Of File):
A
questo punto comincia la visualizzazione di quanto ottenuto.
Definiamo
innanzitutto la variabile ‘link’ a cui assegniamo il
relativo valore che abbiamo appena caricato dal database
e che, al momento, è memorizzato nel RecordSet(RS)
|
<p>
<%
Dim
link
link=rs("link")
%>
|
Le
voci presenti in questo file 'elenco.asp' dovranno diventare
dei collegamenti che mi aprano la pagina ‘scheda.asp’
con cui posso visualizzare la descrizione del link stesso.
Pertanto
il codice da inserire sarà del tipo
<a
href=scheda.asp?id=valore”>testo linkato</a>
Come
si vede il link alla pagina scheda.asp ha una forma
particolare: oltre a richiamare il file in questione,
il link così strutturato contiene anche un parametro
‘ID’ che cambia valore ad ogni record mostrato.
Tale
ID altri non è che il campo ‘contatore’ del nostro database.
Mediante
tale valore ID noi possiamo indicare in maniera univoca
un record piuttosto che un altro: infatti non è possibile
avere due record con il campo ‘contatore’ identico!
L’utilità
di tale parametro ‘id’ la capiremo quando andremo ad
analizzare il codice ASP della seconda pagina (‘scheda.asp’):
per il momento vediamo come strutturare il codice in
modo che ad ogni link mi corrisponda il campo ID relativo.
Il
valore del campo ID è memorizzato all’interno del RecordSet,
in quanto abbiamo selezionato tutti i valori
presenti nella tabella ‘link’ del nostro database (“select
* from link...”).
Quindi
creiamo una variabile ‘id1’ e assegniamole il valore
di tale campo ‘id’, prendendolo appunto da RS
A
questo punto creiamo il collegamento alla seconda pagina:
|
<a href="scheda.asp?id=<%
response.write(id1) %>">
<%
response.write(link)
%></a></p>
|
Come
abbiamo visto il link è del tipo ‘scheda.asp?id=XXX’,
dove XXX è il valore del campo ‘contatore’ che varia
di volta in volta.
Fatto
questo mi sposto al record successivo del mio database
e ripeto l’operazione,
Una
volta che sono giunto alla fine del mio database posso
chiudere il recordset e la connessione
|
RS.Close
Set RS =
Nothing
conn.Close
Set conn=Nothing
%>
|
A
questo punto la pagina è conclusa.
Vediamo
ora come strutturare la seconda pagina
SCHEDA.ASP
La pagina che andiamo a vedere deve mostrare a schermo
la descrizione relativa al link su cui abbiamo
precedentmente cliccato. Una volta che tale pagina ha
capito che noi abbiamo cliccato, per esempio, sul link
memorizzato nel record numero due del database, deve
mostrarmi poi la descrizione presente nello stesso
record numero due.
Ma
come facciamo a far capire a questa pagina che noi abbiamo
cliccato sul link numero due, piuttosto che sul link,
per ipotesi, numero dieci?
Qui
entra in gioco il parametro ‘id’ che abbiamo visto prima
nel creare i collegamenti ipertestuali. Abbiamo detto
che il numero ‘id’, in quanto contatore, è univoco,
quindi non potremo mai avere due record con lo stesso
‘id’.
Pertanto
il collegamento ‘scheda.asp?id=XXX’ varia da un link
all’altro, in base al valore assunto dal campo ID in
quello specifico record visualizzato.
A
questo punto è sufficiente che la seconda pagina prenda
quel parametro ‘id’ ed è in grado di capire su quale
link abbiamo cliccato.
Per
esempio: se clicchiamo sul penultimo link della pagina
‘elenco.asp’, andremo a cliccare su un link del tipo
‘scheda.asp?id=2’.
Ora
la pagina ‘scheda.asp’ deve essere in grado di far proprio
quel valore ‘id’ e visualizzare la descrizione presente
nel record che ha ‘2’ come valore del contatore.
Per
far questo apriamo il blocco note e scriviamo:
|
<%
Dim id1
id1=request.querystring("id")
|
La
funzione ‘request.querystring(“parametro”)’ serve
appunto a prendere il valore assunto dal parametro 'id'
in quel determinato collegamento su cui abbiamo precedentemente
cliccato. Valore che viene memorizzato nella variabile
'id1'.
A
questo punto creiamo nuovamente una connessione al database
‘link.mdb’ e definiamo il Recordset
|
Dim Conn
Set Conn
= Server.CreateObject("ADODB.Connection")
conn.Open
"driver={Microsoft Access Driver (*.mdb)};dbq="
& server.mappath("database/link.mdb")
Dim rs
Set rs =
Server.CreateObject("ADODB.Recordset")
|
A
questo punto però non ci serve più selezionare tutti
i valori presenti nella tabella ‘link’, ma solo i valori
che corrispondono all’ID specificato.
Pertanto
avremo
| rs.Open "select
* from link where id ="&id1, conn |
ovvero,
selezioniamo tutti i valori (select * ) dalla tabella
link (from link) dove il campo ‘id’ (where id) è uguale
al valore assunto dalla nostra variabile ‘id1’ (=“&id1)
Nel
nostro esempio tale parametro ‘id1’ avrebbe valore pari
a due: quindi verranno selezionati tutti i valori dalla
tabella link il cui campo/contatore corrisponde a 2.
Anche
qui chiediamo di arrivare fino in fondo al database
A
questo punto visualizziamo quanto ottenuto, creando
la variabile descrizione e associandovi il relativo
valore caricato dal database e che al momento è memorizzato
nel RecordSet.
|
<p>
<%
Dim descrizione
descrizione=rs("descrizione")
response.write(descrizione)
%><br>
|
Volendo
possiamo fare in modo di visualizzare anche il link
a cui la descrizione fa riferimento avremo:
|
<%
Dim link
link=rs("link")
response.write(link)
%></p>
|
Anche
qua chiediamo di ripetere e chiudiamo poi la connessione
|
<%
RS.MoveNext
Loop
RS.Close
Set RS =
Nothing
conn.Close
Set conn=Nothing
%>
|
A
questo punto salvare i due file appena creati e posizionarli
nella stessa cartella. Aprire ‘elenco.asp’ e cliccare
su uno qualsiasi dei link proposti: se tutto è stato
eseguito correttamente, si aprirà una sottopagina riportante
il link e la relativa descrizione.
Se
i dati sono contenuti nel nostro database sono tanti,
appare evidente che, grazie a poche pagine asp, siamo
in grado di visualizzarli tutti.
Ma
ha senso fare tutto questo lavoro per visualizzare magari
pochi record?
Credo
di sì.
Il
vantaggio principale che deriva dall’utilizzare pagine
ASP insieme ad un database è quello di poter aggiornare
il database semplicemente compilando un modulo online
(come vedremo più avanti): in questo modo se aggiungiamo
(o togliamo) informazioni dal database stesso, la pagina
si modifica di conseguenza, senza bisogno di alcun intervento
da parte nostra. Inoltre l’aggiornamento risulta più
veloce, in quanto non è necessario creare molteplici
pagine per visualizzare anche i dati più recenti: le
modifiche al database hanno effetto immediato, per cui
possiamo ottenere aggiornamenti in tempo reale.
Una
volta create le pagine asp non ci sarà più bisogno di
modificarle: ne cambieremo i contenuti semplicemente
agendo sul database direttamente online.
Sicuramente
un bel vantaggio!
Abbiamo
visto quindi come sia possibile, strutturando il link
in un determinato modo, passare informazioni ad un file
ASP. Naturalmente
questo non è l’unico modo, ma è probabilmente il più
semplice e intuitivo.
Un’altro
modo è quello di creare un modulo nella prima pagina
che vada a richiamare , mediante il metodo 'POST', la
seconda pagina ASP. Questa seconda pagina anziché richiedere
i dati dalla stringa del collegamento mediante la funzione
‘request.querystring’ che abbiamo visto, li richiede
al modulo mediante la funzione ‘request.form’.
Vedremo
il modo di utilizzare tale procedura quando analizzeremo
il codice per aggiungere un record ad un database.
Un
altro modo ancora per passare informazioni da una pagina
all’altra consiste nell’utilizzare l’oggetto ‘session’:
in pratica in tale oggetto vengono memorizzate delle
informazioni che rimangono disponibili per tutta la
navigazione fra le pagine.
Vedremo
come utilizzare l’oggetto Session quando parleremo del
modo in cui è possibile proteggere un file o una cartella
con nome e password.
|