3.4       visualizzare tutti i record di una tabella:

 

La prima applicazione di base che avrebbe dovuto essere realizzata era una pagina che permettesse all’utente di visualizzare tutti i record contenuti in una tabella.

 Per la tabella libri doveva essere scritta una procedura in Php che andasse a scorrere tutti i record del database bibliografiapiste e estraesse il contenuto di ciascun record secondo criteri prestabiliti e/o scelti dall’utente[1] ed infine generasse una o più pagine Html contenente/i i dati estratti da visualizzare sul Browser.

La procedura sarebbe stata costituita quindi da due parti principali:

 

Essa avrebbe poi ordinato tutti i record della tabella selezionata a seconda del criterio (stabilito dall’utente) ricevuto come variabile dal form di ordinamento, e quindi avrebbe estratto gli elementi ordinati caricandoli in una variabile locale.

 

Al suo interno vi sarebbe essa avrebbe richiamato la parte in Php come una funzione ritorsiva, e generando quindi i contenuti finali in base ai dati trasmessi dal richiamo degli script Php.

 

La procedura in Php avrebbe dovuto aprire una sessione di dialogo con il Database.[2]

Durante questa sessione di dialogo la procedura avrebbe dovuto, tramite le coordinate giuste, connettersi alla tabella desiderata, scorrerla tutta ed estrarre i  propri record salvando il proprio contenuto in una variabile locale.

Prima però di questo processo di salvataggio sarebbe stato necessario che, se vi fosse stato un criterio di ordinamento scelto dall’utente, la procedura ordinasse i record estratti secondo il criterio predefinito e poi salvasse i dati ordinati all’interno della variabile locale.

Gli script che avrebbero gestito il passaggio dei dati dalla tabella del database alla variabile locale non avrebbero eseguito il processo direttamente, cioè non avrebbero letto e copiato i dati contenuti nel database, ma avrebbero utilizzato degli array di appoggio: essi sarebbero stati tanti quanti i campi della tabella di cui avessimo desiderio di visualizzarne il contenuto,[3] ed avrebbero dovuto avere tanti elementi quanti i record contenuti all’interno della tabella.

Gli script di lettura(database) à scrittura (array) sarebbero stati inseriti all’interno di un ciclo, che gli avrebbero resi ricorsivi, e cioè gli avrebbero ripetuti sino a quando la tabella del database non fosse stata del tutto scorsa.

Ogni array avrebbe quindi contenuto al suo interno il valore del campo di una determinata riga, e quindi tutti gli array di una sessione di ciclo avrebbero rappresentato una riga (cioè un elemento) della tabella, e dunque alla conclusione di ogni ciclo sarebbe stato necessario salvare tutti i dati contenuti in ciascun array all’interno di una variabile.

La variabile, quindi, alla fine di ogni iterazione, avrebbe contenuto tutti i dati relativi ad un elemento della tabella, e quindi applicando la procedura alla tabella libri la variabile avrebbe contenuto la rappresentazione di un testo.

L’ordine con cui gli array sarebbero stati caricati all’interno della variabile avrebbe costituito l’ordine con cui, alla conclusione della procedura, sarebbero state visualizzate le diverse voci di ciascuna scheda bibliografica.

Ad esempio, se avessimo salvato nella variabile il valore dell’array autore e poi quello dell’array titolo, oppure ne avessimo invertito l’ordine, non avremmo ottenuto la stessa visualizzazione della scheda bibliografica.[4]

Il processo di salvataggio dei dati all’interno della variabile, avrebbe sopperito non solo al trasporto dei dati dal database verso la sua visualizzazione finale, ma anche all’ordinamento delle voci della scheda bibliografica (o di un toponimo o di un testo geroglifico); inoltre sarebbe stato necessario inserire adesso tutti i Tags Html necessari alla formattazione grafica del testo contenuto, soluzione non solo estetica, ma necessaria per una chiara comprensione del contenuto poi visualizzato.

Php riesce a rendere tutto questo processo di scripting del tutto invisibile all’utente, per il quale tutta questa parte di procedura, anche visualizzando il codice della pagina apparsa in layout sul proprio browser, sembrerà non esistere.

A questo punto, definite le tappe principali della procedura di visualizzazione di tutti i record di una tabella, sarebbe stato opportuna implementarla finalizzandola al caso specifico: la tabella libri.

 

3.4.3    visualizzazione dei documenti della bibliografia

 

La tabella libri, progettata precedentemente, sarebbe stata costituita da alcuni campi, dei quali quasi tutti avrebbero potuto essere considerati come possibili criteri per la costruzione di un indice utile alla consultazione dei documenti archiviati.

Come da progetto, sarebbe stato opportuno poter visualizzare ed ordinare tutti i documenti della bibliografia lasciando all’utente la scelta del campo che più ritenesse utile, e quindi, assunto quanto eseguito per la costruzione dell’indice dei testi geroglifici, sarebbe stato necessario realizzare tante pagine quanti fossero stati i campi adottabili come criterio d’ordinamento.

Questi ultimi consistevano in:

 

·              autore,

 

·              titolo

 

·              Isbn o Issn

 

·              tipo di documenti

 

·              soggetto

 

·              toponimi

 

·              data di pubblicazione

 

Sarebbe stato necessario costruire un menù iniziale dal quale l’utente avrebbe potuto scegliere il criterio di ordinamento dei record contenuti nella tabella libri.

Per ogni criterio vi sarebbe stata una pagina in Php che avrebbe generato la lista dei documenti orinandoli a seconda del campo selezionato dall’utente, e quindi vi sarebbe stata la pagina aut.php per un indice dei testi per autore, la pagina tit.php per ordinare i documenti per titolo, ecc…

Ognuna di queste pagine avrebbe dovuto connettersi alla tabella libri del database bibliografiapiste, ed estrarre tutti i record ivi archiviati, disponendoli secondo l’ordine prestabilito, e visualizzando tutti i dati della scheda bibliografia ad eccezione del campo abstract, che invece sarebbe stato rappresentato all’interno della pagina doc.php puntata da un link ipertestuale dinamico per ciascun record.

In pratica il campo abstract, avrebbe dovuto contenere un link dinamico che, in dipesa dal documento (elemento della tabella) al quale esso apparteneva, avrebbe puntato alla pagina doc.php passandole tramite variabile un identificativo (il campo id della tabella libri) per far in modo che doc.php selezionasse e dunque visualizzasse i valori archiviati di quel determinato elemento dalla tabella libri.

Potremmo dunque vedere le singole procedure di ordinamento dei testi, a parte per l’estrazione e la visualizzazione dei dati contenuti nella tabella, peculiari per la costruzione di un indice puntato e dinamico che avrebbe permesso una prima consultazione bibliografica più efficiente e meno appesantita dalle parti di testo costituenti i vari abstract dei testi rappresentati, anche perché sarebbe stato molto probabile che un utente, alla prima interrogazione dell’archivio, pur scegliendo l’ordinamento di tutto l’archivio, magari avrebbe desiderato consultarne il riassunto solo di alcuni.

Il sistema così creato avrebbe consentito la rappresentazione di tutti i documenti tramite una sola coppia di pagine dinamiche: la prima, dipendente dall’opzione di ordinamento preferita dall’utente (la chiameremo “scelta.php” che avrebbe potuto essere aut.php, tit.php, ecc…) scelta.php, avrebbe fornito la lista degli elementi, e la seconda doc.php avrebbe invece descritto l’elemento selezionato, sempre la stessa pagina con lo stesso codice, ma dai contenuti diversi a seconda dell’identificativo trasmesso da scelta.php.

Il cuore di questa struttura sarebbe stato dunque il processo di costruzione della lista dei testi: la variabile che avrebbe accolto il valore di abstract avrebbe dovuto ricevere il codice Html relativo alla creazione del link verso la pagina doc.php, e tramite lo script ?id=$id specificando a quale record della tabella libri la pagina doc.php avrebbe dovuto puntare.[5]

Ogni documento avrebbe dunque puntato alla pagina, doc.php, i cui contenuti sarebbero stati generati dinamicamente a seconda del campo id del documento stesso.

            Questa pagina avrebbe quindi dovuto essere costituita da una procedura capace di connessione alla tabella libri del database bliografiapiste, e tramite lo stesso ciclo di trasferimento dati database à array di appoggio à variabile di visualizzazione finale, avrebbe dovuto essere capace di estrarre il contenuto della scheda di ciascun documento e di generare il relativo link doc.php.

            La pagina  doc.php avrebbe dunque fornito la scheda completa del documento selezionato dall’utente, completa questa volta del campo abstract, ottimo strumento per la comprensione generale delle tematiche trattate.

Tramite questa struttura dinamica l’utente avrebbe la possibilità di visualizzare tutti i documenti della bibliografia praticamente secondo ogni campo della tabella libri, ciascuno dei quali utilizzabile come criterio di ordinamento degli stessi elementi.

 



[1] ordinare i record di una tabella secondo un determinato campo, e disporli poi in ordine alfabetico crescente o decrescente, ecc…

[2] Il dialogo tra Php e MySql è eseguibile tramite funzioni, ed inoltre è possibile inserire degli script capaci di controllare la buona riuscita dell’apertura di sessione, e di comunicare in caso di problemi la chiamata al database non eseguita. Per una sintassi sia in Php che in Sql è consigliabile consultare:

Php: http://www.php.net/manual/ con un elenco completo e dettagliato di funzioni, script e la loro sintassi

MySql: http://www.mysql.com/ , e http://www.thickbook.com/extra/php_datatypes.phtml per una lista completa dei tipi di dati supportati dal database , con relative dimensioni e restrizioni applicabili.

Le funzioni di Php che consentono la comunicazione con un Server di Database MySql sono comunque numerose, nel caso specifico è comunque opportuno limitarsi a citare le seguenti:

mysql_connect(“nomeserver”, “nomeutente”, “passwutente”), funzione che stabilisce una connessione con un Server di Database MySql, la cui sintassi richiede le coordinate del server, e quindi il suo nome o Host, ed i dati utente ossia Login e Password perché il Server conceda l’accesso o meno e stabilisca per la sessione avviata i permessi attribuiti al determinato utente. Per tutelare una possibile mancata connessione è possibile apporvi la funzione die(“messaggio”) che offre una vera e propria via di scampo in caso di situazione critica (come la funzione exit). In questo caso, se non riuscisse la connessione con il database, è possibile utilizzare questa riga di codice per visualizzare un messaggio personalizzato e, contemporaneamente fermare lo script di dialogo per evitare un possibile loop del sistema (un ciclo infinito). Nel caso specifico le due funzioni saranno accoppiate in questo modo: mysql_connect(“nomeserver”, “nomeutente”, “passwutente”) or die(“impossibile stabilire una connessione”).

[3] e quindi in questo caso tutti i campi delle tre tabelle escluso il campo id, che occorre solo per la gestione da parte dell’amministratore

[4] ricordiamo che ogni array contiene il valore di un campo di un record, e cioè una voce della scheda bibliografica di un testo archiviato, o di un toponimo o di un testo geroglifico

[5] In pratica la pagina doc.php può essere considerata come una sorta di maschera con delle fessure capaci di far trasparire tutti i dati di un solo documento. La selezione dell’utente di un testo dalla pagina scelta.php può invece essere vista come una mano che posiziona questa maschera, la cui posa viene dettata dal link ipertestuale nel codice ?id=$id in scelta.php.

Il codice del link ipertestuale è (nel caso in cui l’utente avesse deciso un ordinamento per titolo):

 $abstract = " <a href=\”doc.php?id=$id\>Visualizza una sommarizzazione del documento</a>";

dove $ abstract è la variabile finale che accoglierà il link ipertestuale dinamico,

$id è l’array che contiene il valore del campo id della tabella, ossia l’identificativo che permetterà la selezione di un determinato elemento,

il tag Html <a href=\”doc.php?id=$id\>Visualizza una sommarizzazione del documento</a> assegna un link ipertestuale che punta alla pagina doc.php riferito al testo (in questo caso) o più correttamente a ciò che precede il tag </a> con cui si interrompe il link ipertestuale, e quindi nel caso specifico, al valore contenuto nella variabile $id, mentre il codice ? assegna (operatore = ) ad una variabile locale, id, il valore contenuto nell’array $id, passandola come parametro alla pagina doc.php che si riferirà dunque all’elemento della tabella libri con campo id = al valore della variabile $id.

Quindi ipotizzando che il valore di $id fosse stato 3 link ipertestuale attribuito al campo abstract risulterebbe : <a href = doc.php?id=3> Visualizza una sommarizzazione del documento</a>.