52.3.228.47 @ 2020/09/20 19:17:38
Tour de France 2020

Guida MC-Web - MC-link

Si tenga presente che questa guida viene proposta soprattutto a fini storici e gli esempi non funzionano più su questo sito.

Per contattare direttamente il Cybernauta: Mailto@cybernauta

Risposte alle domande più frequenti: FAQ@cybernauta

Il Cybernauta è presente anche su Twitter: Twitter@cybernauta

Le interrogazioni di database

MC-link Web ® mette a disposizione dei propri utenti mgrep.pl (multiplegrep), un comodo programma di interrogazione di database che riesce a combinare la sua grande versatilità con una estrema facilità di utilizzazione.

Il formato utilizzato per i database interrogabili con questo programma è quello normalmente detto: "ascii delimitato". Si tratta di normali file di testo dove ogni riga costituisce un record con i singoli campi separati da un apposito carattere delimitatore (una virgola, un punto e virgola, una tabulazione, ecc.). Tali database possono essere creati e aggiornati "online" tramite la procedura fileform.pl oppure gestiti localmente sulla macchina del'utente e quindi scaricati su MC-link tramite il file manager oppure via FTP.

Il programma prevede l'interrogazione del database tramite un classico form ed è possibile utilizzare gli operatori logici "and" e "or". Il risultato dell'elaborazione viene restituito con una normale pagina Web il cui aspetto finale viene deciso dall'utente che ne può curare pienamente l'intestazione, la disposizione delle informazioni elaborate, il fondo pagina, il titolo ecc.

mgrep.pl

<form method="post">
<input type="hidden" name="datafile"    value="database.txt" />
<input type="hidden" name="delimiter"   value=";" />
<input type="hidden" name="title"       value="Risultato" />
<input type="hidden" name="header"      value="head.htm" />
<input type="hidden" name="footer"      value="foot.htm" />
<input type="hidden" name="template"    value="output.tpl" />
<input type="hidden" name="max_results" value="100" />
<input type="hidden" name="failure_url" value="failure.htm" />

<input type="text"   name="campo-1" />
<input type="text"   name="campo-2" />
<input type="text"   name="campo-n" />

<input type="radio"  name="logic" value="and" checked="checked" />and
<input type="radio"  name="logic" value="or">or

<input type="submit" value="OK" />
</form>

I campi

Di seguito la descrizione dei campi utilizzati dal programma. È buona norma che i campi che abbiamo indicato come "hidden", cioè non visibili da parte di chi compila il form, vengano mantenuti tali.
  • datafile
    È il nome del file contenente il database ascii-delimitato da interrogare. Per indicatore di fine record si può utilizzare indifferentemente il CR (carrige return, ascii 13), il LF (line feed, ascii 10) o la coppia CR+LF. Il primo record del database deve contenere i nomi dei singoli campi e non c'è limite al numero e alla dimensione dei campi. Il contenuto dei campi può essere sia numerico che alfanumerico.
  • delimiter
    È il carattere separatore dei campi. Per default viene assunto il TAB (ascii 9) ma può essere utilizzato un qualsiasi altro carattere tenendo presente che è buona norma non utilizzare caratteri con codici ascii inferiori a 32 tranne naturalmente il citato ascii 9. Se si intende utilizzare la procedura dbview.pl è comunque obbligatorio utilizzare il tab.
  • title
    Il titolo che avrà la pagina Web generata dal programma contenente il risultato dell'interrogazione del database.
  • header
    È un file html che verrà inserito dal programma all'inizio della pagina Web contenente il risultato dell'interrogazione del database.
  • footer
    È un file html che verrà inserito dal programma alla fine della pagina Web contenente il risultato dell'interrogazione del database.
  • template
    È un file html con il tracciato che verrà utilizzato dal programma per disporre i campi di ogni record selezionato all'interno della pagina Web contenente il risultato dell'interrogazione del database. In alternativa questo file può essere utilizzato per generare una lista intermedia di record visualizzabili tramite la funzione dbview.pl.
  • max_results
    È un valore numerico che esprime il massimo numero di records che possono essere estratti dal database. Per default non c'è limite al numero di record che possono essere estratti.
  • failure_url
    È una normale file html contenente una pagina Web da presentare all'utente che ha impostato l'interrogazione qualora questa avesse un esito negativo.
  • campo-1, campo-2, ..., campo-n
    Sono i campi di input utilizzati dall'utente per impostare l'interrogazione. Non c'è limite al numero di questo tipo di campi ma, ovviamente, non si può superare il numero complessivo di campi presenti nel database. Si tenga presente che la denominazione che abbiamo utilizzato (campo-1, campo-2 ecc.) è solamente ai fini espositivi, l'utente deve adottare per i campi di input gli stessi nomi dei corrispondenti campi del database.
  • logic
    Indica l'operazione logica da effettuare per combinare il contenuto dei campi di input compilati dall'utente. Le operazioni possibili sono l'and e l'or. Per default viene assunto l'and.

Le variabili

L'utente ha a disposizione un certo numero di variabili da usarsi per formattare la pagina Web generata dal programma contentente il risultato dell'elaborazione. Tali variabili sono, pertanto, utilizzabili nei file html specificati in "header", "footer", "template" e "failure_url".

I nomi dei campi che costituiscono il form sono disponibili in variabili che hanno lo stesso nome dei campi ma precedute dal simbolo del dollaro ($). Ad esempio il campo "campo-1" sarà disponibile nella variabile $campo-1. Si tenga presente che i nomi dei campi sono "case-sensitive" per cui, per esempio, la variabile $DataFile non esiste ma esiste la variabile $datafile. Ovviamente il programma, quando genera la pagina Web con il risultato dell'elaborazione, sostituisce alle variabili il contenuto dei rispettivi campi.

Sono inoltre diponibili le variabili: $count contenente il numero di record estratti e $recno con il numero di record esaminati.

Le modalità di interrogazione

Per interrogare il database l'utente dovrà formulare la propria richiesta negli appositi campi di input previsti nel form. A seconda della struttura del database e del tipo di interrogazioni da compiere si possono predisporre form che abbiano tanti campi di input quanti sono i campi del database oppure limitare i campi di input solo ad alcuni campi del database.

Le modalità di interrogazione del database sono differenti a seconda che il campo di input sia numerico o alfanumerico.

Per i campi numerici si possono utilizzare i tradizionali operatori logici:

>   (maggiore di)        >=  (maggiore o uguale a)
<   (minore di)          <=  (minore o uguale a)
=   (uguale a)           !   (non)
!=  (diverso da)

Supponiamo di avere un database che abbia un campo numerico di nome anno; se volessimo estrarre i record relativi al 1992 basterà inserire nel rispettivo campo di input: "=1992" oppure se ci interessassero i record per gli anni successivi al 1990 si dovrà inserire: ">1990".

Per i campi alfanumerici la ricerca si effettua semplicemente inserendo nel rispettivo campo di input il dato richiesto o parte di esso. Supponiamo di avere un database che abbia un campo alfanumerico di nome prodotto; se ci interessassero tutti i record relativi a prodotti video basterà inserire nel rispettivo campo di input: "video" (verranno estratti, ad esempio, i record relativi a videoregistratori, videocamere, videocitofoni ecc.). La ricerca non distingue fra maiuscolo e minuscolo. Qualora si desiderasse una ricerca esatta (non per sottostringa) si dovrà utilizzare l'operatore = (uguale a). Ad esempio, se ci interessassero le videocassette dovremo inserire nel campo di input "prodotto" la richiesta: "=videocassette". In questo caso la ricerca distingue fra maiuscolo e minuscolo.

Grazie al campo: "logic" è possibile combinare le condizioni di ricerca di più campi di input fino a formare un'interrogazione complessa. Se si imposta il valore "and" (default) verranno estratti i record per cui risultino verificate contemporaneamente tutte le condizioni previste nei campi di input. Se invece si imposta il valore "or" verranno estratti i record in cui sia verificata almeno una delle condizioni.

Per tutti i campi di input, numerici e alfanumerici, è sempre possibile utilizzare come condizioni di ricerca tutte le c.d. "regular expression" tipiche degli ambienti Unix.

Esempio

        Nome 
     Cognome 
         età 
       Città 
         cap 
 professione 
stato civile 
     reddito 
             and or 

database

nome;cognome;citta;cap;professione;stato;eta;reddito
Mario;ROSSI;ROMA;00100;impiegato;coniugato;20;36500000
Romolo;SANTINI;ROMA;00100;studente;celibe;34;6000000
Nando;ROMANAZZI;ROMA;00100;ristoratore;celibe;45;85000000
Ambrogio;BRAMBILLA;MILANO;20100;imprenditore;coniugato;54;125000000
Gennaro;ESPOSITO;NAPOLI;80100;artigiano;coniugato;37;42500000
Giovanni;COLOMBO;MILANO;20100;impiegato;celibe;22;32500000
Vincenzo;ROMANO;NAPOLI;80100;commerciante;coniugato;39;72000000
Nicola;NOTARANGELO;BARI;71100;operaio;coniugato;52;29500000
Daniele;MORIN;VENEZIA;30100;artigiano;celibe;27;48500000
Carmelo;PATERNO';PALERMO;90100;operaio;coniugato;35;31500000

header

<html>
<body>
<p>Esempio dell'utilizzo di mgrep.pl</p>
<p>Di seguito i record estratti dal database: <b>$datafile</b></p>

template

<hr />
<p><b>$cognome $nome</b>, $eta anni, $stato<br />
residente a $citta (cap $cap)<br />
professione $professione, reddito annuo L. $reddito</p>

footer

<hr />
<p>Estratti <b>$count</b> su <b>$recno</b> record esaminati.</p>
<p><small>Documento predisposto da Paolo Ciraci</small></p>
</body>
</html>

Fino al 2013 altri esempi pratici dell'uso di mgrep.pl erano disponibili su questo stesso sito come ad esempio il dizionario nautico oppure l'archivio delle emittenti meteofax che ora utilizzano differenti strumenti di gestione ed interrogazione.

Paolo Ciraci Paolo Ciraci - Guida MC-Web

Avvertenza

Si tenga presente che questa Guida è stata redatta all'inizio del 1996 e nonostante sia stata aggiornata più volte nel corso degli anni è possibile che alcune funzionalità descritte siano completamente obsolete oppure non siano più disponibili nelle soluzioni di hosting offerte attuamente da MC-link (ora IRIDEO). In ogni caso molte delle funzionalità descritte in queste pagine sono state utilizzate efficacemente su questo sito addirittura fino a giugno 2013 ad esempio per gestire il popolare dizionario nautico dei termini marinari italiani ed inglesi oppure l'archivio delle emittenti meteofax che hanno fatto uso efficacemente di mgrep.pl per l'interrogazione dei propri database.

K16PC71-articoli