Web e database |
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.
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:
Le tre soluzioni proposte sono:
Una tabella come questa, prima di arrivare sul vostro schermo deve fare un lungo viaggio passando attraverso tre tappe principali:
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.
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.
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.
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.
Filemaker | Microsoft | Sun Java | Unix | |
Database | Filemaker | Access o un RDBMS con ODBC | RDBMS con JDBC oppure ponte ODBC-JDBC | MySql PostgresSql |
Piattaforma del server Web | PC/Mac | Windows | tutte | Unix/Linux |
Server Web | Incluso nel database | IIS o PWS(Microsoft) | Se si usano solo applet qualsiasi server,altrimenti Apache o altro server che puo' eseguire servlet(Tomcat) | Apache |
Server scripting | CDML | asp(Vbscript e Jscript) | Servlet Java,JSP | PHP Perl DBI |
Strumenti sviluppo visuali | Homepage | Access,Frontpage, Visual InterDev | diversi | - |
Puo' essere visto da tutti i browser? | SI | No se si usa ActiveX | SI | SI |
Secure Socket Layer(SSL) | NO | SI | SI | SI |
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.
In ASP questo diventa la seguente pagina:
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
<% 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.
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.
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.
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.
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:
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 3Anche il rapporto e' generato da un programma Java.
DELETE FROM istogrammi WHERE Num_lez=2;.Alla fine dei quiz da' il comando
java Rapporto1 2per generare il rapporto che diventa subito visibile a tutti via 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.