Una semplice implementazione di pagine web dinamiche di Giuseppe Sacco
Il sito web
Supponiamo che la procedura di installazione di apache sia già stata fatta in
maniera standard e vediamo cosa si deve fare per modificarne la configurazione.
Innanzitutto sarà necessario attivare il php3 come modulo del server
web. Si aggiunga la linea
LoadModule php3_module /usr/lib/apache/1.3/libphp3.so
al file /etc/apache/httpd.conf; si aggiunga la linea
AddType application/x-httpd-php3 .phtml
al file /etc/apache/srm.conf per fare in modo che i file con
estensione phtml siano riconosciuti e trattati come file php3.
Infine si dovrà attivare il modulo per postgreSQL nel php3
tramite la linea
extension=/usr/lib/php3/apache/pgsql.so
nel file /etc/php3/apache/php3.ini.
A questo punto abbiamo tutti gli strumenti per poter ottenere delle pagine web
dinamiche legate alla base di dati. La struttura del sito web sarà la
seguente:
-
la pagina iniziale ospiterà la scelta tra le opzioni: vedere la lista di
appartamenti, vedere la lista di località, prenotare un'appartamento;
-
la pagina che elenca gli appartamenti chiederà se ordinarli diversamente e
provvederà a elencarli in maniera adeguata (per località, prezzo o postiletto);
-
la pagina delle località elenca le località in ordine alfabetico con annesso il
numero di appartamenti disponibili per quella località (le località vanno
mostrate solo se ci sono appartamenti in quella località: Chieri non dovrebbe
apparire);
-
una pagina per l'immissione dei dai relativi alla prenotazione;
-
la pagina delle prenotazioni prevede l'immissine di un cliente e di una
richiesta di prenotazione. Nel caso in cui il cliente esista allora basterà
inserirne il codice, altrimenti si dovranno inserire tutti i dati e il cliente
andrà inserito nella base di dati con la sua prenotazione. Se la prenotazioni
non va a buon fine (perché l'appartamento è già in uso) il cliente non va
memorizzato.
Questa è una normale pagina HTML che mostra un elenco con dei
link. Chiaramente dovrebbe essere abbellita con dei logo e altri
colori per essere resa accattivante. La pagina è stata disegnata con
il Netscape e il suo testo è il seguente:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.7 [en]
(X11; I; Linux 2.2.14 i586) [Netscape]">
<meta name="Author" content="Giuseppe Sacco">
<meta name="Description" content="Pagina 1">
</head>
<body>
<center>
<h1>
<font color="#FF6666">Benvenuti al servizio di prenotazioni
dell'agenzia <i>Diff<lt/i><lt/font><lt/h1><lt/center>
<p><ltbr>Da qui -- o meglio: da casa vostra -- potrete
tranquillamente prenotare la casa delle vostre vacanze dove
più vi piace!
<br>Se ancora non hai visto in quali località abbiamo
appartamenti allora vai subito alla <a href="localita.phtml">
pagina delle località<lt/a>,
e poi vai a vedere quali <a href="appartamenti.phtml
">appartamenti<lt/a> possiamo offrire.
<p>Se infine vorrai prenotare senza fare code all'agenzia
allora vai alla <a href="prenotazioni.html">pagina
delle prenotazioni<lt/a>.
</body>
</html>
Cominciamo col vedere la SELECT che ci permette di recuperare i
dati che interessano:
SELECT localita.Localita, count(*)
FROM localita,appartamento
WHERE appartamento.Localita = localita.ID
GROUP BY localita.Localita
HAVING count(*)>0
ORDER BY localita.Localita
e cominciamo a vedere il linguaggio php3. Ogni pagina con estensione
phtml viene fatta interpretare al modulo php3 dal server
web. La pagina può contenere istruzioni HTML miste a istruzioni
php3.
All'inizio metteremo l'intestazione HTML e poi, tramite il
tag <?php entreremo in modalità php3.
La struttura del programma è molto semplice:
-
effettuare la connessione con la base di dati;
-
eseguire la query;
-
create una tabella in cui, in ogni riga, si mostra la riga selezionata
corrispondente.
La pagina sarà quindi la seguente;
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<HTML><HEAD><H1>Lista delle località</H1></HEAD><BODY>
<?php
/* Connessione con la base di dati */
$cannot = 'Errore di collegamento alla base di dati';
$conID = pg_pconnect("localhost", "", "",
"", "case") or die($cannot);
/* selezione di tutte le località */
$qID = pg_exec($conID, "SELECT l.Localita, count(*) \
FROM localita l, appartamento a \
WHERE a.Localita = l.ID GROUP BY \
l.Localita HAVING count(*)>0 \
ORDER BY l.Localita") or die($cannot);
/* Qui comincia un ciclo che prende tutti i record
* restituiti dalla
* query e li mostra in una tabella HTML. */
$rows = pg_numrows($qID);
for ($i=0; $i < $rows; $i++) {
$row = pg_fetch_row($qID,$i);
if ($i==0) {
echo '<table NOSAVE BORDER=1>';
echo '<tr><td ALIGN=center><i>\
Nome località</i></td>\
<td ALIGN=center><i>\
Num. di appartamenti</i></td>\
</tr>';
}
echo "<tr><td>$row[0]</td>\
<td ALIGN=center>$row[1]</td></tr>";
}
if ($i>0)
echo '</table>';
pg_freeresult($qID);
?>
</BODY>
|