Se il nostro sito diventa popolare dovremmo ricevere un mucchio di email e presto ci accorgeremo che programmi come Outlook o Eudora non sono adeguati a conservare questo dati. Ma grazie a Dio, ci sono le banche dati. In un sito moderno, le banche dati sono come il cuore in un essere umano: indispensabili. Costruiamone una subito.
Io ne ho fatta una in Microsoft Access. L'ho chiamata CRM.mdb poiché vogliamo costruire un sistema di Customer Relationship Management (CRM, gestore dei rapporti con i clienti) che ci permetta di
comunicare con i nostri clienti in una maniera più efficiente. Dentro crm.mdb ho messo una tabella chiamata:
tbl_feedback | |
Nome campo | Tipo campo |
Id Autonumber | primary key |
Nome | Text |
Text | |
Commenti | Memo |
E poi ho inserito un paio di records in modo da fare un test dell'intera procedura.
A questo punto lasciami chiarire la scelta di Access come database. Io di solito uso MS SQL ma ho pensato che Access sia un pò più accessibile come costo. Però il tipo di database che adoperi per questi esercizi non è molto rilevante. Il code che scriveremo funziona per quasi tutte le banche dati commerciabili, quindi scegli quella con cui sei più comodo.
Prima che andiamo troppo avanti però, devo dirti che Access non è una soluzione industriale, non è il tipo di applicazione che vorrei adoperare su un web server per un sito commerciale.
Allora cominciamo a fare cose serie. Fino a poco tempo fa, costruire un sito dinamico con un database era un lavoro solo per i "big boys" ma adesso con oggetti (o meglio super oggetti) come ActiveX Database Object (ADO) è diventato un gioco da ragazzi.
ADO è come un superset di un oggetto. È una collezione di oggetti che, tutte insieme, semplificano il lavoro di collegare e manipolare i dati che risiedono dentro il database. In più ADO è inserito dentro un'altra tecnologia di Microsoft, Object Linking & Embedding DataBase (OLE DB), il che rende le cose ancora più facili.
La prima cosa da fare per lavorare con un database è di creare una connection. Se vuoi dare acqua al giardino devi attaccare il tubo al rubinetto, è uguale.
Il metodo che adoperiamo per collegarci è sempre lo stesso indipendentemente dal tipo di database che utilizziamo, la sintassi però varia. Ci sono diverse maniere per collegarsi ma qui, per semplicità adoperiamo la Connection String.
Per esempio per collegarci con il nostro database dobbiamo inserire il seguente codice:
<%
Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:/dovehaimessoiltuo/crm.mdb
%>
Un consiglio gratuito: non salvare mai il database nella stessa directory dei tuoi file ASP. Mettilo sempre fuori dal tuo Web Root, in modo da renderla inaccessibile agli utenti.
Lo stesso code per MS SQL per esempio è
<%
Provider = SQLOLEDB; Data Source = ilnomedeltuoserver; Initial Catalog=
nomedeldatabase; User Id=ilnome; Password=lapassword
%>
Comunque una volta che abbiamo inserito uno di questi due comandi per la nostra pagina ASP siamo collegati al database.
Non ci credi? Beh, prova un po' questo codice (chiama il file check_connection.asp)
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:/asptutorial/crm.mdb")
Set objRs = Server.CreateObject("ADODB.Recordset")
set objRs = objConn.Execute("SELECT * from tbl_feedback")
Do while NOT objRs.EOF
response.write "nome = " & objRs("nome") & "<br>"
response.write "email = " & objRs("email") & "<br>"
response.write "commenti = " & objRs("commenti") & "<br>"
response.write "<hr size='1' color='midnightbluè width='40%' align='left'>"
objRs.Movenext
Loop
objRs.Close
Set objRs = Nothing
objConn.Close
Set objConn = Nothing
%>
Se non ha funzionato, leggi i messaggi che il Browser ti dà sulla pagina. Io qui uso IE5.5 e se per esempio metto l'indirizzo del database sbagliato mi dice:
Error Type:
Microsoft JET Database Engine (0x80004005)
'C:asptutorialtutcrm.mdb' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.
/tut/check_connection.asp, line 4
Svelto, guardo subito alla linea 4 e vedo subito dove è il problema.
Se a questi punto il database non funziona non puoi continuare con le lezioni. Quindi concentrati e lavora. Quando sei riuscito a vedere il contenuto del tuo database, prosegui e vediamo un po' che cosa è che abbiamo fatto in realtà.