![]() |
|
Di A. Cartelli |
Dalla tipologia degli articoli riportati in questa rivista appare evidente
che stanno avendo ampia diffusione alcuni strumenti software (sia accessibili gratuitamente
che di tipo commerciale) che consentono di
estendere in vario modo le funzioni e le caratteristiche del Web (anche se sarebbe più
corretto dire dell'HTML).
Nell'articolo di M. Andreiana, ad esempio, si gettano le basi per la
realizzazione di un sistema in grado di consentire l'accesso e la gestione via Web di Basi
dati relazionali.
Proprio su questo versante l'esperienza dell'autore [ 1 ], che già da alcuni anni ha avuto modo
di utilizzare
questi strumenti in alcuni progetti didattici, fa sì che si possa fare un ulteriore passo in avanti
per analizzare, anche se in maniera sommaria, una loro applicazione ad un problema
concreto.
L'idea è nata e si è sviluppata dall'analisi di un'esigenza emersa
nell'ambito di uno studio congiunto che ha coinvolto la Facoltà di Lettere e Filosofia dell'Università di Cassino
e la Scuola speciale per Archivisti e Bibliotecari dell'Università degli Studi
di Roma "La Sapienza".
In estrema sintesi il problema si può così riassumere:
È apparso chiaro, fin dal primo momento, che la soluzione in grado di soddisfare
tutte le esigenze poste poteva passare unicamente per l'adozione del canale di
comunicazione Web, prevedendone un utilizzo non banale, che non si
limitasse cioè a proporre pagine con elenchi di informazioni, ma che prevedesse un'elevata
interazione client-server e la connessione ad una fonte stabile di informazioni
organizzata sotto forma di base dati.
Di fatto, soluzioni più semplici che poggiassero sull'utilizzo convenzionale della posta elettronica
(invio di messaggi da parte degli estensori delle schede informative), di file
di testo e di tabelle provenienti da fogli elettronici, già sperimentate con successo
in precedenti esperienze [ 2 ], sono state immediatamente scartate
per le difficoltà intrinseche connesse alla sincronizzazione delle informazioni provenienti dai vari redattori
e per la mole di lavoro cui sarebbe stato assoggettato chi si fosse assunto l'onere
di fungere da coordinatore del gruppo di lavoro.
Nella bozza iniziale di progetto si sono pertanto individuate le seguenti esigenze:
La scelta del software di riferimento sia in termini di sistema operativo che di programmi di base ha risentito delle precedenti esperienze dell'autore e si è basata sull'adozione dei pacchetti seguenti:
Linux quale sistema operativo di riferimento, ampiamente noto per le sue caratteristiche di stabilità e affidabilità.
Apache come server Web, oltre che perché ampiamente utilizzato in Internet, soprattutto per la sua modularità e la sua capacità di interfacciarsi con software di vario tipo.
Postgres SQL per la gestione della base dati, in quanto integralmente disponibile come software Open Source, relazionale ed in grado di supportare il linguaggio di interrogazione SQL.
Php 3, linguaggio di script in grado di consentire, oltre alla gestione dinamica delle pagine Web, l'interfacciamento con svariati gestori di basi dati (tra i quali, ovviamente, Postgres SQL).
Tenuto conto del fatto che nell'articolo di Andreiana questo stesso software viene ampiamente descritto e ne viene analizzata in dettaglio l'installazione, in questa sede si trascurano gli aspetti appena elencati e si dà più spazio all'analisi delle problematiche emerse in sede di attuazione del progetto iniziale.
Una volta installato il sistema, effettuata la configurazione, avviato
il postmaster (demone del gestore DMBS) e verificato il corretto funzionamento
del software, mediante la sua interfaccia a caratteri si è proceduto alla creazione della base dati (costituita
al momento da un'unica tabella) ed è iniziato il lavoro di redazione delle pagine HTML
e php.
Per la pagina di riferimento si è scelto di utilizzare un FRAME nel quale
riportare oltre ai dati identificativi delle strutture coinvolte due pulsanti
che consentissero di entrare in una delle due aree: quella di amministrazione
della base dati e quella della sua interrogazione rispettivamente.
Di seguito si riporta l'immagine che, a meno di qualche piccolo ritocco che potrà
essere apportato al sito nel momento del passaggio
alla versione definitiva, mostra la Home page:

Home page del sito delle donne copiste
Cliccando su Amministra si accede ad una pagina con un FORM
che chiede di fornire i dati di utente (nome e password) per essere abilitati all'accesso
alle pagine dedicate all'amministrazione della base dati. Superato questo sbarramento si
accede ad un menu mediante il quale scegliere se inserire nuove schede,
modificare quelle esistenti o cancellarle.
Qualora si clicchi sul pulsante Interroga, invece, si accede ad un'ulteriore
pagina nella quale vengono proposte due forme possibili di interrogazione della
base dati: la prima propone l'elenco di tutti i nominativi presenti nella base dati
con al seguito un set ridotto di informazioni relative a ciascuno di essi,
la seconda presenta un FORM mediante il quale procedere ad un'interrogazione selettiva
della base dati medesima.
Di seguito viene riportata l'immagine con il menu appena descritto.

Menu di interrogazione per l'accesso alla base dati delle Donne copiste
Nel caso in cui l'utente opti
per l'interrogazione selettiva della base dati appare un FORM (riportato nell'immagine che
segue) nel quale si può scegliere, in maniera
del tutto arbitraria, di immettere o selezionare uno o più valori tra quelli riportati
e con essi procedere all'interrogazione.
È opportuno rilevare che per i primi campi (nome, qualifica, intervallo
temporale, luogo e nazione) si richiede di fornire la descrizione
completa e precisa del valore da cercare affinché si possa ottenere una risposta; nel caso dei campi segnatura e testo, invece,
anche una descrizione parziale e frammentaria (basata ad esempio su una parola
o su una frazione di essa) può dar luogo ad una risposta positiva da parte del sistema.

Form di interrogazione della base dati
La scrittura delle pagine php in grado di gestire la base dati non ha rappresentato un grosso problema. Maggiori risorse si sono dovute dedicare all'individuazione di strategie in grado di semplificare la gestione dell'amministrazione dei dati, tra queste si segnalano l'adozione di un codice identificativo da effettuarsi in fase di imissione dei dati della donna copista o l'individuazione di un algoritmo in grado di consentire la trasformazione delle scelte operate da un utente nel form in un numero, da utilizzare in una struttura a scelta multipla (SWITCH) per selezionare la corrispondente interrogazione SQL.
Nella tabella che segue viene riportato il listato HTML del Form corrispondente alla pagina web visualizzata nell'immagine precedente (si tenga presente che ci si trova in un FRAME). Come si può notare dal testo i dati immessi nei vari campi vengono trasmessi al file php query.php3 responsabile della vera e propria interrogazione.
|
<HTML> <HEAD> <TITLE>Interrogazione Base Dati delle Donne copiste<TITLE> <HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000" BACKGROUND="../images/sfondo.gif"> <CENTER><H2>Interrogazione archivio copiste<H2><CENTER> <FORM METHOD=POST ACTION="./query.php3"> <UL><UL> <P><B>Nome : <B> <INPUT TYPE="text" NAME="nome" MAXLENGTH=25 SIZE=20><P> <P><B>Qualifica : <B> <INPUT TYPE="radio" NAME="qualifica" VALUE="L"> Laica <INPUT TYPE="radio" NAME="qualifica" VALUE="R"> Religiosa <INPUT TYPE="radio" NAME="qualifica" VALUE=" "> Altro<P> <P><B>Intervallo temporale di riferimento : <B> <INPUT TYPE="text" NAME="data1" MAXLENGTH=4 SIZE=4> <INPUT TYPE="text" NAME="data2" MAXLENGTH=4 SIZE=4><P> <P><B>Luogo : <B> <INPUT TYPE="text" NAME="luogo" MAXLENGTH=35 SIZE=30> <B>Nazione : <B> <INPUT TYPE="text" NAME="nazione" MAXLENGTH=6 SIZE=6><P> <P><B>Segnatura : <B> <INPUT TYPE="text" NAME="segnatura" MAXLENGTH=70 SIZE=40><P> <P><B>Testo : <B> <INPUT TYPE="text" NAME="testo" MAXLENGTH=50 SIZE=40><P> <P> <P> <TABLE><TR><TD><INPUT TYPE="reset" VALUE="Azzera"><TD><TD WIDTH=30><TD> <TD><INPUT TYPE="submit" VALUE="Conferma interrogazione"><TD><TR><TABLE> <FORM> <UL><UL> <P> <P> ... </BODY> </HTML> |
Nella tabella che segue viene riportato il listato (parziale) della pagina php
necessaria ad effettuare l'interrogazione della base dati (ovviamente sono stati modificati
i dati relativi alla base dati stessa - che viene individuata con xxxx).
Nella struttura alternativa SWITCH sono poi riportate solo alcune delle opzioni che
determinano l'interrogazione mediante costrutti SQL (le rimanenti sono ricavabili per completamento
di quelle riportate).
Il risultato della query è costituito, come si intuisce dal listato, da una serie
di schede, con i dati delle donne copiste individuate, che vengono scritte
una di seguito all'altra nella pagina web che viene creata dal software php.
|
<HTML> <HEAD> <TITLE>Interrogazione della Base Dati delle Donne scriba<TITLE> <HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000" BACKGROUND="../images/sfondo.gif"> <CENTER> <P><H2>Risultato dell'interrogazione<H2><P><CENTER> <? $alt=0; if ($nome != "") $alt=1; if ($qualifica != "") $alt += 10; if (($data1 != "") || ($data2 != "")) $alt += 100; if ($luogo != "") $alt += 1000; if ($nazione != "") $alt += 10000; if ($segnatura != "") $alt += 100000; if ($testo != "") $alt += 1000000; if ($biblio != "") $alt += 10000000; $conn=pg_connect("","","","","xxxx"); switch ($alt) { ... case 1001101: $query=pg_exec($conn,"SELECT * FROM elenco WHERE nome='$nome' AND luogo='$luogo' AND testo LIKE '%$testo%' AND (data1='$data1' OR data2='$data2' OR (data1<='$data2' AND '$data2'<=data2) OR (data1<='$data1' AND '$data1'<=data2) OR ('$data1'<'data1 AND data2<'$data2')) ORDER BY data1, data2 ASC;"); $righe=pg_numrows($query); break; case 1001110: $query=pg_exec($conn,"SELECT * FROM elenco WHERE qualifica='$qualifica' AND luogo='$luogo' AND testo LIKE '%$testo%' AND (data1='$data1' OR data2='$data2' OR (data1<='$data2' AND '$data2'<=data2) OR (data1<='$data1' AND '$data1'<=data2) OR ('$data1'<data1 AND data2<'$data2')) ORDER BY nome, data1, data2 ASC;"); $righe=pg_numrows($query); break; case 1001111: $query=pg_exec($conn,"SELECT * FROM elenco WHERE nome='$nome' AND qualifica='$qualifica' AND luogo='$luogo' AND testo LIKE '%$testo%' AND (data1='$data1' OR data2='$data2' OR (data1<='$data2' AND '$data2'<=data2) OR (data1<='$data1' AND '$data1'<=data2) OR ('$data1'<data1 AND data2<'$data2')) ORDER BY data1, data2 ASC;"); $righe=pg_numrows($query); break; case 1010000: $query=pg_exec($conn,"SELECT * FROM elenco WHERE nazione='$nazione' AND testo LIKE '%$testo%' ORDER BY nome, data1, data2 ASC;"); $righe=pg_numrows($query); break; case 1010001: $query=pg_exec($conn,"SELECT * FROM elenco WHERE nome='$nome' AND nazione='$nazione' AND testo LIKE '%$testo%' ORDER BY data1, data2 ASC;"); $righe=pg_numrows($query); break; ... default: print "<CENTER><B>Interrogazione impossibile - dati inconsistenti<B><CENTER>"; } if ($righe > 0) { $cont=0; while ($cont < $righe) { $v1 = pg_result($query,$cont,"nome"); $v2 = pg_result($query,$cont,"qualifica"); $v3 = pg_result($query,$cont,"data1"); $v4 = pg_result($query,$cont,"data2"); $v5 = pg_result($query,$cont,"luogo"); $v6 = pg_result($query,$cont,"nazione"); $v7 = pg_result($query,$cont,"segnatura"); $v8 = pg_result($query,$cont,"testo"); $v9 = pg_result($query,$cont,"biblio"); print "<P>Nome : "; print $v1; print "<BR>Qualifica : "; print $v2; print " - Intervallo temporale : "; print $v3; print " - "; print $v4; print "<BR>Luogo : "; print $v5; print " - Nazione : "; print $v6; print "<BR>Segnatura : "; print $v7; print "<BR>Testo : "; print $v8; print "<BR>Bibliografia : "; print $v9; print "<P>"; $cont++; } print "</UL>"; else print "<P><CENTER><B>Nella base dati non è presente alcuna informazione<BR> con le caratteristiche specificate<B><CENTER><P>"; pg_close($conn); print "<P> </P>"; print "<CENTER><HR WIDTH=30%><P> [ <A HREF=\"./quest.htm\"><B>Modalità di interrogazione</B></A> | <A HREF=\"../home.htm\"><B>Home page</B></A> ]</P></CENTER>"; ?> </BODY> </HTML> |
La considerazione che viene immediata al termine di questa breve descrizione
è la maturità raggiunta da molti dei progetti nati spontaneamente
in rete, che consentono di ottenere risultati pregevoli in campi non necessariamente
amatoriali o personali.
Al di là di ogni considerazione è innegabile, però, che la possibilità di condurre
ricerche, in molti settori disciplinari, si concretizza grazie all'apporto
del software Open Source ed allo sviluppo di competenze specifiche nell'utilizzo
di questo tipo di software.
È auspicabile che il circolo virtuoso che vede impegnati numerosi studiosi
nella ricerca di nuovi strumenti software e nel miglioramento
delle loro caratteristiche cresca sempre di più e contribuisca al progressivo
arricchimento del patrimonio culturale dell'umanità.
| Copyright © 2000 A. Cartelli in LGEI n. 2 Anno IV |
|