Creare un sistema per la citazione del giorno

Edoardo Motta

di , in ASP - Scripting,

In questo articolo mi propongo di aiutarvi a creare una semplice applicazione che nella vostra Home Page inserisca una breve citazione o massima, che cambia, in modo casuale, ogni volta che l'utente accede alla vostra pagina, ovvero ogni volta che la pagina stessa viene ricaricata.

Se qualcuno si sta chiedendo a cosa serva un "gadget" simile è presto detto: ad aumentare gli hit al vostro sito, visto che il contatore degli accessi si incrementa anche con il "reload".

In altro articolo è stato illustrato l'utilizzo dell'oggetto ASP "Content Rotator" ma noi non utilizzeremo questo componente perché l'obiettivo che ci prefiggiamo è di rendere la nostra applicazione flessibile al punto di poter gestire in modo automatico sia l'inserimento di nuovi record, che saranno visibili senza dover intervenire sul codice, sia la possibilità di aggiornare da remoto il nostro database una volta pubblicato.

Costruiremo quindi l'applicazione senza servirci dell'oggetto ASP Content Rotator, visto che tale oggetto, necessitando di un file di testo nel quale sono contenute le massime da far visualizzare nel browser, comprensive dei tags HTML necessari per formattare il testo nel modo voluto, a mio parere, risulta poco adatto al raggiungimento dell'obiettivo sopra indicato.

Ci serviremo quindi di un qualsiasi database, nel nostro esempio creato con MS Access 2000 (ma potete usare versioni precedenti dello stesso applicativo, o anche SQL Server), e dei soliti oggetti ASP per l'accesso al database stesso.

Creiamo quindi un database con Access contenente una sola tabella con i seguenti campi:

  • Id (il solito campo contatore, chiave primaria)
  • Autore (testo, 50 caratteri)
  • Citazione (testo, 250 caratteri)

Salviamo quindi, dopo aver inserito qualche citazione, il nostro database con il nome "Quote.mdb".

Questo, insieme alla creazione di un DSN di sistema che chiameremo "Quote", sono i passi preliminari per poter proseguire nello sviluppo dell'applicazione.

Dobbiamo ora porci qualche domanda: prendere due campi da un database e intabellarli è un'operazione relativamente semplice, ed è già stata spiegata diffusamente in altri articoli; prenderli in modo casuale (così come fa l'oggetto Content Rotator) richiede qualche conoscenza in più ed è necessario sapere a priori quanti record contiene il nostro database visto che imposteremo la nostra ricerca sull'Id con la seguente stringa SQL: "SELECT Autore, Citazione FROM QUOTE WHERE ( Id = " & RecordId & ")" e la variabile RecordId la genereremo casualmente con la funzione VBScript "Rnd" che genera un numero casuale. 

Credo sia opportuno spendere due parole su questa funzione, che è il "motore" della nostra applicazione: la funzione Rnd genera un numero casuale, e tale numero è maggiore o uguale a zero ma minore di uno, quindi per assegnarli un "range" è necessario conoscere tale range al fine di generare la nostra variabile RecordId che sarà uguale a Int(Rnd * NumeroRecord) + 1. In altre parole, se noi abbiamo 10 record e il numero casuale generato è 0,5473 la nostra variabile RecordId assumerà il valore 6 (aggiungere 1 serve nel caso in cui la funzione Rnd genera il numero zero).

In questo modo tale funzione restituirà un numero di Id compreso nel "range" del numero dei record presenti nel nostro database (insomma senza questo stratagemma, se ho dieci citazioni con Id che va da uno a dieci, ed il numero generato casualmente è dodici mi verrà restituito un messaggio di errore visto che la nostra base dati non ha nessun autore e nessuna citazione con Id 12).

Abbiamo quindi costruito il "motore" della nostra applicazione e potremmo ritenerci soddisfatti se non ci assalisse un dubbio: quando vogliamo aggiungere delle citazioni nel nostro database dobbiamo cambiare il codice della nostra pagina ASP? 

La risposta è sì, se non escogitiamo qualcosa per evitare questa dispendiosa operazione calcolando a priori, con la proprietà RecordCount dell'oggetto Recordset il numero dei record che compongono il nostro database. 

Veniamo, dunque, al codice:

&lt;%@ Language=VBScript %><br />
&lt;%Option Explicit<br />
Dim SqlQuery,Conn,Rs,ConnString,NumeroRecord,RecordId<br />
SqlQuery = "SELECT Id FROM QUOTE"<br />
Set Conn = Server.CreateObject ("ADODB.Connection")<br />
Set Rs = Server.CreateObject ("ADODB.Recordset")<br />
Connstring = "DSN=Quote;UID=;PWD=;"<br />
conn.Open Connstring<br />
rs.CursorLocation = AdUseClient<br />
rs.Open SqlQuery,Conn,adOpenDynamic,adLockBatchOptimistic<br />
NumeroRecord = Rs.RecordCount<br />
Rs.Close ()<br />
Conn.Close ()<br />
Set rs=nothing<br />
Set conn = nothing%><br />

In questo modo abbiamo assegnato alla variabile "NumeroRecord" un valore pari al numero dei record contenuti nel nostro database. Per poter utilizzare la proprietà RecordCount è necessario che la proprietà CursorLocation dell'oggetto Recordset sia impostata su AdUseClient per poter passare il valore di questa proprietà per referenza (così come per le proprietà del cursore, nel nostro caso adOpenDynamic e adLockBatchOptimistic) bisogna ricordarsi di includere il file ADOVBS.INC in questo modo,

&lt;!--#include virtual="/ADOVBS.INC"-->

così come illustrato anche in questo articolo .

Mentre per selezionare in modo casuale la citazione da includere nella pagina useremo il seguente codice:

<%'Inizializzo il random per non avere sempre la stessa serie di numeri casuali

Randomize
'Ricavo in modo casuale il criterio di ricerca della stringa SQL

RecordId = Int(rnd * NumeroRecord) + 1 
SqlQuery = "SELECT Autore, Citazione FROM QUOTE WHERE ( Id = " & RecordId & ")Set Conn = Server.CreateObject ("ADODB.Connection") 
Set Rs = Server.CreateObject ("ADODB.Recordset") 
Connstring = "DSN=Quote;UID=;PWD=;" 
conn.Open Connstring rs.CursorLocation = AdUseClient 
rs.Open SqlQuery,Conn,adOpenDynamic,adLockBatchOptimistic %>

Ora abbiamo il recordset composto da un autore e dalla corrispondente citazione pronti per essere intabellati:

<HTML>
<HEAD>
<!--#include virtual="/ADOVBS.INC"-->
<TITLE>Home Page</TITLE>
</HEAD>
<BODY bgColor=white>

<P align=center><FONT  size=5>Benvenuto 
nella mia Home Page</FONT>...
</P>
<HR>

<P align=center>
<TABLE BGCOLOR=silver BORDERCOLOR=gray ALIGN=center BORDER=3 cellspacing=3 cellpadding=3 width=80%>
  <TR>
    <TD><TABLE WIDTH=100% ALIGN=center BORDER=0 cellspacing=3 cellpadding=3 
    bordercolor=indigo 
    bordercolordark=indigo bordercolorlight=indigo bgcolor=#d7d7d7>
  <TR>
    <TD align=middle><FONT face=Arial,Helvetica><b>
        <%=Ucase(rs(0))%></b></FONT><HR align=center width=50%></TD>
  </TR>
  <TR>
    <TD><I><b>
        <%=rs(1)%></b></I></TD>
  </TR>
</TABLE></TD>
  </TR>
</TABLE>
<HR>
<STRONG>Per un altra itazione ricarica la pagina premendo il tasto 
&quot;Reload&quot;...</STRONG>

</BODY>
</HTML>
Contenuti dell'articolo

    Commenti

    Creare un sistema per la citazione del giorno 710 12
    | Condividi su: Twitter, Facebook, LinkedIn, Google+

    Per inserire un commento, devi avere un account.

    Fai il login e torna a questa pagina, oppure registrati alla nostra community.

    Approfondimenti

    Nessuna risorsa collegata
    I tutorial
    Top Ten Articoli
    Articoli via e-mail

    Iscriviti alla nostra newsletter nuoviarticoli per ricevere via e-mail le notifiche!

    Iscrivi subito! »»»

    PROVIDER ASP.NET

    Seleziona il tuo provider per avere il web.config pronto per Membership, Roles e Profile API.

    In primo piano

    I più letti di oggi

    Media
    In evidenza
    MISC