Come esempio si usa la scheda degli strumenti del database e in particolar modo quella della Macchina di Atwood, descrivendo i punti salienti di quel che succede senza tuttavia entrare nei dettagli del codice PHP e di quello MySQL, eccezion fatta per un brevissimo esempio (comunque le nozioni di base sono accessibili seguendo i link). A ogni modo, essendo il codice sempre lo stesso (a mutare sono solo i dati estratti di volta in volta dal database), quanto segue vale per qualsiasi strumento della collezione venga scelto.
Prima di procedere, giova richiamare il fatto che il PHP è scritto all'interno della pagina web sotto forma di blocchi. In altre parole e da un punto di vista del tutto generale, all'interno del codice HTML della pagina dinamica possono essere inserite anche diverse sezioni in PHP, ciascuna racchiusa tra specifici marcatori. Qualora il codice PHP desse come prodotto oggetti di una pagina web (menu a tendina, righe di tabelle, immagini), le corrispondenti righe PHP ne conterrebbero i comandi in HTML, che quindi devono essere scritti in modo formalmente corretto, pena la comparsa di errori vari al momento della lettura della pagina ad opera del Browser, chiaramente dopo che il pacchetto è stato confezionato e spedito dal server (si ricorda che il PHP è un linguaggio server-side).
Essendo richiesta la visualizzazione della scheda di uno strumento, tale richiesta dev'essere passata sotto forma di parametro perché dal database vengano estratti i relativi dati e solo quelli. Per raggiungere lo scopo ci si avvale della chiave dell'entità strumento (finale del link con la stringa "?Inv=126" avendo infatti la Macchina di Atwood Nº 126 nell'inventario del 1870). Il Browser passa quindi al server del Liceo la richiesta della pagina web "schedastrumento" => "scheda.phtml" passandogli anche la specifica "dello strumento 126" => "?Inv=126" (se non viene specificato nulla, allora un'apposita riga di codice impone che venga visualizzata di default la scheda dello strumento Nº 1).
Da questo momento in poi è il server del Liceo a lavorare, cioè a eseguire il codice PHP - MySQL nella pagina richiesta. Ecco in sequenza in forma semplificata le operazione più importanti che generano la pagina web.
- Connessione al database degli strumenti: sul server del Liceo sono ospitati diversi database. In questo caso ci si deve connettere a quello degli strumenti di fisica. L'autentificazione (nome utente e password) in questo caso avvengono in automatico, senza cioè che sia richiesta l'immissione di tali paramentri, essendo stato previsto un profilo utente con la possibilità di sola consultazione dei dati. Decisamente diversa è la connessione al database per tutti gli utenti con i diritti di transazione, per i quali è prevista l'immissione dei paramentri di autentificazione.
- Estrazione dei dati per il menu di selezione: tramite una query select sulla tabella relativa all'entità "strumento" si estraggono i numeri di inventario del 1870 con relativi nomi di tutti gli strumenti, ordinati secondo la preferenza espressa (per Nº inventario oppure per nome).
- Generazione del menu di selezione: in codice PHP vengono scritti i comandi HTML per la generazione del menu a tendina usando i dati estratti con la query precedente.
- Estrazione dei dati dello strumento: tramite una query select sulla tabella relativa all'entità "strumento" con condizione (restrizione sui dati) si estraggono tutti i dati di interesse della tupla corrispondente allo strumento richiesto (qui il Nº 126).
- Visualizzazione dei dati relativi all'entità strumento: con codice HTML inglobato nel PHP si genera la tabella con la quale visualizzare i dati dello strumento (fonti e prestiti esclusi) che sono stati estratti dal database. Dunque il codice istruisce il computer in modo che sulla prima riga della tabella sia visualizzato il nome dello strumento, sulla seconda riga la datazione e la fotografia, sulla terza il costruttore, se noto, ecc.
- Estrazione dei dati sulle fonti: tramite una query select sulle tabelle relative all'associazione "cita" e all'entità "strumento" (join) con apposita restrizione si estraggono le tuple con i dati caratterisitici delle fonti nelle quali è citato lo strumento richiesto (sempre il Nº 126) con l'aggiunta dei dati di specificazione della citazione (volume, pagina, ecc.).
Il codice per questa query è il seguente (tutti i nomi sono stati modificati rispetto a quelli effettivi per migliorarne la comprensione e la variabile $Inv per la macchina di Atwood vale '126'):
$fon = mysql_query("
SELECT *
FROM cita, fonte
WHERE Dispositivo = '$Inv' AND fonte.Numero_Riferimento_fonte = cita.Numero_Libro
ORDER BY fonte.Autore
");
|
- Visualizzazione dei dati sulle fonti: si prosegue la tabella visualizzando i dati estratti dal database con la query precedente. Essendoci in generale più citazioni, si scrivono i dati per mezzo di un ciclo while fino a che ci sono righe ancora da scrivere. Ovviamente se l'oggetto non è citato, questa sezione di visualizzazione viene saltata. Inoltre si deve tener conto (costrutti if) che in alcuni libri le "immagini" sono contenute in tavole in calce al volume, mentre in altri le figure sono intercalate nel testo e che un'opera può essere in più volumi (comparsa o meno delle scritte "Vol." e "Tav."). Il codice PHP di questa parte è qui sotto (si vede chiaramente - per chi ne sa riconoscere i tag s'intende - che c'è del codice HTML all'interno):
$contaf = mysql_num_rows($fon);
if ($contaf != 0) {
echo "<tr><th colspan='3'><a href='fonti.phtml'>Fonti</a></th></tr>";
echo "<tr><td colspan='3'><span style='font-size: 80%;'>";
while ($fonte = mysql_fetch_row($fon)){
echo "<b><a rel='nofollow' href='fonte.phtml?Numero_Riferimento_fonte=";
echo "$fonte[6]'>$fonte[7]</a></b>, <i>$fonte[8]</i>, $fonte[9], $fonte[10], $fonte[11], ";
if ($fonte[2] != '0') {
echo "Vol. $fonte[2], ";
}
echo "pag. $fonte[3], ";
if ($fonte[4] != '0') {
echo "TAV. $fonte[4], ";
}
echo "fig. $fonte[5].<br>";
}
echo "</span></td></tr>";
}
|
- Estrazione dei dati sui prestiti: tramite una query select sulle tabelle relative all'associazione "espone" e all'entità "strumento" (altra join tra tabelle) con apposita restrizione si estraggono le tuple con i dati caratterisitici della mostra e di uscita e di ritorno dello strumento richiesto. I dati di uscita e ritorno servono per far apparire in automatico (per semplice confronto tra le date estratte e la data corrente) una scritta che indica nella scheda la temporanea assenza dell'oggetto.
- Visualizzazione dei dati sui prestiti: sempre con codice HTML inglobato nel PHP si prosegue la tabella visualizzando i dati estratti dal database con la query precedente. Essendo in generale possibili più prestiti, si scrivono i dati per mezzo di un ciclo while fino a che ci sono righe ancora da scrivere. Ovviamente se l'oggetto non è mia stato prestato, questa sezione di visualizzazione viene saltata.
- Chiusura della connessione al database: tutti i dati di interesse sono stati estratti e preparati per la visualizzazione e la connessione al database degli strumenti non è più necessaria.
A questo punto il compito del server è finito, in quanto la lettura del codice PHP ha generato un pacchetto di dati che di fatto è una pagina web scritta esclusivamente in linguaggio HTML. Il server effettua dunque l'inoltro di tale pacchetto al computer del richiedente, il cui browser provvederà alla visualizzazione della pagina.
Se il navigatore desidera la scheda di un altro strumento, non deve far altro che selezionarlo nel menu a tendina. Automaticamente una nuova selezione nel menu a tendina provoca l'inoltro della richiesta della pagina al server del Foscarini, il quale provvederà a rileggere il codice PHP della pagina stessa secondo i nuovi parametri.