Fondamenti delle basi di dati

Corso MySQL a cura del prof. Pietro De Paolis

Soluzione seconda prova scritta 

Esame di Stato 2003/04

Di questa pagina esiste una versione studente abbreviata.

Arrivati a questo punto dovremmo essere in grado di svolgere in modo autonomo il tema di informatica industriale e applicazioni tecnico-scientifiche assegnato agli esami di Stato per l'indirizzo informatica industriale, corso di ordinamento. La traccia assegnata è stata: Seconda prova informatica industriale Anno 2003-04

Tecnica di risoluzione

E' bene acquisire una tacnica di risoluzione che sia valida per qualunque traccia indicata dal ministero. Analizzate le tracce degli anni precedente possiamo notare che in ogni caso è richiesta la costituzione di una banca dati e più interrogazioni sulla banca dati creata.

Dividiamo quindi la procedura di risoluzione in tre punti:

1 - Costruzione delle tabelle

La costituzione della banca dati richiede la ideazione e costruzione di un numero adeguato di tabelle o relazioni; per ricavare il numero ed il tipo di tabelle occorre dapprima leggersi e rileggersi la traccia diverse volte fino ad acquisire la piena consapevolezza degli elementi che influenzano la banca dati.

 

2 - Scrittura del codice MySQL

Successivamente, una volta create tutte le tabelle, si procede alla implementazione in linguaggio MySQL delle interrogazioni richieste sulle tabelle appena create.

3 - Rilettura traccia

Potrebbe succedere, in tale fase, che il numero di tabelle create sia insufficiente; si rilegge di nuovo la traccia e si aggiungono le tabelle mancanti.

4 - Verifica finale 

Verifica totale della soluzione, partendo da una nuova rilettura della traccia e verificando che la soluzione da noi adottata sia conforme a quanto richiesto.

1 - Costruzione delle tabelle

Leggendo più volte la traccia notiamo:

L'organizzazione scolastica dell'istituto prevede che:

  1. ciascuno studente possa frequentare più corsi di recupero e/o di sostegno e/o di arricchimento dell'offerta formativa;
  2. ogni corso abbia un titolo, una descrizione, una data di inizio e di fine, un monte ore definito;
  3. ogni studente possa frequentare più corsi esterni alla scuola;
  4. i corsi esterni alla scuola hanno un titolo, una descrizione, una data di inizio e di fine, un monte ore definito, un riferimento che indichi l'Ente e/o l'Istituzione che li ha organizzati, un riferimento alla documentazione di accertamento;
  5. ogni classe sia individuata univocamente da un numero ordinale progressivo (I, II, III, IV, V) e da una lettera che ne indica la sezione di appartenenza (A, B, C, D, E, F, G,).

Andiamo con ordine:

a. ciascuno studente possa frequentare più corsi di recupero e/o di sostegno e/o di arricchimento dell'offerta formativa;

questo ci suggerisce di creare una tabella che possiamo chiamare: corsifrequentati con la seguente struttura:

codicefrequenza codicecorso codicestudente annoscolastico
01 01 05 2001/02
02 01 125 2002/03
       
3000 300 124 2001/02

 

b. ogni corso abbia un titolo, una descrizione, una data di inizio e di fine, un monte ore definito;

questo ci suggerisce di creare una tabella che possiamo chiamare: corsiesistenti con la seguente struttura:

codicecorso titolo descrizione datainizio datafine ore
01 italiano Corso di recupero classi terze 14/09/2006 30/09/2006 10
02 matematica corso di recupero classi quarte 14/09/2006 29/09/2006 10
           
300 matematica Corso di recupero classi terze 14/09/2006 29/09/2006 10
 

c. ogni studente possa frequentare più corsi esterni alla scuola;

d. i corsi esterni alla scuola hanno un titolo, una descrizione, una data di inizio e di fine, un monte ore definito, un riferimento che indichi l'Ente e/o l'Istituzione che li ha organizzati, un riferimento alla documentazione di accertamento;

questo ci suggerirebbe di creare una nuova tabella con i corsi esterni; tuttavia, poichè essa assomiglia alla tabella dei corsi interni creata prima, possiamo, per semplicità, modificare la tabella creata sopra per i corsi interni e cioè:

 

codicecorso titolo descrizione datainizio datafine ore
01 italiano Corso di recupero classi terze 14/09/2006 30/09/2006 10
02 matematica corso di recupero classi quarte 14/09/2006 29/09/2006 10
           
300 matematica Corso di recupero classi terze 14/09/2006 29/09/2006 10
 

aggiungendo altre colonne in modo che sia valida sia per i corsi interni che per i corsi esterni; per cui lasciamo lo stesso nome alla tabella, cioè corsiesistenti e gli diamo la seguente struttura:

codicecorso titolo descrizione datainizio datafine ore tipo ente documentazione
01 italiano Corso di recupero classi terze 14/09/2006 30/09/2006 10 interno    
02 matematica corso di recupero classi quarte 14/09/2006 29/09/2006 10 esterno scuola privata "L. da Vinci" certificato di superamento corso di matematica
                 
300 matematica Corso di recupero classi terze 14/09/2006 29/09/2006 10 interno    
 

e. ogni classe sia individuata univocamente da un numero ordinale progressivo (I, II, III, IV, V) e da una lettera che ne indica la sezione di appartenenza (A, B, C, D, E, F, G,).

questo ci suggerisce di creare una tabella che possiamo chiamare: classiesistenti con la seguente struttura:

codiceclasse numero sezione
1 I A
2 I B
     
35 V G

 

La traccia continua dicendo:

In particolare, il Dirigente Scolastico chiede che si possa procedere all'archiviazione dei:

  1. dati anagrafici degli studenti utili alla loro univoca identificazione;

questo ci suggerisce di creare una tabella che possiamo chiamare: studenti con la seguente struttura:

codicestudente cognome nome datanascita comunenascita comuneresidenza indirizzo telefono
01 Bianchi Gerardo 14/12/87 Milano Milano Via Bossi 25 02832547
02 Rossi Antonio 10/01/1988 Roma Milano Via G. Mazzini 310 02573281
               
980 Merlino Giuseppe 15/10/1991 Venezia Gallarate Via Manzoni 120 02581475

la traccia prosegue:

2. dati relativi alla frequenza delle classi del corso di studi (quali classi ciascuno studente ha frequentato in ordine crescente ed in quale anno scolastico);

3. dati relativi agli esiti conclusivi di ciascun anno scolastico (promozione sì/no, eventuali debiti formativi ed in quale disciplina) per ciascuno studente;

questo ci suggerisce di creare una tabella che possiamo chiamare: classifrequentate con la seguente struttura:

codicefrequenza codicestudente numero sezione annoscolastico esito debiti
01 01 I A 2001/02 promosso  
02 02 II A 2001/02 promosso italiano,  matematica
             
10980 1500 V C 2002/03 non promosso  

la traccia prosegue:

4. dati relativi ai corsi interni;

5. dati relativi ai corsi esterni alla scuola purché documentati.

questi dati li possiamo ricavare dalle due tabelle già create e cioè: corsiesistenti e corsifrequentati.

Definizione delle relazioni della base di dati in linguaggio MySQL

Supponendo di aver già un base di dati a disposizione su cui creare le nuove tabelle possiamo passare direttamente alla creazione delle relative tabelle già esposte sopra.

Per la tabella studenti il nostro comando  in MySQL sarà:

CREATE TABLE studenti (codicestudente  INT(7) not null AUTO_INCREMENT, cognome CHAR(50), nome CHAR(50), datanascita CHAR(50), comunenascita CHAR(50), comuneresidenza CHAR(50), indirizzo CHAR (50), telefono CHAR(50),  PRIMARY KEY(codicestudente) ) 

Per la tabella corsifrequentati il nostro comando  in MySQL sarà:

CREATE TABLE corsifrequentati (codicefrequenza  INT(7) not null AUTO_INCREMENT, codicecorso INT(7), codicestudente INT(7), annoscolastico CHAR(50),  PRIMARY KEY(codicefrequenza) ) 

Per la tabella corsiesistenti il nostro comando  in MySQL sarà:

CREATE TABLE corsiesistenti (codicecorso  INT(7) not null AUTO_INCREMENT, titolo CHAR(50), descrizione CHAR(50), datainizio CHAR(50), datafine CHAR(50), ore CHAR(50), tipo CHAR(50), ente CHAR(50), documentazione CHAR(50), PRIMARY KEY(codicecorso) ) 

Per la tabella classiesistenti il nostro comando  in MySQL sarà:

CREATE TABLE classiesistenti (codiceclasse  INT(7) not null AUTO_INCREMENT, numero CHAR(7), sezione CHAR(7),   PRIMARY KEY(codiceclasse) ) 

Per la tabella classifrequentate il nostro comando  in MySQL sarà:

CREATE TABLE classifrequentate (codicefrequenza  INT(7) not null AUTO_INCREMENT, codicestudente INT(7),  numero CHAR(5), sezione CHAR(5), annoscolastico CHAR(50), esito CHAR(50), debiti CHAR(50), PRIMARY KEY(codicefrequenza) ) 

 

Le tabelle possono essere create tutte con una unica pagina web in php che le crea.

La traccia ci chiede, inoltre,

Implementi in linguaggio MySQL le seguenti interrogazioni:

data una classe, quali studenti di quella classe hanno frequentato corsi e di che tipo;

Possiamo utilizzare una istruzione SELECT del tipo:

SELECT studenti.cognome, studenti.nome, corsiesistenti.titolo, corsiesistenti.tipo FROM classifrequentate, studenti, corsiesistenti, corsifrequentati WHERE classifrequentate.numero='$classe' AND classifrequentate.sezione='$sezione' AND  classifrequentate.sezione='$annoscolastico' AND corsifrequentati.annoscolastico='$annoscolastico' AND  classifrequentate.codicestudente=studenti.codicestuente AND corsifrequentati.codicestudente=studenti.codicestuente AND corsifrequentati.codicecorso=corsiesistenti.codicecorso

dove con $classe abbiamo indicato la variabile di ingresso della classe da cercare,  con $sezione la variabile di ingresso della sezione da cercare e con $annoscolastico la variabile di ingresso dell'anno soclastico, nell'ipotesi di usare un linguaggio di programmazione in php.

La traccia ci chiede, inoltre,

dato uno studente, quali corsi ha frequentato, di che tipo, per quale monte ore e in quale anno scolasticoa;

Possiamo utilizzare una istruzione SELECT del tipo:

SELECT studenti.cognome, studenti.nome, corsiesistenti.titolo, corsiesistenti.tipo, corsiesistenti.ore, corsifrequentati.annoscolastico FROM studenti, corsiesistenti, corsifrequentati WHERE studenti.cognome='$cognome' AND studenti.nome='$nome' AND corsifrequentati.codicestudente=studenti.codicestuente AND corsifrequentati.codicecorso=corsiesistenti.codicecorso

dove con $cognome abbiamo indicato la variabile di ingresso del cognome dello studente da cercare e con $nome  la variabile di ingresso del nome dello studente da cercare, nell'ipotesi di usare un linguaggio di programmazione in php.

La traccia ci chiede, inoltre,

dato un anno scolastico, quali corsi interni sono stati attivati e da quali studenti sono stati frequenti;

Possiamo utilizzare una istruzione SELECT del tipo:

SELECT corsiesistenti.titolo, studenti.cognome, studenti.nome FROM studenti, corsiesistenti, corsifrequentati WHERE corsifrequentati.annoscolastico='$annoscolastico'  AND corsifrequentati.codicestudente=studenti.codicestudente AND corsiesistenti.codicecorso=corsifrequentati.codicecorso AND corsiesistenti.tipo='interno'

dove con $annoscolastico abbiamo indicato la variabile di ingresso dell'anno scolastico, nell'ipotesi di usare un linguaggio di programmazione in php.

La traccia ci chiede, inoltre,

dato un corso, quali sono i dati relativi ad esso e per quali anni scolastici è stato attivato;

Possiamo utilizzare una istruzione SELECT del tipo:

SELECT corsiesistenti.*, corsifrequentati.annoscolastico FROM corsiesistenti, corsifrequentati WHERE corsiesistenti.codicecorso='$codicecorso'  AND corsifrequentati.codicecorso=corsiesistenti.codicecorso 

dove con $codicecorso abbiamo indicato la variabile di ingresso del codice del corso, nell'ipotesi di usare un linguaggio di programmazione in php.

La traccia ci chiede, infine,

dato uno studente quali classi ha frequentato, in quali anni scolastici e con quali esiti finali. 

Possiamo utilizzare una istruzione SELECT del tipo:

SELECT studenti.cognome, studenti.nome, classifrequentate.numero, classifrequentate.sezione,classifrequentate.annoscolastico, classifrequentate.esito, classifrequentate.debiti FROM studenti, classifrequentate WHERE studenti.cognome='$cognome' AND studenti.nome='$nome' AND classifrequentate.codicestudente=studenti.codicestudente

dove con $cognome abbiamo indicato la variabile di ingresso del cognome dello studente da cercare e con $nome  la variabile di ingresso del nome dello studente da cercare, nell'ipotesi di usare un linguaggio di programmazione in php.

Applicazione completa in rete

A questo punto la soluzione della traccia ministeriale è terminata. Possiamo, ora, collaudare in rete la soluzione proposta.

Creazione delle tabelle

Le quattro tabelle possono essere create contemporaneamente con il seguente programma creotabelle.php il cui listato è:

<script language="php">

$nomehost = "miohost";

$utente = "mionome";

$parola = "miapasswors";

$nome = "nomedeldatabase";

$connessione=mysql_connect($nomehost,$utente,$parola);

$selezione = mysql_select_db($nome, $connessione);

$richiesta = "CREATE TABLE studenti (codicestudente INT(7) not null AUTO_INCREMENT, cognome CHAR(50), nome CHAR(50), datanascita CHAR(50), comunenascita CHAR(50), comuneresidenza CHAR(50), indirizzo CHAR (50), telefono CHAR(50), PRIMARY KEY(codice) )  ";

$risultato =mysql_query($richiesta);

if($risultato)

print("Tabella studenti creata correttamente");

else

print ("<br>La tabella stutenti esiste già; essa va creata una sola volta. <br>La tabella può essere utilizzata per la memorizzazione e la ricerca dei dati.");

$richiesta = "CREATE TABLE corsifrequentati (codicefrequenza INT(7) not null AUTO_INCREMENT, codicecorso INT(7), codicestudente INT(7), annoscolastico CHAR(50), PRIMARY KEY(codicefrequenza) )  ";

$risultato =mysql_query($richiesta);

if($risultato)

print("Tabella corsifrequentati creata correttamente");

else

print ("<br>La tabella corsiesistenti esiste già; essa va creata una sola volta. <br>La tabella può essere utilizzata per la memorizzazione e la ricerca dei dati.");

$richiesta = "CREATE TABLE corsiesistenti (codicecorso INT(7) not null AUTO_INCREMENT, titolo CHAR(50), descrizione CHAR(50), datainizio CHAR(50), datafine CHAR(50), ore CHAR(50), tipo CHAR(50), ente CHAR(50), documentazione CHAR(50), PRIMARY KEY(codicecorso) )  ";

$risultato =mysql_query($richiesta);

if($risultato)

print("Tabella corsiesistenti creata correttamente");

else

print ("<br>La tabella corsiesistenti esiste già; essa va creata una sola volta. <br>La tabella può essere utilizzata per la memorizzazione e la ricerca dei dati.");

$richiesta = "CREATE TABLE classiesistenti (codiceclasse INT(7) not null AUTO_INCREMENT, numero CHAR(7), sezione CHAR(7), PRIMARY KEY(codiceclasse) )   ";

$risultato =mysql_query($richiesta);

if($risultato)

print("Tabella classiesistenti creata correttamente");

else

print ("<br>La tabella classiesistenti esiste già; essa va creata una sola volta. <br>La tabella può essere utilizzata per la memorizzazione e la ricerca dei dati.");

$richiesta = "CREATE TABLE classifrequentate (codicefrequenza  INT(7) not null AUTO_INCREMENT, codicestudente INT(7),  numero CHAR(5), sezione CHAR(5), annoscolastico CHAR(50), esito CHAR(50), debiti CHAR(50), PRIMARY KEY(codicefrequenza) )    ";

$risultato =mysql_query($richiesta);

if($risultato)

print("Tabella classifrequentate creata correttamente");

else

print ("<br>La tabella classifrequentate esiste già; essa va creata una sola volta. <br>La tabella può essere utilizzata per la memorizzazione e la ricerca dei dati.");

mysql_close($connessione);

</script>

listato di creotabelle.php

Una volta create le tabelle esse vanno riempite con i dati degli studenti e dei corsi frequentati. Vedi: Riempimento delle tabelle

Creiamo ora le interfacce e i programmi in php per eseguire le interrogazioni sulla base di dati

data una classe, quali studenti di quella classe hanno frequentato corsi e di che tipo;

Una interfaccia per inviare la richiesta alla base di dati può essere la seguente:

Classe 
Sezione

Anno scolastico

interfaccia di cercoclasse.php

il cui listato è il seguente:

<script language="JavaScript">

<!--

// controllo che ci siano le due scelte

function controllo1(){

// controllo che ci sia il cognome e il nome

sceltaclasse=document.modulo1.classe.value;

sceltasezione=document.modulo1.sezione.value;

if((sceltaclasse=="")||(sceltasezione=="")) {

alert("Inserire i dati richiesti!");

return false;

};

return true;

}

// -->

</script>

<form action="cercodaticlasse.php" name="modulo1" method="POST" onSubmit="return controllo1();">

 

<div align="left">

<table border="1" cellpadding="0" width="100%">

<tr>

<td width="35%"><font size="4" face="Verdana" color="#FF0000">Classe&nbsp;</font></td>

<td width="%" align="center">

<select size="1" name="classe" alt="provo">

<option value="">CLASSE</option>

<option value="I">I</option>

<option value="II">II</option>

<option value="III">III</option>

<option value="IV">IV</option>

<option value="V">V</option>

</select>

</td>

</tr>

<tr>

<td width="35%"><font size="4" face="Verdana" color="#FF0000">Sezione</font></td>

<td width="65%" align="center">

<p align="center">

<select size="1" name="sezione" alt="provo">

<option value="">SEZIONE</option>

<option value="A">A</option>

<option value="B">B</option>

<option value="C">C</option>

<option value="D">D</option>

<option value="E">E</option>

<option value="F">F</option>

<option value="G">G</option>

</select>

<tr>

<td width="35%"><font size="4" face="Verdana" color="#FF0000">Anno

scolastico</font></td>

<td width="65%" align="center">

<p align="center">

<select size="1" name="annoscolastico" alt="provo">

<option>ANNO SCOLASTICO</option>

<option value="2002/03">2002/03</option>

<option value="2003/04">2003/04</option>

<option value="2004/05">2004/05</option>

<option value="2005/06">2005/06</option>

<option value="2006/07">2006/07</option>

<option value="2007/08">2007/08</option>

<option value="2008/09">2008/09</option>

</select>

</tr>

<tr>

<td width="100%" colspan="2">

<p align="center"><input type="submit" value="CERCA STUDENTI DELLA CLASSE" name="cerco" style="font-family: Verdana; font-size: 14 pt"></td>

</table>

</div>

</form>

listato di cercoclasse.php

esso richiama un programma in php cercodaticlasse.php che provvede alla esecuzione della richiesta, il cui listato è:

<script language="php">

if ($classe) return;

print("Cerco con: $classe $sezione $annoscolastico <br>");

$nomehost = "miohost";

$utente = "mionome";

$parola = "miapasswors";

$nome = "nomedeldatabase";

$connessione=mysql_connect($nomehost,$utente,$parola);

$selezione = mysql_select_db($nome, $connessione);

$richiesta="SELECT studenti.cognome, studenti.nome, corsiesistenti.titolo, corsiesistenti.tipo FROM studenti, classifrequentate, corsiesistenti, corsifrequentati WHERE classifrequentate.numero ='$classe' AND classifrequentate.sezione='$sezione' AND classifrequentate.annoscolastico='$annoscolastico' AND corsifrequentati.annoscolastico='$annoscolastico' AND classifrequentate.codicestudente=studenti.codicestudente AND corsifrequentati.codicestudente=studenti.codicestudente AND corsifrequentati.codicecorso=corsiesistenti.codicecorso ";

$risultato =mysql_query($richiesta);

$lunghezza = mysql_num_rows($risultato);

print("Le righe trovate sono: $lunghezza .<br>");

for ($t=0; $t<$lunghezza; $t++) {

$riga=mysql_fetch_array($risultato);

print("$riga[0] $riga[1] $riga[2] $riga[3] $riga[4] $riga[5] $riga[6] $riga[7] $riga[8] $riga[9]$riga[10]<br>");

};

mysql_close($connessione);

</script>

listato di cercodaticlasse.php

La traccia ci chiede, inoltre,

dato uno studente, quali corsi ha frequentato, di che tipo, per quale monte ore e in quale anno scolastico;

Una interfaccia per inviare la richiesta alla base di dati può essere la seguente:

Cognome

Nome

interfaccia di cercostudentecorsi.php

il cui listato è il seguente:

<script language="JavaScript">

<!--

// controllo che ci siano le due scelte

function controllo1(){

// controllo che ci sia il cognome e il nome

sceltacognome=document.modulo1.cognome.value;

sceltanome=document.modulo1.nome.value;

if((sceltacognome=="")||(sceltanome=="")) {

alert("Inserire almeno Cognome e Nome!");

return false;

};

return true;

}

// -->

</script>

<form action="cercodaticorsifrequentati.php" name="modulo1" method="POST" onSubmit="return controllo1();">

 

<div align="left">

<table border="1" cellpadding="0" width="100%">

<tr>

<td width="35%"><font size="4" face="Verdana" color="#FF0000">Cognome</font></td>

<td width="65%" align="center">

<p align="center">

<font face="Verdana" size="4">

<font color="#0000FF">

<span style="mso-bidi-font-size: 12.0pt">

<input type="text" name="cognome" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../../immagini/sfondo3.gif')">

</span>

</font>

</font>

</p>

</td>

</tr>

<tr>

<td width="35%"><font size="4" face="Verdana" color="#FF0000">Nome</font></td>

<td width="65%" align="center">

<p align="center"><font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="text" name="nome" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../../immagini/sfondo3.gif')">

</span>

</font>

</td>

</tr>

 

<tr>

<td width="134%" colspan="2">

<p align="center"><input type="submit" value="CERCA CORSI FREQUENTATI" name="cerco" style="font-family: Verdana; font-size: 14 pt"></td>

</tr>

</table>

</div>

</form>

listato di cercostudentecorsi.php

esso richiama un programma in php cercodaticorsifrequentati.php che provvede alla esecuzione della richiesta, il cui listato è:

<script language="php">

if ($cognome) return;

print("Cerco con: $cognome $nome <br>");

$nomehost = "miohost";

$utente = "mionome";

$parola = "miapasswors";

$nome = "nomedeldatabase";

$connessione=mysql_connect($nomehost,$utente,$parola);

$selezione = mysql_select_db($nome, $connessione);

$richiesta="SELECT studenti.cognome, studenti.nome, corsiesistenti.titolo, corsiesistenti.tipo, corsiesistenti.ore, corsifrequentati.annoscolastico FROM studenti, corsiesistenti, corsifrequentati WHERE studenti.cognome='$cognome' AND studenti.nome='$nome' AND corsifrequentati.codicestudente=studenti.codicestuente AND corsifrequentati.codicecorso=corsiesistenti.codicecorso ";

$risultato =mysql_query($richiesta);

$lunghezza = mysql_num_rows($risultato);

print("Le righe trovate sono: $lunghezza .<br>");

for ($t=0; $t<$lunghezza; $t++) {

$riga=mysql_fetch_array($risultato);

print("$riga[0] $riga[1] $riga[2] $riga[3] $riga[4] $riga[5] $riga[6] $riga[7] $riga[8] $riga[9]$riga[10]<br>");

};

mysql_close($connessione);

</script>

listato di cercodaticorsifrequentati.php

La traccia ci chiede, inoltre,

dato un anno scolastico, quali corsi interni sono stati attivati e da quali studenti sono stati frequenti;

Una interfaccia per inviare la richiesta alla base di dati può essere la seguente:

Anno scolastico

interfaccia di cercoanno.php

il cui listato è il seguente:

<script language="JavaScript">

<!--

// controllo che ci siano le due scelte

function controllo1(){

// controllo che ci sia il cognome e il nome

sceltaanno=document.modulo1.annoscolastico.value;

if(sceltaanno=="") {

alert("Inserire i dati richiesti!");

return false;

};

return true;

}

// -->

</script>

<form action="cercodatianno.php" name="modulo1" method="POST" onSubmit="return controllo1();">

 

<div align="left">

<table border="1" cellpadding="0" width="100%">

<tr>

<td width="35%"><font size="4" face="Verdana" color="#FF0000">Anno

scolastico</font></td>

<td width="65%" align="center">

<p align="center">

<select size="1" name="annoscolastico" alt="provo">

<option>ANNO SCOLASTICO</option>

<option value="2002/03">2002/03</option>

<option value="2003/04">2003/04</option>

<option value="2004/05">2004/05</option>

<option value="2005/06">2005/06</option>

<option value="2006/07">2006/07</option>

<option value="2007/08">2007/08</option>

<option value="2008/09">2008/09</option>

 

</select>

</tr>

<tr>

<td width="100%" colspan="2">

<p align="center"><input type="submit" value="CERCA CORSI" name="cerco" style="font-family: Verdana; font-size: 14 pt"></td>

</table>

</div>

</form>

listato di cercoanno.php

esso richiama un programma in php cercodatianno.php che provvede alla esecuzione della richiesta, il cui listato è:

<script language="php">

if ($annoscolastico) return;

print("Cerco con: $annoscolastico <br>");

$nomehost = "miohost";

$utente = "mionome";

$parola = "miapasswors";

$nome = "nomedeldatabase";

$connessione=mysql_connect($nomehost,$utente,$parola);

$selezione = mysql_select_db($nome, $connessione);

$richiesta="SELECT corsiesistenti.titolo, studenti.cognome, studenti.nome FROM studenti, corsiesistenti, corsifrequentati WHERE corsifrequentati.annoscolastico='$annoscolastico'  AND corsifrequentati.codicestudente=studenti.codicestudente AND corsiesistenti.codicecorso=corsifrequentati.codicecorso AND corsiesistenti.tipo='interno' ";

$risultato =mysql_query($richiesta);

$lunghezza = mysql_num_rows($risultato);

print("Le righe trovate sono: $lunghezza .<br>");

for ($t=0; $t<$lunghezza; $t++) {

$riga=mysql_fetch_array($risultato);

print("$riga[0] $riga[1] $riga[2] $riga[3] $riga[4] $riga[5] $riga[6] $riga[7] $riga[8] $riga[9]$riga[10]<br>");

};

mysql_close($connessione);

</script>

listato di cercodatianno.php

La traccia ci chiede, inoltre,

dato un corso, quali sono i dati relativi ad esso e per quali anni scolastici è stato attivato;

Una interfaccia per inviare la richiesta alla base di dati può essere la seguente:

Codice corso

interfaccia di cercocorso.php

il cui listato è il seguente:

<script language="JavaScript">

<!--

// controllo che ci siano le due scelte

function controllo1(){

// controllo che ci siano id ati

sceltacorso=document.modulo1.codicecorso.value;

if (sceltacorsoe=="") {

alert("Inserire i dati richiesti!");

return false;

};

return true;

}

// -->

</script>

<form action="cercodaticorso.php" name="modulo1" method="POST" onSubmit="return controllo1();">

 

<div align="left">

<table border="1" cellpadding="0" width="100%">

<tr>

<td width="35%"><font size="4" face="Verdana" color="#FF0000">Codice corso</font></td>

<td width="65%" align="center">

<p align="center"><font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="text" name="codicecorso" size="3" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../../../immagini/sfondo3.gif')">

</span>

</font>

</td>

</tr>

 

<tr>

<td width="134%" colspan="2">

<p align="center"><input type="submit" value="CERCA CORSI FREQUENTATI" name="cerco" style="font-family: Verdana; font-size: 14 pt"></td>

</tr>

</table>

</div>

</form>

listato di cercocorso.php

esso richiama un programma in php cercodaticorso.php che provvede alla esecuzione della richiesta, il cui listato è:

<script language="php">

if ($codicecorso) return;

print("Cerco con: $codicecorso <br>");

$nomehost = "miohost";

$utente = "mionome";

$parola = "miapasswors";

$nome = "nomedeldatabase";

$connessione=mysql_connect($nomehost,$utente,$parola);

$selezione = mysql_select_db($nome, $connessione);

$richiesta="SELECT corsiesistenti.*, corsifrequentati.annoscolastico FROM corsiesistenti, corsifrequentati WHERE corsiesistenti.codicecorso='$codicecorso'  AND corsifrequentati.codicecorso=corsiesistenti.codicecorso ";

$risultato =mysql_query($richiesta);

$lunghezza = mysql_num_rows($risultato);

print("Le righe trovate sono: $lunghezza .<br>");

for ($t=0; $t<$lunghezza; $t++) {

$riga=mysql_fetch_array($risultato);

print("$riga[0] $riga[1] $riga[2] $riga[3] $riga[4] $riga[5] $riga[6] $riga[7] $riga[8] $riga[9]$riga[10]<br>");

};

mysql_close($connessione);

</script>

listato di cercodaticorso.php

La traccia ci chiede, infine,

dato uno studente quali classi ha frequentato, in quali anni scolastici e con quali esiti finali. 

Una interfaccia per inviare la richiesta alla base di dati può essere la seguente:

Cognome

Nome

interfaccia di cercostudenteclassi.php

il cui listato è il seguente:

<script language="JavaScript">

<!--

// controllo che ci siano le due scelte

function controllo1(){

// controllo che ci sia il cognome e il nome

sceltacognome=document.modulo1.cognome.value;

sceltanome=document.modulo1.nome.value;

if((sceltacognome=="")||(sceltanome=="")) {

alert("Inserire almeno Cognome e Nome!");

return false;

};

return true;

}

// -->

</script>

<form action="cercodaticlassifrequentate.php" name="modulo1" method="POST" onSubmit="return controllo1();">

 

<div align="left">

<table border="1" cellpadding="0" width="100%">

<tr>

<td width="35%"><font size="4" face="Verdana" color="#FF0000">Cognome</font></td>

<td width="65%" align="center">

<p align="center">

<font face="Verdana" size="4">

<font color="#0000FF">

<span style="mso-bidi-font-size: 12.0pt">

<input type="text" name="cognome" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../../../immagini/sfondo3.gif')">

</span>

</font>

</font>

</p>

</td>

</tr>

<tr>

<td width="35%"><font size="4" face="Verdana" color="#FF0000">Nome</font></td>

<td width="65%" align="center">

<p align="center"><font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="text" name="nome" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../../../immagini/sfondo3.gif')">

</span>

</font>

</td>

</tr>

 

<tr>

<td width="134%" colspan="2">

<p align="center"><input type="submit" value="CERCA CLASSI FREQUENTATE" name="cerco" style="font-family: Verdana; font-size: 14 pt"></td>

</tr>

</table>

</div>

</form>

listato di cercostudenteclassi.php

esso richiama un programma in php cercodaticlassifrequentate.php che provvede alla esecuzione della richiesta, il cui listato è:

<script language="php">

if ($cognome) return;

print("Cerco con: $cognome $nome <br>");

$nomehost = "miohost";

$utente = "mionome";

$parola = "miapasswors";

$nome = "nomedeldatabase";

$connessione=mysql_connect($nomehost,$utente,$parola);

$selezione = mysql_select_db($nome, $connessione);

$richiesta="SELECT studenti.cognome, studenti.nome, classifrequentate.numero, classifrequentate.sezione,classifrequentate.annoscolastico, classifrequentate.esito, classifrequentate.debiti FROM studenti, classifrequentate WHERE studenti.cognome='$cognome' AND studenti.nome='$nome' AND classifrequentate.codicestudente=studenti.codicestudente ";

$risultato =mysql_query($richiesta);

$lunghezza = mysql_num_rows($risultato);

print("Le righe trovate sono: $lunghezza .<br>");

for ($t=0; $t<$lunghezza; $t++) {

$riga=mysql_fetch_array($risultato);

print("$riga[0] $riga[1] $riga[2] $riga[3] $riga[4] $riga[5] $riga[6] $riga[7] $riga[8] $riga[9]$riga[10]<br>");

};

mysql_close($connessione);

</script>

listato di cercodaticlassifrequentate.php

L'intera gestione della base di dati può essere gestita dalla seguente pagina:

Gestione di una banca dati scolastica

giugno 2006

Corso di programmazione in MYSQL

Dizionario mysql e relativo php

Corso di programmazione in PHP

Dizionario php

prof. Pietro De Paolis

Indice Scuola Elettrica - generico


Scuola Elettrica



 

Altre applicazioni


Mappa per tipo di scuola

 

Indice di tutte le pagine del sito


Guida per navigare


Richiesta informazioni


Scuola Elettrica