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 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):

Do while NOT RS.EOF
%>

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

<% id1=rs(“id”) %>

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,

<%
RS.MoveNext
Loop

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

Do while NOT RS.EOF
%>

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.

Luca M.

Luca M.

Classe 1982, Luca scrive su Amicopc.com e segue la parte tecnica sin dalla fondazione (2000), appassionato di Tecnologia, Smartphone, Videogames e tutte le novità dal mondo Tech.