Nel corso di quest'articolo, verrà spiegata una modalità per mostrare a rotazione un numero personalizzabile di news all'interno del proprio sito web.
Prima di incominciare a spiegare come lavora lo script in questione, desidero ringraziare pubblicamente Lorenzo Forti per aver curato la parte Javascript presente all'interno della pagina di visualizzazione.
I file trattati nel corso dell'articolo, saranno tre:
Nome del file | Descrizione |
news.mdb | È il database che consente la memorizzazione delle news |
inserisci.asp | Grazie a questo file, è possibile immettere nuove news nel database |
mostra.asp | Grazie a questa pagina, è possibile mostrare all'utente le news immesse. |
Ora analizziamo nello stesso ordine i tre file.
news.mdb
Come appena detto, il compito di questo file è quello di memorizzare su disco le news che l'utente autorizzato immette nella pagina apposita (inserisci.asp).
All'interno del database vi è solo una tabella chiamata notizie. La struttura della tabella interessata è la seguente:
Nome Campo | Tipo Campo | Descrizione |
Id | Contatore | Chiave primaria della tabella |
Testo | Testo di 100 caratteri | Contiene il titolo che verrà visualizzato a rotazione nella pagina mostra.asp |
Link | Testo di 200 caratteri | Contiene il link della pagina web contenente maggiori informazioni sulla news appena specificata. |
Il database è protetto da password.Tale password è impostata all'interno di una variabile apposita presente in entrambe le pagine:
dim strCode
strCode = "innovatel"
Per modificare tale password, bisogna prima di tutto aprire il database fornito
e modificarla da Access ed in seguito modificare il valore contenuto in tale variabile.
inserisci.asp
In questa pagina, all'avvio verrà mostrato un semplicissimo form html
come il seguente rappresentato in figura:
Come si può benissimo osservare, vi sono tre text box ed un bottone di inserimento news. Nella casella relativa al titolo, è necessario inserire il titolo della news, nella voce link è necessario immettere il link relativo alla notizia ed in password il codice di accesso alla memorizzazione della news. Il codice dove si imposta? Apriamo la pagina inserisci.asp e noteremo subito una serie di dichiarazioni di variabili. Tra queste è possibile osservare:
dim strCodiceImmesso
strCodiceImmesso = request.form("userCode")
dim strCodiceAccesso
strCodiceAccesso = "innovatel"
La variabile strCodiceImmesso conterrà il codice d'accesso digitato all'interno del form. L'altra variabile, strCodiceAccesso, conterrà il valore reale della password corretta. Per verificare se l'utente è abilitato alla memorizzazione, verranno confrontati i valori presenti all'interno di tali variabili.
Ora passiamo alla fase interessante: la scrittura della news e relativo link nel database. Per far questa operazione, non ho utilizzato il classico recordset, ma ho sfruttato il linguaggio sql.
strConn="driver={Microsoft Access Driver (*.mdb)};
"
strConn=strConn & " DBQ=" & Server.MapPath("news.mdb")
strConn=strConn & ";pwd=" & strCode
strSql = "INSERT INTO notizie(testo, link) values('"&strTitolo&"',
'"&strLink&"')"
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open strConn
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSql, conn,3,3
conn.Close
Set rs = Nothing
Set conn = Nothing
Per la scrittura del recordset ho impostato entrambi i cursori al valore 3. Cosa significa? Il primo cursore, CursorType, specifica come accedere ai dati. Impostandolo a 3, consente di muoversi liberamente all'interno del recordset sia in avanti che in indietro e di vedere anche i dati modificati o inseriti. Il secondo cursore, LockType, indica il tipo di blocco da fornire ai dati presenti all'interno del recordSet. Impostando anch'esso a 3, i dati da memorizzare vengono prima inseriti in un buffer ed una volta terminata la scrittura, vengono inseriti fisicamente nella tabella interessata.
Una volta immessi i dati lo script ripropone la stessa videata iniziale con una piccola differenza: la password immessa, viene riproposta inserita nella sua text box specifica. Questo accade se, e solo se, la password immessa la prima volta è corretta.
mostra.asp
In questa pagina, è presente del codice sia Asp che Javascript. Come detto in apertura dell'articolo, la parte Asp è quella di mia competenza e tratterò esclusivamente quella. Per quanto riguarda la parte Javascript, non sò dare nessuna informazione specifca.
Il codice Asp è contenuto all'interno dei tag:
<script language="JavaScript1.2">
--- Codice asp ---
--- Codice javascript ---
</script>
Il motivo per cui il codice asp è contenuto all'interno dei tag javascript è molto semplice. Bisogna andare a creare l'array di variabili contenete le news che si desidera mostrare.
Ora vediamo quali sono i punti pincipali per svolgere il lavoro richiesto:
- Connettersi al database ed estrarre le ultime intNotizie (intNotizie è una variabile intera contenente il numero massimo di notizie da mostrare a rotazione)
- Creare dinamicamente l'array elaborato poi da Javascript
- Chiudere il database
- Far caricare le notizie all'interno della pagina.
Fase 1: Connessione al database
La parte di codice asp, necessaria per accedere al database è la seguente:
Set Conn=Server.CreateObject("ADODB.Connection")
strConn="driver={Microsoft Access Driver (*.mdb)}; "
strConn=strConn & " DBQ=" & Server.MapPath("news.mdb")
strConn=strConn & ";pwd=" & strCode
Conn.Open strConn
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSql, conn,0,1
Com'è possibile osservare, il CursorType (primo cursore di apertura del database) è impostato sul valore 0. Impostandolo a tale valore, si indica al cursore di essere statico e di potersi muovere solo in avanti senza nessuna possibilità di retrocedere. Il LockType (secondo cursore di apertura del recordset), è invece impostato al valore 1. Tale valore corrisponde alla costante adLockReadOnly presente all'interno dell'adovbs.inc e consente di accedere ai dati in sola lettura. Prima di passare alla fase precedente, vorrei far notare una particolarità nella stringa di interrogazione sql (strSql):
strSql = "SELECT top " &intNotizie
& " testo, link FROM notizie ORDER BY id DESC"
Come avrete notato, viene usato il comando top dopo il select. La particolarità di utilizare questo comando, consiste nel selezionare (se presenti) al massimo intNotizie record. Se il numero di record presenti è inferiore o uguale, verranno presi tutti. In caso di numero superiore, verrà estratta solo la quantità di record indicata e nel nostro caso ordinata in ordine decrescente in base all'id della notizia presente nel database. Se si desidera, è possibile inserire anche una clausula where all'interno della stringa di interrogazione, ma in questo caso è completamente inutile.
Fase 2
Dopo essersi connessi al database, bisogna creare l'array che conterrà le news da mostrare a video. Cio verrà realizzato col seguente codice.
do while not(rs.eof)
%>
tickercontents[<%=intNumero%>]='<table width=100%><tr><td><font
face=verdana size=2><%=rs("testo")%></font></td></tr><tr><td><div
align=right><font face=verdana size=2><a href="<%=rs("link")%>"
target="_blank">visita la notizia-></a></font></div></td></tr></table>'
<%
intNumero = intNumero + 1
rs.movenext
loop
La variabile tickercontents è dichiarata in javaScript (lato client) come array e conterrà nelle diverse "sue celle" una tabella di una colonna e due righe. Nella prima riga, vi è il titolo della news posizionato nella parte sinistra. Nella seconda riga, vi è la seguente scritta "visita la notizia->" linkabile alla news vera e propria. La variabile asp intNumero serve per conteggiare quanti dati son già stati mostrati ed incrementare l'indice dell'array javascript senza possibilità di duplicati od errori imprevisti a livello di indice.
Fase 3
Una volta preparate le news da mostrare a video, chiudiamo il nostro database in quanto non è più necesssario tramite il seguente codice.
rs.Close
set rs = Nothing
conn.Close
set conn = Nothing
Fase 4
L'esecuzione del codice JavaScript deve essere eseguita dal browser dell'utente . Ricordo, per correttezza, la collaborazione di Lorenzo Forti per la parte Javascript dello script appena illustrato.
Una volta eseguita la pagina, a video apparirà la seguente schermata: