|
Per dare un aspetto più professionale alla visualizzazione dei nostri database si può implementare qualche accorgimento per permettere agli utenti di effettuare l'ordinamento dei record a piacere cliccando semplicemente sul nome del campo. Mi spiego meglio utilizzando questo esempio: abbiamo una tabella che visualizza nel browser un elenco di record, le colonne rappresentano i campi e le righe i vari record; quindi la prima riga altro non è che l'intestazione della nostra tabella contenente il nome di ogni campo (ID, Cognome, Nome,...), le successive righe conterrano i rispettivi valori; ad ogni nome campo della prima riga è associato un link che permetterà di rivisualizzare la tabella ordinata rispetto a quel campo; dopo la rivisualizzazione della tabella sarà possibile effettuare un ulteriore ordinamento e così via; la prima volta l'ordinamento sarà impostanto in modo decrescente, la seconda crescente, la terza decrescente, e così via alternativamente.
Andiamo ad impostare lo script:
Il database.
Per prima cosa creiamo un database di tipo ACCESS nominandolo ARCHIVIO.MDB, al suo interno creiamo una tabella di nome Tabella_Archivio e impostiamo dei campi a piacere. Per esempio ID, Cognome, Nome, Data di Nascita, Luogo di Nascita (vi ricordo che questi nomi appariranno nella prima riga della tabella visualizzata a video).
ARCHIVIO.MDB
|
\-Tabella_Archivio
|
+-ID
|
+-Cognome
|
+-Nome
|
+-Data di Nascita
|
\-Luogo di Nascita
Il codice.
Creiamo una pagina di nome LIST.ASP utilizzando il VBScript
***********
LIST.ASP
***********
<%
'Impostiamo la dichiarazione obbligatoria delle variabili
Option Explicit
'Implementiamo qualche costante dell'ADOVBS
'---- CursorTypeEnum Values ----
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
'---- LockTypeEnum Values ----
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4
'Dichiariamo tutte le variabili dello script
Dim db, strSQL, Print_Table, Order, Field, strToolTip
Dim objConn, objRS, fld
'Assegnamo il nome del database
db = "archivio.mdb"
'Impostiamo la SQL
strSQL = "SELECT * FROM tabella_archivio"
'Intercettiamo gli ordini di ordinamento dei record
Order = Request.QueryString("order")
Field = Request.QueryString("field")
'Completiamo la SQL aggiungendo l'eventuale ordinamento
If Order <> "" Or Field <> "" Then If Order = "asc" Or Order = "desc" Then
strSQL = strSQL & " ORDER BY [" & Field & "] " & Order
End If
End If
'Impostiamo i tooltip che compariranno sui link di ordinamento
strToolTip = ""
'Invertiamo il tipo di ordinamento per la prossima selezione dell'utente
'Se è la prima volta che visualizziamo la tabella allora i dati non saranno ordinati, bensì saranno visualizzati così come inseriti nel db
If Order = "" OR Order = "asc" Then
Order = "desc"
strToolTip = "Ordine decrescente"
Else Order = "asc"
strToolTip = "Ordine crescente"
End If
'Iniziamo a costruire la tabella contenente i record che verrà visualizzata nel browser
Print_Table = Print_Table & "<table cellspacing='2' cellpadding='2'>" & VbCrLf
'Apriamo la connessione
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
'Dichiariamo il recordset e lo popoliamo con la SQL
Set objRS = server.createobject("ADODB.recordset")
objRS.Open strSQL, objConn, adOpenKeyset, adLockReadOnly
'Genero la prima riga della tabella contenente i nomi dei record
If Not objRS.EOF Then
Print_Table = Print_Table & "<tr>" & VbCrLf
'Generiamo per ogni campo del db un link per ricaricare la pagina
'passandole con una querystring il tipo di ordinamento da effettuare
'e il nome del campo su cui applicarlo
For Each fld In objRS.Fields
Print_Table = Print_Table & "<td><b><a href='list.asp?order=" & Order & "&field=" & fld.Name & "' title='" & strToolTip & "'><font face='tahoma' size='2' color='red'>"& fld.Name & "</a></font></b></td>" & VbCrLf
Next
Print_Table = Print_Table & "</tr>" & VbCrLf
End If
'Completo la tabella generando le righe relative ai vari record presenti nel db
Do While Not objRS.EOF
Print_Table = Print_Table & "<tr>" & VbCrLf
For Each fld In objRS.Fields
Print_Table = Print_Table & "<td><font face='tahoma' size='2'>" & objRS(fld.Name) & "</font></td>" & VbCrLf
Next
Print_Table = Print_Table & "</tr>" & VbCrLf
objRS.MoveNext
Loop
'Chiudiamo e distruggiamo il recordset
objRS.Close
Set objRS = Nothing
'Chiudiamo e distruggiamo il db
objConn.close
Set objConn = Nothing
'Con questa istruzione completiamo la tabella da visualizzare
Print_Table = Print_Table & "</table>"
'Visualizziamo la tabella nel browser
Response.Write "<html>" & VbCrLf & "<title>Ordinamento record - guidainlinea.com</title>" & VbCrLf & "<body>" & VbCrLf
Response.Write "<center>" & VbCrLf & Print_Table & VbCrLf & "</center>" & VbCrLf
Response.Write "</body>" & VbCrLf & "</html>"
%> |
Più semplice del previsto. Vi domanderete a cosa serva il VbCrLf. Ho aggiunto questo comando di VBScript, combinazione di ritorno a capo ed avanzamento riga "Chr( 13 ) & Chr( 10 )", per fare in modo che il codice html generato dall'interprete di VBScript sia impostato elegantemente. Infatti, una volta eseguita la pagina nel browser provate a visualizzare il codice. Vedrete qualcosa del genere:
***********
codice html
***********
| <html><title>Ordinamento record - guidainlinea.com</title><body><center><table cellspacing='2' cellpadding='2'><tr><td><b><a href='list.asp?order=desc&field=ID' title='Ordine decrescente'><font face='tahoma' size='2' color='red'>ID</a></font></b></td><td><b><a href='list.asp?order=desc&field=Cognome' title='Ordine decrescente'><font face='tahoma' size='2' color='red'>Cognome</a></font></b></td><td><b><a href='list.asp?order=desc&field=Nome' title='Ordine decrescente'><font face='tahoma' size='2' color='red'>Nome</a></font></b></td><td><b><a href='list.asp?order=desc&field=Data di Nascita' title='Ordine decrescente'><font face='tahoma' size='2' color='red'>Data di Nascita</a></font></b></td><td><b><a href='list.asp?order=desc&field=Luogo di Nascita' title='Ordine decrescente'><font face='tahoma' size='2' color='red'>Luogo di Nascita</a></font></b></td><td><b><a href='list.asp?order=desc&field=Provincia' title='Ordine decrescente'><font face='tahoma' size='2' color='red'>Provincia</a></font></b></td></tr><tr><td><font face='tahoma' size='2'>1</font></td><td><font face='tahoma' size='2'>Rossi</font></td><td><font face='tahoma' size='2'>Carlo</font></td><td><font face='tahoma' size='2'>22/01/1970</font></td><td><font face='tahoma' size='2'>Baria</font></td><td><font face='tahoma' size='2'>BA</font></td></tr><tr><td><font face='tahoma' size='2'>2</font></td><td><font face='tahoma' size='2'>Esposito</font></td><td><font face='tahoma' size='2'>Gennaro</font></td><td><font face='tahoma' size='2'>08/11/1974</font></td><td><font face='tahoma' size='2'>Pachino</font></td><td><font face='tahoma' size='2'>SR</font></td></tr><tr><td><font face='tahoma' size='2'>3</font></td><td><font face='tahoma' size='2'>Valle</font></td><td><font face='tahoma' size='2'>Rebecca</font></td><td><font face='tahoma' size='2'>22/04/2000</font></td><td><font face='tahoma' size='2'>Bologna</font></td><td><font face='tahoma' size='2'>BO</font></td></tr><tr><td><font face='tahoma' size='2'>4</font></td><td><font face='tahoma' size='2'>Ricci</font></td><td><font face='tahoma' size='2'>Ugo</font></td><td><font face='tahoma' size='2'>18/10/1948</font></td><td><font face='tahoma' size='2'>Roma</font></td><td><font face='tahoma' size='2'>RM</font></td></tr><tr><td><font face='tahoma' size='2'>5</font></td><td><font face='tahoma' size='2'>Paoloni</font></td><td><font face='tahoma'size='2'>Elena</font></td><td><font face='tahoma' size='2'>24/02/1976</font></td><td><font face='tahoma'size='2'>Catania</font></td><td><font face='tahoma' size='2'>CT</font></td></tr></table></center></body></html> |
Ora provate a togliere il VbCrLf e andate a visualizzare il codice. Dal punto di vista pratico non cambierà nulla, lo script funzionerà regolarmente, ma il codice html apparirà tutto su di una riga.
A cura di Massimiliano Luciani
|