Web e database                       

  Web e database sono due tecnologie che hanno avuto un grande successo,l'una assicurando la pubblicazione istantanea di informazioni in tutto il mondo, l'altra permettendo la memorizzazione e il recupero sul proprio computer di grandi quantita' di informazioni. La loro unione permette il facile accesso a enormi depositi di informazione e sara' la base della prossima fase del Web dove assisteremo allo sviluppo di applicazioni come il commercio elettronico, per le quali questa tecnologia e' essenziale.

Giuseppe Zito

Questo documento e' stato usato nel corso INFN sull'interfacciamento di database al Web tenuto nel 1998 e in un seminario fatto nel Dipartimento di Fisica di Bari il 5 Maggio 1999.I link ai database Filemaker e Access che cominciano con http://pcba10.ba.infn.it:591/ e http://netview si riferiscono a database provvisori messi su solo per la durata del corso ed ora non funzionano piu'. Il resto del materiale viene aggiornato periodicamente. Ma nell'ultimo trasferimento il data base mysql non e' stato ancora ripristinato: per questo gli script php che si collegano al database, danno errore. Suggerimenti e commenti sono graditi: spediteli a info@zitogiuseppe.com.



Materiali usati nel seminario

Indice

Introduzione

Cosa hanno in comune alcuni dei siti piu' di successo del Web come amazon.com (una libreria online), The Movie Database e cnet.com un sito specializzato nel fornire notizie e informazioni online su Internet e computer. Usano tutti e tre la tecnica del database per permettere l'accesso agli utenti di una quantita' enorme di informazioni aggiornata in continuazione.

Ormai tutti sanno quanto e' facile pubblicare una pagina Web su un qualsiasi argomento, ma cosa si fa se voi volete pubblicare 500 pagine simili, ognuna delle quali descrive ad esempio una pianta per un ipertesto sulla botanica o un articolo nel catalogo di un'azienda? A questo punto la tecnica del database dimostra tutta la sua potenza: potete memorizzare tutte le informazioni in un database e dopodiche' dovete solo rendere accessibile queste informazioni sul Web.

E' di questo che ci occuperemo in questo seminario presentando sia il problema in generale che alcune soluzioni che al momento attuale sono le piu' economiche e facili da usare. In particolare il problema della pubblicazione di un data base viene qui visto dal punto di vista delle esigenze di una piccola organizzazione o di una singola persona.

Il problema posto non e' banale e dato l'interesse nella soluzione, ha prodotto diverse tecnologie identificate da una pletora di sigle o parole nuove come CGI, asp, Javascript, JDBC,etc che si sono aggiunte alle sigle storiche dei database come ODBC e SQL. Il nostro compito sara' anche di cercare di classificare queste tecniche dando una mappa della situazione attuale in rapida evoluzione.

4 problemi,3 soluzioni

Considereremo da un punto di vista pratico 4 problemi che si potrebbero presentare in una piccola organizzazione come la nostra mostrando la loro soluzione nelle 3 tecnologie al momento attuale piu' economiche e facili da implementare.
I 4 problemi sono:
  1. Pubblicazione di una rubrica telefonica sul Web.Per questo esercizio useremo i dati in questa tabella.
  2. Gestione delle iscrizioni a una scuola o conferenza. I dati sono raccolti a partire da un modulo come questo.
  3. Creazione di un grosso ipertesto (o CDrom) contenente ad esempio tutti i contributi a una conferenza.Questo ipertesto contenente centinaia di immagini frattali puo' servire di esempio per cio' che si vuole ottenere.
  4. Creazione di uno student response system per il monitoraggio online di una classe computerizzata.In pratica il docente ha la possibilita' di dare dei quiz via Web e ottenere subito la statistica delle risposte ricevute come in questo esempio.

Le tre soluzioni proposte sono:
  1. Il database Filemaker della Filemaker(ex Claris) con Web server incorporato.
  2. Il database Access della Microsoft con server Web IIS anch'esso Microsoft e uso di ASP.
  3. Il data base MySql disponibile gratis per macchine Unix o Linux, e il server Web Apache con modulo PHP anch'essi gratis. Con MySql vedremo anche degli esempi di uso di Java per la gestione del database.

Il lungo cammino di una tabella

Alla base dei database ci sono tabelle come questa. Le stesse tabelle che prima venivano scritte a mano sui libri contabili.

Una tabella come questa, prima di arrivare sul vostro schermo deve fare un lungo viaggio passando attraverso tre tappe principali:

Questo modo di pubblicare un database si chiama in gergo a 3 strati (in inglese three tier) riferendosi appunto alle tre tappe viste prima e per distinguerla dalla pubblicazione a 2 strati, dove il cliente accede direttamente al database. L'introduzione del terzo strato, costituito dal server Web, ha semplificato moltissimo il problema standardizzando l'interfaccia che ora non dipende piu' dal tipo di database.

Nel paese dei database

Il cammino della tabella, prima di arrivare sul Web, comincia nel "paese dei database" che esiste dalla preistoria dei computer almeno 20 anni prima che nascesse il Web. Questo "paese" si e' evoluto a poco a poco sviluppando un proprio gergo.

Come i server Web, i database non sono isolati su un computer, ma risiedono spesso su una rete locale oppure sulla rete di un'organizzazione. Queste reti che prima usavano dei protocolli diversi da quelli di Internet, stanno passando sempre di piu' a Internet. In tal caso si parla di Intranet.Su queste Intranet si affacciano i database storici.

Ci sono vari tipi o modelli di database ma il piu' comune e' il database relazionale che si presenta appunto come una serie di tabelle e di relazioni tra le stesse. Inoltre nel gergo dei database relazionali le righe di una tabella sono record e le colonne sono campi(fields in inglese). Ogni campo e' individuato da un nome ed ogni record da uno o piu' campi particolari che fanno da identificatore o chiave primaria dello stesso. I DBMS piu' diffusi come Filemaker , Oracle e Access sono relazionali. Ma un altro tipo di database, quello ad oggetti, si sta diffondendo in seguito al successo dei linguaggi di programmazione ad oggetti.

Per i data base relazionali o RDBMS e' stato creato un linguaggio standard di creazione e interrogazione di database che permette la comunicazione con RDBMS su computer remoti in questo "paese dei database". Il linguaggio si chiama SQL o Structured Query Language ed e' capito dalla maggioranza dei database(nel nostro caso Access e MySql capiscono l'SQL , Filemaker no).

Basta aggiungere al data base in rete un cosiddetto ODBC driver e il database puo' colloquiare con altri database e programmi che capiscano il linguaggio SQL.

Grosso modo l'SQL e' l'equivalente dell'HTML mentre l'ODBC corrisponde al protocollo HTTP, mentre la parte server dell'ODBC driver che risiede sulla macchina del Database e' il Web server e la parte client dello stesso e' il browser. Un database Access su un PC con ODBC driver, puo' essere interrogato senza che Access sia in funzione proprio perche' l'ODBC driver e' sempre pronto per processare richieste SQL per il database.Invece con MySql e Filemaker siamo costretti a tenere il database sempre in funzione.

Le domande o query possono essere fatte usando un'interfaccia visuale ma alla fine si riducono a pezzi di codice SQL. La stessa struttura del database o schema e' espresso da una serie di istruzioni SQL.

Come potete vedere da questa schermata di Access, oltre a queries e tables in un database abbiamo anche forms moduli per permettere l'entrata di nuovi dati, e reports tabulati riassuntivi del contenuto del database da stampare.

Filemaker ha un'interfaccia piu' intuitiva ma anch'esso ha le stesse possibilita' di un RDBMS (anche se non capisce l'SQL).In particolare, form e report di Access, sono rimpiazzati dai layout,che costituiscono l'interfaccia del database e sono costruiti col mouse a partire da un modello predefinito scelto tra quelli disponibili.
MySql e' un database SQL "puro" nel senso che i database si manipolano scrivendo istruzioni SQL senza nessuna interfaccia grafica.
Per concludere questo rapido accenno ai data base relazionali, bisogna dire che il compito di progettare un data base e' complesso e richiede per ,applicazioni "serie", persone di grande esperienza. Ma il processo stesso puo' essere schematizzato in maniera semplice nel modo seguente:si parte da un data base costituito da un'unica tabella con tutte le informazioni e poi si passa con un'operazione graduale detta in gergo normalizzazione a dividerlo in una serie ottimale di tabelle piu' piccole legate tra loro da relazioni. La relazione tra tabelle si traduce nell'avere dei valori uguali in certe colonne e puo' essere uno a uno, uno a molti o molti a molti.

Web 1 : dalla parte del server

Il server Web e' il programma che in questo lungo viaggio della tabella dal database all'utente finale guida tutta l'operazione. E' infatti al server Web che arriva la richiesta di interrogare un database sotto forma di documenti con uno speciale HTML. Si dice che l'accesso al data base viene fatto con pagine attive(attive perche' contengono dei programmi che il server deve eseguire). Esempio di pagine ad HTML modificato eseguite dal server sono le pagine asp(active server page) dei server Microsoft, le pagine in CDML(Claris Dynamic Markup Language) del server Filemaker e le pagine scritte nel linguaggio PHP per il server Apache.

Su una macchina Unix e' possibile implementare un server per database relazionali SQL usando il Perl Database Interface o DBI un API in Perl oppure PHP un linguaggio di scripting specializzato.

Un'altro modo per programmare l'interfaccia coi database sono i servlet Java : programmi in Java eseguiti dal server.Inoltre e' disponibile anche in Java un linguaggio detto JSP (simile a PHP ) per scrivere pagine HTML dinamiche eseguite dal server.

Infine,per completare il quadro, occorre citare dei programmi specializzati ( ora in parte superati) che assicurano l'interfaccia interponendosi tra un normale server Web e il database. Ad esempio Lasso per Filemaker e Cold Fusion per database ODBC.

Web 2 : dalla parte del cliente

L'utente finale fa una richiesta al database di solito usando moduli o form HTML e come risultato riceve un documento che puo' essere gia' quello finale in puro HTML oppure puo' contenere anch'esso una mistura di dati e programmi. Si parla allora di documenti dinamici o attivi. Una maniera per fornire questa funzionalita' e' attraverso applet Java o componenti Activex. Ad esempio Filemaker e' solito spedire i risultati di alcune query con un'applet Java che permette di avere sulla pagina Web funzionalita' molto simili all'uso diretto in locale del database. Allo stesso modo la Microsoft implementa alcune funzioni delle pagine asp tramite componenti ActiveX. Da notare che i componenti ActiveX,a differenza degli applet Java, funzionano solo sulla piattaforma Windows.

Un'alternativa ad applet e componenti ActiveX per lo scripting dalla parte del cliente, e' Javascript e in genere quella serie di tecniche che vanno sotto il nome di html dinamico.

Con Javascript e' possibile ad esempio, mandare parte di un database all'utente finale dandogli la possibilita' di fare ulteriori interrogazioni in locale.
Oppure controllare i dati scritti in una form, prima che siano inviati, permettendo all'utente di correggerli.

In generale per programmare l'interfacciamento di database, qualunque tecnologia si scelga, e' necessario avere una buona comprensione sia del Modello ad oggetti del Documento HTML (DOM) sia di come gli oggetti del documento si manipolano con un linguaggio di scripting come Javascript o altro.All'inizio e alla fine i nostri dati saranno sempre in formato HTML. Qui maggiori dettagli su HTML dinamico e Javascript.
Il linguaggio Javascript puo' essere inoltre usato anche dalla parte del server come nelle pagine asp.

Negli esercizi di scripting sia dalla parte del server che del client,useremo l'approccio diretto di modificare a mano l'HTML. In effetti per quanto sofisticato sia il vostro sistema di sviluppo di pagine dinamiche di interfaccia a database (ad esempio Claris Homepage e Microsoft Frontpage) questi di solito forniscono l'intelaiatura ed e' poi necessario intervenire a mano nel codice per rifinire l'interfaccia.

Alcuni esempi di pubblicazione di database

Di soluzioni al problema dell'interfacciamento dei data base al Web ne esistono almeno tante quanti sono i possibili accoppiamenti database-webserver. Inoltre soluzioni ottime in passato vengono superate da nuove tecnologie. Soluzioni che vanno bene con un piccolo numero di utenti possono fallire miseramente all'aumentare degli utenti perche' come si dice in gergo, non scalano. Per questo ci sono soluzioni a costo 0 (se si eccettua la disponibilita' di un programmatore esperto) e soluzioni chiavi in mano per grosse aziende a costo altissimo.

In questo corso saranno considerate in dettaglio solo le soluzioni Filemaker, Microsoft(Access) e Unix(MySql). Inoltre viene dato qualche accenno alla soluzione "Java" .Si tratta delle possibilita' piu' semplici ed economiche offerte dal mercato.

Procediamo innanzitutto a cercare di confrontare le 4 soluzioni in una tabella riassuntiva che serva anche da dizionario per passare dal gergo di una alternativa a quello dell'altra.

4 soluzioni a confronto

FilemakerMicrosoftSun JavaUnix
DatabaseFilemakerAccess o un RDBMS con ODBCRDBMS con JDBC oppure ponte ODBC-JDBCMySql
PostgresSql
Piattaforma del server Web PC/MacWindowstutteUnix/Linux
Server Web Incluso nel databaseIIS o PWS(Microsoft)Se si usano solo applet qualsiasi server,altrimenti Apache o altro server che puo' eseguire servlet(Tomcat)Apache
Server scripting CDMLasp(Vbscript e Jscript)Servlet Java,JSP PHP
Perl DBI
Strumenti sviluppo visuali HomepageAccess,Frontpage, Visual InterDev diversi -
Puo' essere visto da tutti i browser?SINo se si usa ActiveXSISI
Secure Socket Layer(SSL)NOSISISI

Filemaker Pro 4.0 ha adottato la soluzione di mettere assieme Server Web e database. Questo semplifica di molto la creazione dell'interfaccia che e' fatta dallo stesso database ma d'altra parte rende il data base molto meno flessibile.Ecco come viene pubblicata via Filemaker la tabella vista all'inizio.Ed ecco il sorgente della pagina attiva in CDML usata per ottenere questo risultato.Questa e' stata composta in parte con un'interfaccia visuale fornita da Claris Homepage con alcune modifiche fatte "a mano" modificando l'html. E' possibile ritrovare la struttura tipica di una pagina attiva per server, con uno schema HTML che viene riempito da informazioni prese dal database inserite dal server in maniera dinamica.Un'altra interessante tecnica di database publishing disponibile con Filemaker e' quella dell'uso dei campi calcolati. che vedremo in dettaglio nel terzo problema.

Con Access e' possibile salvare tabelle (ma anche query,form e report) in formato HTML statico,HTX/IDC e asp. Nel primo caso si ottiene un documento in HTML puro che puo' essere pubblicato attraverso un qualsiasi server. Questo puo' essere utile se il database cambia di rado: quello che fate e' di rinfrescare di tanto in tanto questa pagina.
Negli altri 2 casi viene invece richiesto un server Microsoft oltre a un driver ODBC che provvedera' a ogni richiesta a prelevare i dati dal database. In particolare HTX/IDC e' una rappresentazione dinamica semplificata con l'uso del file IDC e HTX contenenti le informazioni per interrogare il database e il formato di presentazione dei risultati. Invece il file asp e' una pagina attiva con server scripting . Il linguaggio di default e' VBscript(una specie di Visual Basic semplificato) ma potete usare anche Javascript.Gli oggetti usati per collegarsi al database sono chiamati nel gergo Microsoft oggetti ADO(ActiveX Data Objects).

Su una macchina Unix/Linux e' possibile implementare una soluzione gratis (se si dispone di un programmatore esperto) con un database mySQL o PostgreSQL ,un server Apache con un modulo PHP che permette di scrivere server scripts di interfacciamento a database nel linguaggio PHP.Ad esempio, questo e' il file PHP che serve a pubblicare la tabella persone residente su un database MySql.In alternativa potete installare anche un'interfaccia in Perl chiamata DBI(Database Interface).

Il linguaggio Java della Sun puo' essere usato sia dalla parte del client con le applet che dalla parte del server con le servlet.Esso ha inoltre le Api java.jdbc e java.sql per il trattamento di query SQL. Ma in questo caso e' necessario usare un driver JDBC oppure un ponte ODBC-JDBC per collegarsi a un database. L'importanza di Java (un linguaggio a oggetti) potrebbe diventare ancora maggiore in un futuro in cui i data base a oggetti diventassero preponderanti.Al momento attuale l'uso di Java nel campo dei database richiede programmatori esperti anche se alcuni ambienti di sviluppo facilitano di molto il lavoro.D'altra parte in Java avete una liberta' assoluta nello scrivere la vostra interfaccia. Potreste realizzare in Java,ad esempio, anche un server Web specializzato; oppure un data base ad oggetti; etc... Per facilitare la programmazione di queste applicazioni,la Sun ha introdotto un linguaggio di scripting sul server detto JSP:una specie di Java semplificato da usare direttamente nell'HTML.La soluzione ottimale in Java e' di usare un server che capisce il JSP come Tomcat e programmare l'interfaccia con JSP. Comunque all'interno di questo documento vedremo solo l'uso di Java come aiuto nella gestione del database sfruttando la possibilita' di potersi connettere direttamente a un database relazionale.Consultate questo creazione di middleware in Java per l'accesso a database e questo applicazioni Web in Java : perche' tante tecnologie? per maggiori chiarimenti.

E' interessante vedere come Javascript permetta una soluzione di tipo solo client della pubblicazione della stessa tabella. In questo caso la tabella stessa e' contenuta nel file persone1.js che viene inviata all'utente assieme al programma in javascript contenuto nell'html ed e' lo stesso browser a trasformare i dati della tabella in html.
La tabella in Javascript diventa un vettore di oggetti.Questo spiega il passaggio in atto tra data base relazionali a data base a oggetti. I database relazionali sono un residuo del modo di pensare procedurale del passato con i dati da una parte e i programmi dall'altra. Nella programmazione a oggetti non esistono piu' dati e programmi ma solo oggetti che nel caso dei data base risiedono su una memoria di massa.E con Internet si parla ormai di oggetti che risiedono ovunque e che possiamo richiamare a nostro piacimento.

Imparate il server side scripting in un'ora

Prima di vedere in dettaglio la soluzione ai tre problemi posti all'inizio, e' necessario fare una piccola introduzione pratica al server side scripting in CDML/ASP/PHP. Cominceremo con lo scrivere lo script piu' semplice possibile:quello che scrive Ciao a tutti

In ASP questo diventa la seguente pagina:

<% LANGUAGE="VBSCRIPT" %>
<HTML>
<HEAD>
<TITLE>Ciao a tutti</TITLE>
</HEAD>
<BODY>

<%Response.Write("Ciao a tutti")%>

</BODY>
</HTML>
Questa va ritagliata e incollata in Wordpad creando sulla directory principale del server un file di solo testo di nome ciao.asp.
Questo e' l'effetto che si ottiene leggendo la pagina con IIS.

In PHP questa diventa:

<html>
<h1 align=center><?echo "Ciao a tutti!" ?><\h1>
</html>    
Qui' il risultato.

In CDML non e' possibile scrivere un tale script perche' il CDML come fa capire il suo stesso nome (Claris Dynamic Markup Language) e' solo una serie di tag che si aggiungono all'HTML per permettere l'interfacciamento al database e non un linguaggio di programmazione come Vbscript e PHP.


Come secondo esempio, proviamo a vedere come passare i dati di una form a uno script scrivendo un programma che fa la somma di 2 numeri.

In ASP salvate prima la seguente pagina come somma.html

<html>  <body>
<form method="POST" action="somma.asp">
<input type="text" name="numero1" maxlength="10"> <br>                                                 
+
<input type="text" name="numero2" maxlength="10"> <br>
<input value="Fai la somma" type="submit">
</form>
</body>
</html>                                                 
                                                
quindi la seguente pagina come somma.asp
<html>
<body>
<SCRIPT LANGUAGE=JScript RUNAT=Server>
Response.Write(Number(Request.Form("numero1"))+Number(Request.Form("numero2")));
<SCRIPT>
<html>
Dovreste ottenere il seguente risultato.

In PHP salvate prima la seguente pagina come somma.html

<html>  <body>
<form method="POST" action="somma.php">
<input type="text" name="numero1" maxlength="10"> <br>                                                 
+
<input type="text" name="numero2" maxlength="10"> <br>
<input value="Fai la somma" type="submit">
</form>
</body>
</html>                                                 
                                                
quindi la seguente pagina come somma.php
<html>
<? $numero1=$_POST["numero1"];
   $numero2=$_POST["numero2"]; ?>
<h1 ><?echo $numero1+$numero2 ?></h1>       
</html>
Dovreste ottenere il seguente risultato.

Per ottenere lo stesso risultato con Filemaker, occorre tener conto del fatto che CDML e' un linguaggio molto limitato da usare solo con dei database. Percio' dobbiamo prima definire un database "somma" che contiene un solo record coi campi numerici numero1 e numero2 .A questi va aggiunto il campo somma definito come la somma dei precedenti.
Questo database va pubblicato sia abilitando il Web companion che usando il Wizard di Homepage. A questo punto dovreste avere tutti i files relativi a questo database in una cartella ../Web/somma/. In questa cartella caricate il seguente file col nome somma.html:

<HTML>
<body bgcolor=white>
<P><FORM ACTION=FMPro METHOD=post><P>

<P> <INPUT TYPE=hidden NAME=-DB VALUE='somma.FP3'> 
<INPUT TYPE=hidden NAME=-Lay VALUE='Formato 1'> 
<INPUT TYPE=hidden NAME="-format" VALUE="risultato.html"> 
<INPUT TYPE=hidden NAME="-error" VALUE="nuovo_errore.htm">
<INPUT TYPE=hidden NAME="-recid" VALUE="1"> 

<P>numero1: 

<P><INPUT TYPE=text NAME=numero1 SIZE=30>
<P>numero2: 
<P><INPUT TYPE=text NAME=numero2 SIZE=30>
     
<p><INPUT TYPE=submit NAME="-Edit" VALUE="Somma">
</BODY>
</HTML>

Ora aggiungi il seguente file come risultato.html
<HTML>
<BODY BGCOLOR="#FFFFFF">

[FMP-Field: somma]
</BODY>
</HTML>
Ecco il risultato.

Pubblicazione di una rubrica telefonica

Il problema
I dati presenti in questa
tabella devono essere inclusi in un database Persone e quindi pubblicati in un formato di lista unica con i nomi e gli indirizzi di posta elettronica cliccabili in modo da puntare all'homepage in un caso e da attivare il programma di posta nell'altro.L'aggiornamento del database e' fatto fuori dal Web.

Soluzione Filemaker Una volta definito il database e importati i dati, esso va' pubblicato attivando il Web companion. Inoltre occorre usare il Wizard di Homepage per completare la pubblicazione. Homepage e' essenziale perche' crea in una cartella ../Web/persone/ tutti gli html necessari per la pubblicazione del database.Questi poi possono servire come schemi per realizzare un'interfaccia personalizzata.Trovate qui tutti i passi necessari per questa pubblicazione preliminare mentre qui e' la lista personalizzata e questo e' il documento che l'ha generata.
Tutte queste pagine usano CDML per accedere il database.Nell'esempio prima visto della somma di due numeri,si puo vedere come le informazioni relative al nome del database,numero record,layout,etc vengono fornite al Web companion con una serie di campi html HIDDEN. In una form per indicare che il risultato deve essere processato dal Web companion, basta scrivere ACTION=FMPro .E' lo stesso Web companion a passare poi i dati sul data base alla pagina html indicata dal campo HIDDEN di nome format. In questa pagina possiamo presentare i dati provenienti dal database.Possiamo richiamare questa pagina di presentazione direttamente utilizzando un'opportuna URL che deve cominciare con /persone/FMPro?-format=nomepaginahtml&-db=nomedatabase&-lay=nomelayer&...
Un'ultima cosa da considerare nella soluzione FileMaker, e' quella della protezione del data base.Questo infatti potrebbe essere modificato (almeno da una persona abbastanza esperta) se non lo proteggiamo in maniera opportuna.La maniera piu' semplice e' quella di definire 2 password:una di superuser da usare al di fuori dalla rete e una bianca(senza caratteri) da usare per l'apertura normale del database con accesso dalla rete. Per quest'ultima password si abiliteranno solo le operazioni di lettura e ricerca.E' possibile anche escludere alcuni campi e formati.Ovviamente la password di superuser avra' accesso a tutte le operazioni e sara' usata dal gestore della tabella per aggiornarla. Questo aggiornamento puo' avvenire anche via rete tramite TCP/IP ma al di fuori del Web collegandosi direttamente a FileMaker .

Soluzione Access Una volta creato il database ,caricati i dati e aggiunto il file contenente il database tra le sorgenti di dati nell'Odbc driver col nome persone possiamo far creare ad Access direttamente una pagina asp di presentazione dati.Questa pagina che corrisponde al seguente codice, puo' servire come schema per preparare la pagina personalizzata di presentazione.Potete vedere qui la lista personalizzata e il codice che l'ha generata.
Qui i dettagli pratici.
Guardando il codice prodotto da Access possiamo vedere come tutto si riduce alla manipolazione di 5 oggetti chiamati nel gergo Microsoft oggetti ADO. Abbiamo l'oggetto Server per fare operazioni generiche, l'oggetto Connection per collegarci al data base, l'oggetto Recordset che contiene la risposta del data base,l'oggetto Request per ottenere i dati dai moduli HTML e infine l'oggetto Response per scrivere HTML. Con questi 5 oggetti , un po' di SQL e mettendo tutto insieme nel linguaggio Vbscript (o Javascript) possiamo scrivere la nostra pagina asp.

Soluzione MySql Con MySql non possiamo sfruttare il database per creare il codice iniziale, ed anche il caricamento dello stesso richiede l'uso di file di testo con istruzioni SQL. Ma il linguaggio SQL non e' molto complicato e consiste in pratica di 4 sole istruzioni principali:create,select,insert,update per fare la creazione,la ricerca,l'inserimento di nuovi dati e l'aggiornamento. Per quanto riguarda le pagine dinamiche in PHP possiamo aiutarci con questo tutorial e il codice corrispondente preso dalla rete (o con altri esempi simili).Riporto a parte tutti i dettagli pratici ma alla fine avremo il seguente script PHP per accedere al database e listare i dati. Questo script dovrebbe produrre il seguente risultato.
La gestione del database viene fatta attraverso una serie di funzioni molto simili ai metodi ASP. Alcune di queste istruzioni contengono dei comandi SQL. Gli script PHP assomigliano molto alle pagine Asp ed esistono addirittura degli strumenti di traduzione automatica da ASP a PHP.

Il problema della protezione del database e' abbastanza complicato e per questo viene considerato a parte.

Infine nella soluzione Java viene usato sempre il data base MySql ma l'accesso e' ottenuto tramite servlet e pagine JSP servite da Tomcat.

Gestione delle iscrizioni a una conferenza

Il problema
I dati sono raccolti a partire da un
modulo come questo.Per semplificare il problema della correttezza dei dati, invece di fare dei controlli a software, facciamo fare il lavoro alla stessa persona che scrive i dati, ripresentando gli stessi e chiedendo conferma.Se l'utente conferma che i dati sono corretti, allora lo avvisiamo che ricevera' un mail di avvenuta iscrizione all'indirizzo fornito ed allo stesso momento inviamo un mail al gestore del database. Questo provvedera' a controllare l'identita' della persona e quindi a inviare il mail di avvenuta iscrizione.

Soluzione FilemakerDall'esempio della somma,possiamo vedere come in FileMaker a ogni elemento di form corrisponde un campo con lo stesso nome. Percio' non dobbiamo fare altro che creare un database Iscrizioni con gli stessi campi presenti nella form:cognome, nome, qualifica, ciclo, istituzione, indirizzo, tel, fax, postael, camera, dividere, accompagnatori, richieste.Ora pubblichiamo il database seguendo la stessa trafila usata per il database Persone.Alla fine del processo avremo una serie di HTML in una cartella ../Web/Iscrizioni/ . Ora copiamo il file ,generato automaticamente, Nuovo.htm su un file richiesta.html che useremo come base per creare la nostra interfaccia personalizzata.A questo punto non dobbiamo fare altro che fare un collage tra questa pagina e il modulo da noi predisposto. Il risultato e' il file http://pcba10.ba.infn.it:591/iscrizioni/richiesta.html che vi permette di aggiungere nuovi record al database(Se questo link non e' disponibile perche' il database non e' aperto cliccate qui).
Ora dobbiamo solo personalizzare la risposta, cosa che si ottiene modificando il file nuova_risposta.htm. Questa e' la pagina che permette di trattare l'iscrizione in maniera completa. Ad essa corrispondono i seguenti 3 files:richiesta1.html contenente il modulo iniziale,risposta1.html che permette l'aggiornamento dei dati ed infine risposta2.html che da' il messaggio finale.

Soluzione Access Creato con Access il il database iscrizioni e definito in ODBC come System DNS iscrizioni allo stesso modo come abbiamo fatto prima con la tabella Persone, usiamo direttamente il modulo avendo solo modificato l'ACTION in modo da puntare a richiesta.asp.In questa prima versione semplificata lo script asp fa solo l'inserimento di un nuovo record coi dati del modulo. Nella versione completa vengono usati invece due script:richiesta1.asp che permette anche l'aggiornamento e risposta.asp che da' la conferma finale dell'avvenuta iscrizione.

Soluzione MySql Dopo aver creato il database Iscrizioni usando il seguente schema e seguendo la stessa trafila fatta per la tabella persone, si puo' usare il modulo html senza cambiare niente a parte l'ACTION che ora punta a uno script PHP. In questa prima versione semplificata, si vede come si fa ad aggiungere un record al database. La versione completa corrisponde a questo script PHP.Questo script si basa su una variabile $stato che permette di sapere a che punto del processo di iscrizione siamo e di fare le opportune azioni.Inoltre la variabile $uid conserva l'identificatore del record contenente l'iscrizione che stiamo trattando. All'inizio $stato e' vuoto e lo script provvede ad aggiungere un nuovo record al data base inserendovi i dati dell'iscrizione.A questo punto i dati vengono mostrati e possono essere corretti.Si passa allora nello stato "Aggiorna" nella quale si rimane finche' l'utente non e' soddisfatto e clicca confermando che tutto e' Ok. Questo e' lo stato "ok" dove lo script mostra un messaggio finale e avverte via mail il responsabile. Nello stato "Aggiorna" avviene ovviamente solo un aggiornamento del record prima di mostrare i nuovi dati e di chiedere daccapo conferma.

Creazione di un grosso ipertesto(centinaia di pagine) da un database

Il problema
Il punto di partenza e' un normale data base dove inseriamo tutte le informazioni sull'argomento che ci interessa.Nel nostro caso,trattandosi di immagini frattali avremo:

Soluzione Filemaker
Con questa tabella cominciamo a raccogliere dati sul nostro argomento . Qui trovate un esempio di questa tabella creata con Filemaker (Se non avete Filemaker a disposizione potete guardare qui una schermata contenente un singolo record con la descrizione di un'immagine.
In generale avremo piu' di una tabella ma il principio e' questo (ad esempio per una conferenza avremo una tabella di contributi,una tabella di sessioni,una tabella di autori,etc).
Ora passiamo alla presentazione.
La cosa piu' semplice da fare e' l'indice di tutte le figure.Dovremo in effetti definire un campo calcolato rigaindice (vedi figura)che crea nell'indice la riga corrispondente all'immagine considerata. Una volta creato questo campo,ne facciamo l'export su un file che chiameremo indice.html e l'indice e' creato in un sol colpo. Possiamo verificare col browser se va bene ed eventualmente apportare delle modifiche. Per le nostre immagini il risultato dovrebbe essere all'incirca come questo.
Per la costruzione della scheda HTML della singola immagine invece la cosa e' piu' complicata. Conviene crearne prima una a mano e poi inserirla ,usando i campi calcolati,nel database. Ad esempio in questo caso e' stato deciso di usare 2 files per realizzare la scheda della singola immagine: framen.htmldescrive la divisione della finestra in 2 cornici e nella cornice piccola sopra viene caricato il file desn.html con la descrizione dell'immagine e i pulsanti di navigazione.I due files sono creati dai due campi calcolati frame2 e imagedes.La costruzione dei due campi e' fatta in maniera graduale facendo dei test con Netscape man mano che si procede. Per facilitare questo e' conveniente creare dei layout che ci permettano di copiare l'html dal database e di incollarlo ad esempio in Wordpad salvandolo come un file di tipo testo.
Una volta che siamo soddisfatti esportiamo prima il campo frame2 poi il campo imagedes come abbiamo fatto prima per l'indice.Questo crea due grossi files contenenti i file delle singole immagini tutti assieme. Purtroppo Filemaker non e' in grado (almeno su PC) di creare un file per record e questo lavoro va fatto a parte con Word seguendo queste istruzioni.
Anche lo slide show di immagini prese in maniera random e' stato realizzato con un campo calcolato randomslide usato per creare questo questo file che viene utilizzato per produrre questa particolare presentazione.
Potremmo inventarci altre presentazioni e realizzarle allo stesso modo. Sarebbe anche possibile utilizzare una simile tecnica per realizzare un CDrom su una particolare tematica. La tecnica descritta permette di tenere separata l'informazione dalla presentazione e permette di modificare con facilita' la presentazione senza dover modificare a mano centinaia di pagine.

Soluzione MySql
In questo caso ,l'ipertesto da creare riguarda le gallerie frattali su Internet. Questo file contenente istruzioni SQL permette di aggiornare e caricare in MySql le due tabelle gallerie e autore.
Le pagine dell'ipertesto sono create da programmi Java. Riportiamo a titolo di esempio il programma che genera la schermata iniziale dell'ipertesto. Questo ipertesto non contiene molte pagine. Invece questo Museo Virtuale contiene centinaia di installazioni interattive descritte da altrettante schede. In questo caso per caricare i dati nel database viene usato anche un applet Java.
Informazioni su come viene gestito questo ipertesto con MySql e Java.

Creazione di uno Student Response System

Il problema
Si tratta di caricare dei quiz in un database e di usarli in una classe computerizzata con un monitoraggio in real-time delle risposte degli studenti. E' stato costruito un sistema rudimentale ma funzionante che contiene finora i seguenti quiz:

I quiz sono proposti uno a uno durante la lezione.Gli studenti cliccano sulla pagina del singolo quiz: ad es. quiz1 della lezione 1 quando il docente gli dice di farlo. La stessa pagina permette di conoscere sia la statistica dei risultati che la situazione delle risposte ricevute.Quando il docente ,che usa un proiettore collegato al suo computer, vede che tutti hanno risposto discute con gli studenti le risposte ricevute.Alla fine della lezione e' possibile mostrare un resoconto dei risultati di tutta la classe per sapere chi e' stato piu' bravo. E' possibile avere anche un rapporto dettagliato delle risposte alla singola lezione con questo programma java.

Soluzione MySql+Java

I quiz sono creati e caricati usando questo file di comandi SQL.Si tratta di 3 tabelle:computer, test, domande.
Invece questo file crea la tabella dove vengono caricate le risposte degli studenti.
I file che permettono di accedere ai singoli quiz sono creati da questo programma Java. In pratica per creare il modulo per il quiz 3 della lezione 2, uno da' il comando:

java Genera 2 3
Anche il rapporto e' generato da un programma Java.
Il docente durante la lezione deve avere accesso via ssh o telnet al computer col database.Prima di cominciare cancella tutte le risposte precedenti a una lezione col comando:
DELETE FROM istogrammi WHERE Num_lez=2;
.Alla fine dei quiz da' il comando
java Rapporto1 2
per generare il rapporto che diventa subito visibile a tutti via Web.
Il sistema,per quanto rudimentale, si e' dimostrato di grande aiuto a migliorare l'insegnamento e a vivacizzare la lezione.

Conclusione

L'estensione XML dell'HTML permette ormai di descrivere anche i database in HTML e potrebbe in futuro dar luogo a un formato standard XML per database per cui potremmo trasferire un qualsiasi database sul Web e manipolarlo con i normali browser e server Web. Ma questo difficilmente renderebbe obsoleti i metodi di pubblicazione qui visti, perche' ci sara' sempre bisogno di un robusto motore di gestione del database e questo non puo' essere sostituito ne' dal server ne' dal browser Web.

In definitiva l'interesse maggiore del cosiddetto database web publishing , non e' come si potrebbe pensare, nel rendere disponibili in rete i database storici, cosa di per se' interessante, quanto nel permettere di passare dalla produzione artigianale di pagine Web del passato a una nuova fase con possibilita' di fornire contenuti enormi e molto piu' interattivi.Essa inoltre permette di separare il contenuto dalla presentazione.Il contenuto e' nel database mentre la presentazione puo' essere definita all'ultimo momento e cambiata quando si vuole. In definitiva si e' entrati in una nuova fase del Web piu' matura e pronta ad accogliere le Intranet e i negozi elettronici.


Ultimo aggiornamento :