RELAZIONE ESPLICATIVA RELATIVA ALLA GESTIONE DI PORTI E TRATTE DI NAVIGAZIONE soluzione proposta da Codazzi Mattia – 5^ A mercurio




Traccia del problema

            Creare e popolare le seguenti tabelle. Scegliere gli appropriati domini per gli attributi di ciascuna tabella. Creare gli appropriati vincoli interrelazionali e intrarelazionali.

- Tabelle popolate
BARCA

NOME
TARGA
LUNGHEZZA
ANNO_FABBRICAZIONE
Nettuno
Roma2134
12
1998
Vento
Roma3578
13,5
1954
Luna Rossa
Genoa234
10
1490
Azzurra
Genoa725
18,7
1600
Leggera
Bari89212
15
1995
Delfino
Napoli98
22
1997
Vespucci
Venezia12
87
1894
Ninetta
Genoa156
54
1978
Garibaldi
Napoli32
123
2003



SOSTA

BARCA
PORTO
POSTO
BANCHINA
DATA_ARRIVO
DATA_PARTENZA
Roma2134
Roma
2
AS
01/12/2004
03/12/2004
Roma3578
Napoli
4
C
05/06/2006
NULL
Genoa234
Roma
6
F
08/01/2004
17/03/2004
Genoa725
Genova
3
C
05/11/2005
02/02/2006
Bari89212
Genova
5
AS
04/08/2005
12/11/2005
Genoa234
Venezia
3
R
03/07/2006
NULL
Genoa725
Venezia
2
S
15/12/2007
17/12/2007
Bari89212
Roma
7
AS
25/03/2006
04/04/2006



POSTOBARCA

PORTO
NUMERO
BANCHINA
MENSILE
GIORNALIERO
Roma
2
AS
500
20
Roma
7
AS
572
40
Roma
6
F
620
43
Genova
3
C
150
47
Genova
5
AS
300
81
Venezia
3
R
400
98
Venezia
2
S
450
50
Napoli
1
C
321
15
Napoli
4
C
745
95



TRATTA_TRAGHETTI

DAPORTO
APORTO
BARCA
Cagliari
Civitavecchia
Roma2134
Civitavecchia
Cagliari
Roma2134
Civitavecchia
Palermo
ari89212
Palermo
Civitavecchia
Bari89212
Roma
Napoli
Genoa725
Napoli
Roma
Genoa725
Venezia
Genova
Genoa234
Palermo
Genova
Napoli98
Genova
Venezia
Genoa234



PORTO

NOME
REGIONE
Cagliari
Sardegna
Civitavecchia
Lazio
Palermo
Sicilia
Roma
Lazio
Napoli
Campania
Venezia
Veneto
Genova
Liguria



Creare i comandi SQL per poter erseguire l'inserimento, la modifica e la cancellazione dei dati all'interno del database e i comandi relativi alle interrogazioni, all'inserimento e all'eliminazione di seguito indicati.
-        Trovare il nome delle barche fabbricate nel 2003
-        Trovare il nome del porto e la targa delle barche sostate nel 2004
-        Trovare le barche più lunghe di 10 metri costruite prima del 1900
-        Elencare tutti i posti barca del porto di Roma
-        Elencare la banchina, il numero di posto e la targa delle barche in sosta
-        Elencere i nomi dei porti di partenza per i traghetti
-        Stampare la lunghezza in 'piedi' delle barche (1m = 3,2808 piedi)
-        Inserisci la data di partenza della barca con targa 'Genoa234'
-        Elimina da 'postobarca' tutti i posti barca del porto di 'Venezia'

Analisi di massima

            Per risolvere il problema proposto è stato innanzitutto realizzato un database contenente le tabelle con i dati richiesti all'interno dell'applicazione PHP denominata phpMyAdmin che permette la gestione di database di MySQL.
            Per permettere l'interfacciamento con il database realizzato è stato dunque creato un sito web, basato su un template già definito, costituito da una serie di pagine sia in codice HTML che in linguaggio di programmazione PHP così da poter essere in grado di inserire, modificare, cancellare e consultare le varie informazioni della base di dati in modo semplice ed intuitivo.

Programma e file

NOME PROGRAMMA: Gestione porti


FILE UTILIZZATI DAL PROGRAMMA
INSERIMENTO
MODIFICA
CANCELLAZIONE
COMANDI SQL
barche.html
mbarche.php
cbarche.php
queri1.php
barche.php
mbarche1.php
cbarche1.php
queri2.php
porti.html
mbarche2.php
cporti.php
queri3.php
porti.php
mporti.php
cporti1.php
queri4.php
tratte_traghetti.php
mporti1.php
ctratte_traghetti.php
queri5.php
tratte_traghetti1.php
mporti2.php
ctratte_traghetti1.php
queri6.php
postibarca.php
mtratte_traghetti.php
cpostibarca.php
queri7.php
postibarca1.php
mtratte_traghetti1.php
cpostibarca1.php
modifica1.php
soste.php
mtratte_traghetti2.php
csoste.php
modifica2.php
soste1.php
mpostibarca.php
csoste1.php
cancellazione1.php

mpostibarca1.php



mpostibarca2.php



msoste.php



msoste1.php



msoste2.php




            Per poter utilizzare il programma ci si è serviti del software EasyPHP, il quale consente il funzionamento a livello locale degli script PHP. Tale software, installato su un elaboratore avente come sistema operativo Windows XP, comprende il webserver Apache e il database server MySQL, gestito quest'ultimo mediante l'interfaccia phpMyAdmin.
            Attraverso una classica procedura guidata viene subito installato tutto quanto compone la semplice piattaforma di sviluppo web. Il server Apache crea automaticamente un dominio virtuale in locale  all'indirizzo di localhost e dunque, salvando il programma realizzato all'interno della cartella www presente, a sua volta, nella cartella del software EasyPHP, risulta possibile interfacciarsi con le pagine web create digitando nella barra degli indirizzi di un qualunque browser http://127.0.0.1/ seguito dal nome della homepage del programma o della cartella che lo contiene.





Analisi di dettaglio

            Qui di seguito viene proposto il modello relazionale del database che si intende creare (le chiavi primarie sono indicate in corsivo, mentre la chiavi esterne sono quelle da cui partono le frecce).


Barche (Nome, Targa, Lunghezza, Anno_fabbricazione)

Porti (Nome, Regione)

Tratte_traghetti (Daporto, Aporto, Barca)
                         
Postibarca (Porto, Numero, Banchina, Mensile, Giornaliero)
                 
Soste (Barca, Porto, Posto, Banchina, Data_arrivo, Data_partenza)

Barche

NOME
TIPO
LUNGHEZZA
NOTE
Nome
varchar
X(50)

Targa
varchar
X(20)
Chiave primaria
Lunghezza
decimal
9(4)v9(2)

Anno_fabbricazione
int
9(4)



Porti

NOME
TIPO
LUNGHEZZA
NOTE
Nome
varchar
X(50)
Chiave primaria
Regione
varchar
X(50)


           
Tratte-traghetti

NOME
TIPO
LUNGHEZZA
NOTE
Daporto
varchar
X(50)

Chiave primaria composta
Aporto
varchar
X(50)
Barca
varchar
X(20)


Postibarca

NOME
TIPO
LUNGHEZZA
NOTE
Porto
varchar
X(50)

Chiave primaria composta
Numero
int
9(2)
Banchina
varchar
X(2)
Mensile
float
9(3)v9(2)

Giornaliero
float
9(2)v9(2)




Soste

NOME
TIPO
LUNGHEZZA
NOTE
Barca
varchar
X(20)

Chiave primaria composta
Porto
varchar
X(50)
Posto
int
9(2)
Banchina
varchar
X(2)
Data_arrivo
date
9(4)-9(4)-9(2)
Data_partenza
date
9(4)-9(4)-9(2)




            Quelli sotto riportati sono i comandi SQL necessari per la creazione del database e delle relative tabelle all'interno delle quali inserire i dati richiesti, dati i cui nome, tipo e grandezza sono chiaramente indicati nel codice.


CREATE DATABASE `gestione_porti`;

USE `gestione_porti`;

CREATE TABLE IF NOT EXISTS `barche` (
  `Nome` varchar(50) NOT NULL,
  `Targa` varchar(20) NOT NULL,
  `Lunghezza` decimal(4,1) NOT NULL,
  `Anno_fabbricazione` int(4) NOT NULL,
  PRIMARY KEY (`Targa`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `porti` (
  `Nome` varchar(50) NOT NULL,
  `Regione` varchar(50) NOT NULL,
  PRIMARY KEY (`Nome`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `tratte_traghetti` (
  `Daporto` varchar(50) NOT NULL,
  `Aporto` varchar(50) NOT NULL,
  `Barca` varchar(20) NOT NULL,
  PRIMARY KEY (`Daporto`,`Aporto`,`Barca`),
  FOREIGN KEY (`Daporto`) REFERENCES Porti (`Nome`)
            ON DELETE CASCADE
            ON UPDATE CASCADE,
  FOREIGN KEY (`Aporto`) REFERENCES Porti (`Nome`)
            ON DELETE CASCADE
            ON UPDATE CASCADE,
  FOREIGN KEY (`Barca`) REFERENCES Barche (`Targa`)
            ON DELETE CASCADE
            ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `postibarca` (
  `Porto` varchar(50) NOT NULL,
  `Numero` int(2) NOT NULL,
  `Banchina` varchar(2) NOT NULL,
  `Mensile` float(5,2) NOT NULL,
  `Giornaliero` float(4,2) NOT NULL,
  PRIMARY KEY (`Porto`,`Numero`,`Banchina`),
  FOREIGN KEY (`Porto`) REFERENCES Porti (`Nome`)
            ON DELETE CASCADE
            ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `soste` (
  `Barca` varchar(20) NOT NULL,
  `Porto` varchar(50) NOT NULL,
  `Posto` int(2) NOT NULL,
  `Banchina` varchar(2) NOT NULL,
  `Data_arrivo` date NOT NULL,
  `Data_partenza` date DEFAULT NULL,
  PRIMARY KEY (`Barca`,`Porto`,`Posto`,`Banchina`,`Data_arrivo`),
  FOREIGN KEY (`Barca`) REFERENCES Barche (`Targa`)
            ON DELETE CASCADE
            ON UPDATE CASCADE,
  FOREIGN KEY (`Porto`,`Posto`,`Banchina`) REFERENCES Postibarca (`Porto`,`Numero`,`Banchina`)
            ON DELETE CASCADE
            ON UPDATE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
                  

            Come si può notare leggendo il codice SQL, per tutte le tabelle create è stato definito il motore di memorizzazione InnoDB, il quale garantisce il rispetto del vincolo di integrità referenziale. Ciò significa che qualunque dato rappresentante una chiave esterna all'interno di una tabella, per poter esistere, deve necessariamente essere presente anche all'interno della tabella principale a cui la chiave esterna stessa si riferisce; diversamente, infatti, il dato non potrebbe essere definito.
            Relativamente alle chiavi esterne, per ognuna di esse sono state mpostate le opzioni ON UPDATE CASCADE e ON DELETE CASCADE. In questo modo, dunque, in caso di modifica o di cancellazione di chiavi primarie a cui si riferiscono una o più chiavi esterne, si ha l'automatica modifica (o l'automatica cancellazione) di tutte le chiavi esterne stesse all'interno delle varie tabelle.

Inserimento
            Per l'inserimento dei dati all'interno delle tabelle, nella home page del sito web sono stati previsti 5 collegamenti ipertestuali (1 per ogni tabella) ognuno dei quali indirizza l'utente ad una pagina in cui si visualizza direttamente un modulo form da utilizzare per la digitazione delle informazioni che si desiderano siano inserite in una tupla della tabella nel database.
            Una volta completata la digitazione e premuto il tasto di invio, i dati vengono inviati ad un programma in PHP attraverso l'istruzione $_POST e vengono spostati all'interno di alcune variabili.      A questo punto si verifica che il contenuto di ciascuna variabile sia rispettoso dei limiti e della tpologia di dato definiti nella tabella in cui il dato stesso vuole essere inserito e, in caso affermativo, si procede alla connessione al database per mezzo dell'istruzione mysql_connect(“127.0.0.1”,“root”), si inserisce all'interno di una variabile l'istruzione SQL per l'inserimento e si procede all'esecuzione del comando per mezzo dell'istruzione PHP mysql_db_query(“nome_database”,nome_variabile_istruzione). Per verificare che il comando risulta eseguito, si fa ricorso al comando mysql_affected_rows. Se il comando risulta correttamente eseguito, si visualizza a video il record inserito, altrimenti viene mostrato un messaggio di errore. Si procede infibe alla chiusura della connessione al database per mezzo dell'istruzione mysql_close.

            Il comando SQL utilizzato per inserire i dati presenta la seguente sintassi:

INSERT nometabella [(nomecolonna1 {, nomecolonna2})]
      VALUES (valore1 {, valore2})

            Per quelle tabelle in cui sono definite delle chiavi esterne, l'inserimento viene facilitato prevedendo per ciascun dato rappresentante una chiave esterna un menu a tendina nel quale vengono inseriti esclusivamente i dati prelevati dalla colonna della tabella principale cui la chiave esterna si riferisce. In tal modo, si impedisce all'utente di inserire dati errati che, in conseguenza del vincolo di integrità referenziale, verrebbero certamente rifiutati.

            Il comando SQL utilizzato per prelevare i dati da una tabella presenta la seguente sintassi:

SELECT [DISTINCT] nomecolonna1 {, nomecolonna2}
       FROM nometabella1 {, nometabella2}

            Per fare in modo che tali dati siano mostrati all'interno del menu a tendina si fa ricorso all'istruzione mysql_result che, opportunamente combinata con un ciclo for, permette di reperire i dati desiderati dal database cosicchè sia possibile passarli all'interno di variabili per la visualizzazione.

Modifica
            Esattamente come per l'inserimento, anche per la modifica dei dati vengono predispose cinque distinte pagine web richiamabili dalla home page attraverso dei collegamenti ipertestuali.
            Selezionando il link relativo alla tabella di cui si vogliono modificare i dati, viene visualizzata a video una tabella all'interno della quale sono predisposte ordinatamente le tuple della tabella del database. Per ottenere tale risultato, ci si serve di un programma PHP costruito come spiegato in precedenza, all'interno del quale, per il reperimento dei dati dal database e la loro visualizzazione, ci si serve del comando SQL SELECT  e dell'istruzione PHP mysql_result.
            Per ogni tupla riportata a video, viene inserito a fianco un bottone radio, definito all'interno di un modulo form, che permette la selezione del record che si vuole modificare. Ogni bottone, infatti, porta al suo interno il valore (chiave primaria singola) o i valori (chiave primaria multipla) che permettono di identificare univocamente ciascun record. Dunque, una volta selezionato il bottone e premuto il pulsante di invio, i valori memorizzati vengono trasmessi ad un'altra pagina PHP dove vengono utilizzati all'interno di un comando SELECT per definire la condizione di ricerca, la quale, subito dopo la clausola FROM, viene introdotta dalla parola chiave WHERE.
            Procedento in tal modo, i dati del record da modificare vengono recuperati dal database in modo tale da poter essere inseriti all'interno di alcuni campi testo di un modulo form agendo sui quali l'utente può apportare i cambiamenti opportuni.
            Effettuata la modifica, i nuovi dati e, attraverso una variabile nascosta, i valori contenuti nel radio button necessari per l'identificazione del record, possono essere trasmessi ad un'ultima pagina PHP dove vengono utilizzati per portare a compimento la modifica. Se non vi sono stati errori, il programma si conclude con una visualizzazione a video del record modificato.
            Ovviamente, tenuto conto del vincolo di integrità referenziale, record contenenti dati rappresentanti chiavi esterne non possono in alcun modo essere modificati.

            Il comando SQL utilizzato per modificare i dati presenta la seguente sintassi:

UPDATE nometabella
       SET nomecolonna1=valorecolonna {, nomecolonna2=valorecolonna}
       [WHERE <condizionerierca>]

Cancellazione
            Per procedere alla cancellazione dei dati si procede in modo molto simile a quanto fatto per la modifica. Come in precedenza, infatti, per mezzo di collegamenti ipertestuali predisposti nella home page, è possibile visualizzare a video la tabella con i relativi bottoni radio che si riferisce alla tabella contenuta nel database sulla quale si desidera agire. Per procedere alla cancellazione dei dati di un record è dunque sufficiente selezionare il bottone che si trova a fianco del record stesso e premere l'apposito pulsante.
            A questo punto, i valori che identificano univocamente il record e che risultano associati al bottone radio, vengono trasmessi ad un programma in PHP e, spostati all'interno di una o più variabili, vengono impiegati come condizione di ricerca nel comando SQL definito per la cancellazione. Se il passaggio viene eseguito in maniera corretta, si visualizza a video la tabella su cui si è agito così da poter constatare l'avvenuta cancellazione.
            A differenza che nella modifica, record contenenti chiavi esterne possono essere modificati senza alcun problema in quanto, in tal senso, il vincolo di integrita referenziale non risulta in alcun modo violato.

            Il comando SQL utilizzato per cancellare i dati presenta la seguente sintassi:

DELETE FROM nometabella
        [WHERE <condizionericerca>]

Consultazione
            Per ognuna delle query richieste é stato predisposto nella home page sito web un collegamento ipertestuale selezionando il quale è possibile visualizzare direttamente a video il risultato. Come in tutti i casi precedentemente illustrati, anche per l' esecuzione delle query ci si è serviti di programmi scritti in codice PHP e dunque i relativi comandi SQL sono stati inseriti all'interno di variabili e sono stati gestiti come è stato spiegato all'inizio.
            Qui di seguito vengono dunque riportate le interrogazioni SQL che restituiscono le informazioni richieste.

-        Trovare il nome delle barche fabbricate nel 2003
                       
            SELECT nome
            FROM barche
            WHERE anno_fabbricazione=2003


-        Trovare il nome del porto e la targa delle barche sostate nel 2004

            SELECT barca, porto
            FROM soste
            WHERE data_arrivo BETWEEN '2004-01-01' AND '2004-12-31'



-        Trovare le barche più lunghe di 10 metri costruite prima del 1900

            SELECT nome, targa
            FROM barche
            WHERE lunghezza > 10 AND anno_fabbricazione < 1900


-        Elencare tutti i posti barca del porto di Roma

            SELECT numero, banchina, mensile, giornaliero
            FROM postibarca
            WHERE porto='Roma'


-        Elencare la banchina, il numero di posto e la targa delle barche in sosta

            SELECT banchina, posto, barca
            FROM soste
            WHERE data_partenza IS NULL


-        Elencere i nomi dei porti di partenza per i traghetti

            SELECT DISTINCT daporto
            FROM tratte_traghetti


-        Stampare la lunghezza in 'piedi' delle barche (1m = 3,2808 piedi)

            SELECT nome, targa, lunghezza*3.2808 AS 'lunghezza (in piedi)'
            FROM barche

Modifica richiesta

-        Inserisci la data di partenza della barca con targa 'Genoa234'

            Per eseguire l'inserimento sopra indicato, viene prevista una pagina in cui, dopo aver selezionato la data di arrivo attraverso il comando SELECT, essa viene mandata a video. Al di sotto di tale data viene invece predisposto un modulo form con un campo testo in cui inserire la data digitata che, ovviamente, deve risultare successiva a quella sopra visualizzata, inserita appunto per facilitare l'utente nella compilazione.
            Il comando SQL eseguito nella pagina PHP successiva per effettuare la modifica è il seguente (la variabile $data contiene la data digitata e inviata al programme):

            UPDATE soste
            SET data_partenza='$data'
            WHERE barca='Genoa234' AND data_partenza IS NULL





Cancellazione richiesta

-        Elimina da 'postobarca' tutti i posti barca del porto di 'Venezia'

            Per l'esecuzione della cancellazione sopra indicata si è proceduto esattamente come è stato spiegato in precedenza. In particolare, il comando inserito nella pagina PHP è il seguente:

            DELETE FROM postibarca
            WHERE porto='Venezia'

            In conclusione si riporta a titolo di esempio il codice PHP, SQL e, in alcune pagine, HTML utilizzato per agire sulla tabella BARCHE sia in inserimento, sia in modifica, sia in cancellazione.


INSERIMENTO

barche.html
<html>
                        <body>
                                                <h3><strong><u>Inserimento dati nella tabella 'BARCHE'</u></strong></h3>
                                               <i>Inserire i dati nel modulo form e premere il pulsante per l'invio</i></h3>
                                                  <form action="barche.php" method="POST"><p>
                                                                       <input name="nome"> Nome<p>
                                                                       <input name="targa"> Targa<p>
                                                                       <input name="lunghezza"> Lunghezza <font size='1'>(nnnn.n)</font><p>
                                                                       <input name="anno_fabbricazione"> Anno di fabbricazione<p>
                                                                       <center><input type="submit" value="Inviare">&nbsp;&nbsp;
                                                                       <input type="reset" value="Cancellare"></center>
                                                 </form>
                        </body>
</html>

barche.php
<html>
                        <body>
                                               <?php
                                                                       // Inizializzazione delle variabili.
                                                                       $nome=$_POST['nome'];
                                                                       $targa=$_POST['targa'];
                                                                       $lunghezza=$_POST['lunghezza'];
                                                                       $anno_fabbricazione=$_POST['anno_fabbricazione'];
                                                                                                                                                                                                                   
                                                                       // Connessione al database MySQL
                                                                       $db=mysql_connect("localhost","root");

                                                                       $sqlinterr="insert barche ";
                                                                       $sqlinterr.="(nome, targa, lunghezza, anno_fabbricazione) ";
                                                                       $sqlinterr.="values ('$nome', '$targa', $lunghezza, $anno_fabbricazione)";
                                                                      
                                                                       $res=mysql_db_query("gestione_porti",$sqlinterr);
                                                                       $num=mysql_affected_rows();

                                                                       if ($num>0) {
                                                                                              echo "<font size='4'><center><i><strong>Nella tabella 'BARCHE' &egrave; stato inserito il seguente nuovo record</strong></i></center></font><p><br><p>";
                                                                                              echo "            <table border='2' align='center' width=100%>
                                                                                                                                             <tr>
                                                                                                                                                                     <td width=25%><center>NOME</center></td>
                                                                                                                                                                     <td width=25%><center>TARGA</center></td>
                                                                                                                                                                     <td width=25%><center>LUNGHEZZA</center></td>
                                                                                                                                                                     <td width=25%><center>ANNO DI FABBRICAZIONE</center></td>
                                                                                                                                             </tr>             
                                                                                                                                             <tr>
                                                                                                                                                                     <td><center>$nome</center></td>
                                                                                                                                                                     <td><center>$targa</center></td>
                                                                                                                                                                     <td><center>$lunghezza</center></td>
                                                                                                                                                                     <td><center>$anno_fabbricazione</center></td>
                                                                                                                                             </tr>
                                                                                                                      </table>";
                                                                       }                                            
                                                                       else {
                                                                                              if ($nome=='' && $targa=='' && $lunghezza=='' && $anno_fabbricazione=='') echo "<h2><center><i>ERRORE!! Non &egrave; stato inserito alcun dato.<br> Si prega di ripetere l'inserimento.</i></center></h2>";
                                                                                             
                                                                                              else if ($targa=='' && ($nome<>'' || $lunghezza<>'' || $anno_fabbricazione<>'')) echo "<h2><center><i>ERRORE!! La targa identificativa non &egrave; stata inserita.<br> Si prega di ripetere l'inserimento.</i></center></h2>";
                                                                                             
                                                                                              else echo "<h2><center><i>ERRORE!! La targa inserita &egrave; gi&agrave; presente nella tabella.<br> Si prega di ripetere l'inserimento.</i></center></h2>";
                                                                       }                                                                    
                                                                       mysql_close($db)
                                               ?>
                        </body>
</html>


MODIFICA

mbarche.php
<html>
                        <body>
                                               <form action="mbarche1.php" method="POST">
                                                                       <?php
                                                                                              // Connessione al database MySQL
                                                                                              $db=mysql_connect("localhost","root");

                                                                                              // Creazione dell'interrogazione                                 
                                                                                              $sqlinterr="select * from barche";
                                                                      
                                                                                              $res=mysql_db_query("gestione_porti",$sqlinterr);
                                                                                              $num=mysql_num_rows($res);
                                                                                             
                                                                                              echo "            <i>Selezionare il record che si intende modificare</i></h3><div class='clear'> </div>
                                                                                                                                             <table border='2' align='center' width=100%>
                                                                                                                                                                     <tr>
                                                                                                                                                                                            <td width=10%><center>Selezione</center></td>
                                                                                                                                                                                            <td width=20%><center>NOME</center></td>
                                                                                                                                                                                            <td width=20%><center>TARGA</center></td>
                                                                                                                                                                                            <td width=25%><center>LUNGHEZZA</center></td>
                                                                                                                                                                                            <td width=25%><center>ANNO DI FABBRICAZIONE</center></td>
                                                                                                                                                                     </tr>";
                                                                                                                                             // Visualizzazione dei record inseriti
                                                                                                                                             for ($i=0;$i<$num;$i++) {
                                                                                                                                                                     $nome=mysql_result($res,$i,"nome");
                                                                                                                                                                     $targa=mysql_result($res,$i,"targa");
                                                                                                                                                                     $lunghezza=mysql_result($res,$i,"lunghezza");
                                                                                                                                                                     $anno_fabbricazione=mysql_result($res,$i,"anno_fabbricazione");
                                                                                                                     
                                                                                                                                                                     // Visualizazione dei record trovati
                                                                                                                                                                     echo "            <tr>
                                                                                                                                                                                                                    <td><center><input type='radio' name='selezi' value='$targa'></center></td>
                                                                                                                                                                                                                    <td><center>$nome</center></td>
                                                                                                                                                                                                                    <td><center>$targa</center></td>
                                                                                                                                                                                                                    <td><center>$lunghezza</center></td>
                                                                                                                                                                                                                    <td><center>$anno_fabbricazione</center></td>
                                                                                                                                                                                            </tr>";
                                                                                                                                             }
                                                                                                                                             echo "</table>";
                                                                                              // Chiusura del database MySQL
                                                                                              mysql_close($db);
                                                                       ?>
                                                                       <p>
                                                                       <center><input type="submit" value="Visualizzare il record"></center>
                                               </form>
                        </body>
</html>


mbarche1.php
<html>
                        <body>
                                                <?php
                                                                       // Verifica che l'utente abbia scelto un record da modificare
                                                                       if (isset($_POST['selezi']))
                                                                                              $selezi=$_POST['selezi'];
                                                                       else $selezi='';

                                                                       if ($selezi) {
                                                                                              // Connessione al DB mysql
                                                                                              $db=mysql_connect("localhost","root");
                       
                                                                                              // Creazione dell'interrogazione per estrapolare il record selezionato
                                                                                              $sqlinterr="select * from barche";
                                                                                              $sqlinterr.=" where targa='$selezi'";

                                                                                              //Esecuzione del comando select
                                                                                              $res=mysql_db_query("gestione_porti",$sqlinterr);

                                                                                              // Risultato dell'interrogazione
                                                                                              $nome_old=mysql_result($res,0,"nome");
                                                                                              $targa_old=mysql_result($res,0,"targa");
                                                                                              $lunghezza_old=mysql_result($res,0,"lunghezza");
                                                                                              $anno_fabbricazione_old=mysql_result($res,0,"anno_fabbricazione");

                                                                                              echo "<font size=4><i>Eseguire le modifiche e premere il pulsante per la conferma</i></font><p><br>";
                                                                                              echo "<form action='mbarche2.php' method='POST'>";
                                                                                                                      // Modifica dei valori
                                                                                                                      echo "<input name='nome_new' value='$nome_old'>";
                                                                                                                      echo " Nome barca<p>";
                                                                                                                      echo "<input name='targa_new' value='$targa_old'>";
                                                                                                                      echo " Targa<p>";
                                                                                                                      echo "<input name='lunghezza_new' value='$lunghezza_old'>";
                                                                                                                      echo " Lunghezza<p>";
                                                                                                                      echo "<input name='anno_fabbricazione_new' value='$anno_fabbricazione_old'>";
                                                                                                                      echo " Anno di fabbricazione<p><br>";
                                                                                                                      echo "<input type='hidden' name='targa_origine' value='$selezi'>";
                                                                                                                      echo "<input type='submit' value='Salvare le modifiche'>&nbsp;&nbsp;";
                                                                                                                      echo "<input type='reset' value='Cancellare'>";
                                                                                              echo "</form>";

                                                                                              // Chiusura di mysql
                                                                                              mysql_close($db);
                                                                       }
                                                                       else echo "<h2><center><i>ERRORE!! Non &egrave; stato selezionato nessun record.<br> Si prega di ripetere l'operazione.</i></center></h2>";
                                               ?>
                        </body>
</html>


mbarche2.php
<html>
                        <body>
                                                <?php
                                                                       // Inizializzazione variabili
                                                                       $nome_new=$_POST['nome_new'];
                                                                       $targa_new=$_POST['targa_new'];
                                                                       $lunghezza_new=$_POST['lunghezza_new'];
                                                                       $anno_fabbricazione_new=$_POST['anno_fabbricazione_new'];
                                                                       $targa_origine=$_POST['targa_origine'];

                                                                       if ($targa_new=='') {
                                                                                              echo "<h2><center>Errore!! La targa della barca (chiave primaria) non &egrave; stato inserita. Il record non pu&ograve; essere aggiornato.</center></h2><p>";
                                                                                              echo "<center><form action='mbarche1.php' method='POST'>";
                                                                                              echo "<input type='hidden' name='selezi' value='$targa_origine'>";
                                                                                              echo "<input type='submit' value='Torna indietro'>";
                                                                                              echo "</form></center>";
                                                                       }
                                                                       else {
                                                                                              // Connessione al DB mysql
                                                                                              $db=mysql_connect("localhost","root");

                                                                                              // Creazione dell'interrogazione di modifica
                                                                                              $sqlinterr="update barche set ";
                                                                                              $sqlinterr.="nome='$nome_new', ";
                                                                                              $sqlinterr.="targa='$targa_new', ";
                                                                                              $sqlinterr.="lunghezza=$lunghezza_new, ";
                                                                                              $sqlinterr.="anno_fabbricazione=$anno_fabbricazione_new ";
                                                                                              $sqlinterr.="where targa='$targa_origine'";
                                              
                                                                                              mysql_db_query("gestione_porti",$sqlinterr);
                                                                                              // Verifica che il record è stato modificato
                                                                                              $num=mysql_affected_rows();
                                                                                                                      if ($num>0) {
                                                                                                                                             $sqlinterr0="select * from barche ";
                                                                                                                                             $sqlinterr0.="where targa='$targa_new'";
                                                                      
                                                                                                                                             $res0=mysql_db_query("gestione_porti",$sqlinterr0);
                                                                      
                                                                                                                                             // $num=n. record restituiti dalla interrogazione (query)
                                                                                                                                             $num0=mysql_num_rows($res0);
                                                                                                                                            
                                                                                                                                             $nome=mysql_result($res0,0,"nome");
                                                                                                                                             $targa=mysql_result($res0,0,"targa");
                                                                                                                                             $lunghezza=mysql_result($res0,0,"lunghezza");
                                                                                                                                             $anno_fabbricazione=mysql_result($res0,0,"anno_fabbricazione");
                                                                                             
                                                                                                                                              echo "<font size='4'><center><i><strong>Il record &egrave; stato modificato con successo</strong></i></center></font><p><br><p>";                                                                                    
                                                                                                                                              echo "           <table border='2' align='center' width=100%>
                                                                                                                                                                                            <tr>
                                                                                                                                                                                                                    <td width=25%><center>NOME</center></td>
                                                                                                                                                                                                                    <td width=25%><center>TARGA</center></td>
                                                                                                                                                                                                                    <td width=25%><center>LUNGHEZZA</center></td>
                                                                                                                                                                                                                    <td width=25%><center>ANNO DI FABBRICAZIONE</center></td>
                                                                                                                                                                                            </tr>
                                                                                                                                                                                            <tr>
                                                                                                                                                                                                                    <td><center>$nome</center></td>
                                                                                                                                                                                                                    <td><center>$targa</center></td>
                                                                                                                                                                                                                    <td><center>$lunghezza</center></td>
                                                                                                                                                                                                                    <td><center>$anno_fabbricazione</center></td>
                                                                                                                                                                                            </tr>
                                                                                                                                                                     </table>";
                                                                                                                      }                                            
                                                                                                                      else {
                                                                                                                                             echo "<h2><center>Il record non ha subito modifiche</center></h2><p>";

                                                                                                                                             echo "<center><form action='mbarche1.php' method='POST'>";
                                                                                                                                             echo "<input type='hidden' name='selezi' value='$targa_origine'>";
                                                                                                                                             echo "<input type='submit' value='Torna indietro'>";
                                                                                                                                              echo "</form></center>";
                                                                                                                      }                     
                                                                                                                      // Chiusura di mysql
                                                                                                                      mysql_close($db);
                                                                       }
                                               ?>
                        </body>
</html>


CANCELLAZIONE

cbarche.php
<html>
                        <body>
                                               <form action="cbarche1.php" method="POST">
                                                                       <?php
                                                                                              // Connessione al database MySQL
                                                                                              $db=mysql_connect("localhost","root");

                                                                                              // Creazione dell'interrogazione
                                                                                              $sqlinterr="select * from barche";
                                                                                             
                                                                                              $res=mysql_db_query("gestione_porti",$sqlinterr);
                                                                                              $num=mysql_num_rows($res);
                                                                                              echo "            <i>Selezionare il record che si intende cancellare</i></h3><div class='clear'> </div>
                                                                                                                                             <table border='2' align='center' width=100%>
                                                                                                                                                                     <tr>
                                                                                                                                                                                            <td width=10%><center>Selezione</center></td>
                                                                                                                                                                                            <td width=20%><center>NOME</center></td>
                                                                                                                                                                                            <td width=20%><center>TARGA</center></td>
                                                                                                                                                                                            <td width=25%><center>LUNGHEZZA</center></td>
                                                                                                                                                                                            <td width=25%><center>ANNO DI FABBRICAZIONE</center></td>
                                                                                                                                                                     </tr>";
                                                                                                                                             // Visualizzazione dei record inseriti
                                                                                                                                             for ($i=0;$i<$num;$i++) {
                                                                                                                                                                     $nome=mysql_result($res,$i,"nome");
                                                                                                                                                                     $targa=mysql_result($res,$i,"targa");
                                                                                                                                                                     $lunghezza=mysql_result($res,$i,"lunghezza");
                                                                                                                                                                     $anno_fabbricazione=mysql_result($res,$i,"anno_fabbricazione");
                                                                                                                     
                                                                                                                                                                     // Visualizazione dei record trovati
                                                                                                                                                                     echo "            <tr>
                                                                                                                                                                                                                    <td><center><input type='radio' name='selezi' value='$targa'></center></td>
                                                                                                                                                                                                                    <td><center>$nome</center></td>
                                                                                                                                                                                                                    <td><center>$targa</center></td>
                                                                                                                                                                                                                    <td><center>$lunghezza</center></td>
                                                                                                                                                                                                                    <td><center>$anno_fabbricazione</center></td>
                                                                                                                                                                                             </tr>";
                                                                                                                                             }
                                                                                                                                             // Fine della tabella
                                                                                                                                             echo "</table>";

                                                                                              // Chiusura del database MySQL
                                                                                              mysql_close($db);
                                                                       ?>
                                                                       <p>
                                                                       <center><input type="submit" value="Cancellare il record"></center>
                                               </form>
                        </body>
</html>

cbarche1.php
<html>
                        <body>
                                                <?php
                                                                       // Verifica che l'utente abbia scelto un record da modificare
                                                                       if (isset($_POST['selezi']))
                                                                                              $selezi=$_POST['selezi'];
                                                                       else $selezi='';

                                                                       if ($selezi) {
                                                                                              // Connessione al DB mysql
                                                                                              $db=mysql_connect("localhost","root");
                                                                                              // Creazione dell'interrogazione per estrapolare il record selezionato
                                                                                              $sqlinterr2="delete from barche";
                                                                                              $sqlinterr2.=" where targa='$selezi'";
                                                                                              $res2=mysql_db_query("gestione_porti",$sqlinterr2);

                                                                                              $num2=mysql_affected_rows();

                                                                                              if ($num2>0) {
                                                                                                                      $sqlinterr3="select * from barche";
                                                                                                                      $res3=mysql_db_query("gestione_porti",$sqlinterr3);
                                                                                                                      $num3=mysql_num_rows($res3);
                                                                                             
                                                                                                                      echo "<font size='4'><center><i><strong>Il record &egrave; stato cancellato con successo</strong></i></center></font><p><br><p>";
                                                                                                                      echo "<font color='white' size='3'><i>Di seguito si riporta la tabella 'BARCHE' aggiornata</i></font><p>";                                                                                                    echo "            <table border='2' align='center' width=100%>
                                                                                                                                                                     <tr>
                                                                                                                                                                                            <td width=25%><center>NOME</center></td>
                                                                                                                                                                                            <td width=25%><center>TARGA</center></td>
                                                                                                                                                                                            <td width=25%><center>LUNGHEZZA</center></td>
                                                                                                                                                                                            <td width=25%><center>ANNO DI FABBRICAZIONE</center></td>
                                                                                                                                                                     </tr>";

                                                                                                                                                                     for ($i=0;$i<$num3;$i++) {
                                                                                                                                                                                            $nome=mysql_result($res3,$i,"nome");
                                                                                                                                                                                            $targa=mysql_result($res3,$i,"targa");
                                                                                                                                                                                            $lunghezza=mysql_result($res3,$i,"lunghezza");
                                                                                                                                                                                            $anno_fabbricazione=mysql_result($res3,$i,"anno_fabbricazione");
                                                                                                                                                                                                                                                                                                                 
                                                                                                                                                                                            echo "            <tr>
                                                                                                                                                                                                                                           <td><center>$nome</center></td>
                                                                                                                                                                                                                                           <td><center>$targa</center></td>
                                                                                                                                                                                                                                           <td><center>$lunghezza</center></td>
                                                                                                                                                                                                                                           <td><center>$anno_fabbricazione</center></td>
                                                                                                                                                                                                                    </tr>";                                                                                                                                                       
                                                                                                                                                                     }
                                                                                                                                                                     echo "</table>";
                                                                                               }
                                                                                               else {
                                                                                              }                     
                                                                                              // Chiusura di mysql
                                                                                               mysql_close($db);
                                                                       }
                                                                       else echo "<h2><center><i>ERRORE!! Non &egrave; stato selezionato nessun record.<br> Si prega di ripetere l'operazione.</i></center></h2>";
                                               ?>
                        </body>
</html>





Commenti

Post popolari in questo blog

Simulazioni di reti (con Cisco Packet Tracer)

Esercizi sulla rappresentazione della virgola mobile IEEE 754 (Floating Point)