[an error occurred while processing this directive]
diff logo Informatica e sistemi alternativi
su questo sito sul Web
    Home   Chi siamo    Contattaci    Scrivi per diff    Proponi un argomento 14/10/24
    Cos'è diff    Come accedere    F.A.Q.    Promuovi    Dicono di diff    Amici di diff    
AmigaOS
Linux
FreeBSD
BeOS
OpenSource
Java
Database
Informatica
Hardware
E-Commerce
Narrativa

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.


3.1 La pagina di scelta: index.html

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>


3.2 La pagina delle località: localita.phtml

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>







Giuseppe Sacco è laureato in Scienze dell'Informazione presso l'Ateneo di Pisa. In passato si è occupato di Amiga (è uno dei fondatori di IPISA) e di Interfacce Utente Grafiche. Attualmente lavora nell'ambito dei prodotti ERP e si sta specializzando in amministrazione di sistema con Oracle, Informix, Unix e Windows NT. Da sempre ha tenuto sott'occhio il movimento attorno a Linux con un particolare riguardo alla distribuzione Debian della quale è coordinatore della traduzione del sito web in italiano.

Puoi contattare l'autore scrivendo a:
gsacco@diff.org


Articoli dello stesso autore:
Introduzione ad Oracle8i
Il modello entità - relazioni
Pagine web dinamiche


 



© 1999,2000,2001,2002 NonSoLoSoft di Ferruccio Zamuner (Italia)- tutti i diritti sono riservati