Fondamenti delle basi di dati

Corso MySQL a cura del prof. Pietro De Paolis

Soluzione traccia seconda prova scritta

Esame di stato 2005/06 (traccia anno 2005-06.pdf)

Indirizzo: Informatica

Tema di: Informatica generale e applicazioni tecnico-scientifiche

Versione completa

Di questa pagina esiste una versione studente abbreviata.

1 - Lo schema concettuale e lo schema logico del database;

2 - La definizione delle relazioni in linguaggio SQL.

 

1 - Tabella utenti

codiceutente cognome nome scuola comune email nomeutente password gruppo
01 Bianchi Gerardo ITIS Milano sss@www.it mionickname SSS1111 studente
02 Rossi Antonio classico Roma sss@www.it mionickname  ww33eee docente
                 
980 Merlino Giuseppe scientifico Venezia sss@www.it mionickname www111ww studente

Il nostro comando completo in MySQL sarà:

CREATE TABLE utenti (codiceutente INT(7) not null AUTO_INCREMENT, cognome CHAR(50), nome CHAR(50), scuola CHAR(50), comune CHAR(50), email CHAR(50), nomeutente CHAR (50), password CHAR(50), gruppo CHAR(50),  PRIMARY KEY(codiceutente) ) 

2 - Tabella upload:

codiceinvio titolo tipo descrizione data codiceutente
01 La riforma testo descrizione riforma 20/12/2005 051
02 protfolio testo descrizione portfolio 15/10/2005 125
03 valutazione audio descrizione valutazione 08/09/2005 525

Il nostro comando completo in MySQL sarà:

CREATE TABLE upload (codiceinvio INT(7) not null AUTO_INCREMENT, titolo CHAR(50), tipo CHAR(50), descrizione TEXT, data CHAR(10), codiceutente CHAR(7),  PRIMARY KEY(codiceinvio) ) 

3 - Tabella moduliesistenti:

codicemodulo titolo descrizione tipo
01 La riforma descrizione riforma docente
02 protfolio descrizione portfolio docente
03 valutazione descrizione valutazione studente

Il nostro comando completo in MySQL sarà:

CREATE TABLE moduliesistenti (codicemodulo INT(7) not null AUTO_INCREMENT, titolo CHAR(50),  descrizione TEXT, tipo CHAR(20),   PRIMARY KEY(codicemodulo) ) 

3 - Tabella moduliscelti:

numeroscelti codicemodulo codiceutente
01 05 500
02 02 325
03 03 750
04 02 323
05 03 755

Il nostro comando completo in MySQL sarà:

CREATE TABLE moduliscelti (numeroscelti INT(7) not null AUTO_INCREMENT, codicemodulo INT(7), codiceutente INT(7),   PRIMARY KEY(numeroscelti) ) 

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 utenti (codiceutente INT(7) not null AUTO_INCREMENT, cognome CHAR(50), nome CHAR(50), scuola CHAR(50), comune CHAR(50), email CHAR(50), nomeutente CHAR (50), password CHAR(50), gruppo CHAR(50), PRIMARY KEY(codiceutente) ) ";

$risultato =mysql_query($richiesta);

if($risultato)

print("Tabella utenti creata correttamente");

else

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

$richiesta = "CREATE TABLE upload (codiceinvio INT(7) not null AUTO_INCREMENT, titolo CHAR(50), tipo CHAR(50), descrizione TEXT, data CHAR(10), codiceutente CHAR(7), PRIMARY KEY(codiceinvio) )  ";

$risultato =mysql_query($richiesta);

if($risultato)

print("Tabella upload creata correttamente");

else

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

$richiesta = "CREATE TABLE moduliesistenti (codicemodulo INT(7) not null AUTO_INCREMENT, titolo CHAR(50), descrizione TEXT, tipo CHAR(20), PRIMARY KEY(codicemodulo) )  ";

$risultato =mysql_query($richiesta);

if($risultato)

print("Tabella moduliesistenti creata correttamente");

else

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

$richiesta = "CREATE TABLE moduliscelti (numeroscelti INT(7) not null AUTO_INCREMENT, codicemodulo INT(7), codiceutente INT(7), PRIMARY KEY(numeroscelti) )   ";

$risultato =mysql_query($richiesta);

if($risultato)

print("Tabella moduliscelti creata correttamente");

else

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

 

mysql_close($connessione);

</script>

listato di creotabelle.php

- implementi almeno una delle seguenti query:

n. 1: I docenti che hanno un account presso la community con la rispettiva collocazione geografica ed i moduli formativi scelti

Il nostro comando completo in MySQL sarà:

SELECT utenti.cognome, utenti.nome, utenti.scuola, utenti.comune, moduliesistenti.titolo, moduliesistenti.descrizione FROM utenti INNER JOIN moduliscelti INNER JOIN moduliesistenti ON utenti.codiceutente=moduliscelti.codiceutente AND moduliscelti.codicemodulo=moduliesistenti.codicemodulo AND utenti.gruppo='docente' 

 

n. 2: I dati relativi agli studenti e ai documenti che essi hanno inviato in remoto sul portale della community mediante upload

Il nostro comando completo in MySQL sarà:

SELECT utenti.cognome, utenti.nome utenti.scuola, utenti.comune, upload.titolo, upload.tipo, upload.descrizione, upload.data  FROM upload INNER JOIN utenti ON  upload.codiceutente=utenti.codiceutente WHERE utenti.nomeutente='$nomeutente'

 

dove $nomeutente sarà la variabile php che sarà passata dall'interfaccia di ricerca.

 

- scriva, in un linguaggio lato server, il codice di almeno una delle seguenti pagine del portale:

Un programma per inviare la richiesta alla base di dati può essere la seguente:

Nome utente

Password

interfaccia di cercodocenti.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.nomeutente.value;

sceltanome=document.modulo1.password.value;

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

alert("Inserire Nome utente e password!");

return false;

};

return true;

}

// -->

</script>

<form action="cercodatidocenti.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">Nome utente</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="nomeutente" 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">Password</font></td>

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

<p align="center"><font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="password" name="password" 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 DOCENTI E MODULI" name="cerco" style="font-family: Verdana; font-size: 14 pt"></td>

</tr>

</table>

</div>

</form>

listato di cercodocenti.php

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

<script language="php">

if (($nomeutente!="amministratore")||($password!="amministratore")) return;

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

$nomehost = "miohost";

$utente = "mionome";

$parola = "miapasswors";

$nome = "nomedeldatabase";

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

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

$richiesta="SELECT utenti.cognome, utenti.nome, utenti.scuola, utenti.comune, moduliesistenti.titolo, moduliesistenti.descrizione FROM utenti INNER JOIN moduliscelti INNER JOIN moduliesistenti ON utenti.codiceutente=moduliscelti.codiceutente AND moduliscelti.codicemodulo=moduliesistenti.codicemodulo AND utenti.gruppo='docente'  ";

$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 cercodatidocenti.php

 

 

 

Un programma per inviare la richiesta alla base di dati può essere la seguente:

Nome utente

Password

interfaccia di cercostudenti.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.nomeutente.value;

sceltanome=document.modulo1.password.value;

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

alert("Inserire Nome utente e password!");

return false;

};

return true;

}

// -->

</script>

<form action="cercodatistudenti.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">Nome utente</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="nomeutente" 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">Password</font></td>

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

<p align="center"><font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="password" name="password" 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 DOCUMENTI STUDENTE" name="cerco" style="font-family: Verdana; font-size: 14 pt"></td>

</tr>

</table>

</div>

</form>

listato di cercostudenti.php

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

<script language="php">

if (($nomeutente!="studente")||($password!="studente")) return;

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

$nomehost = "miohost";

$utente = "mionome";

$parola = "miapasswors";

$nome = "nomedeldatabase";

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

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

$richiesta="SELECT utenti.cognome, utenti.nome, utenti.scuola, utenti.comune, upload.titolo, upload.tipo, upload.descrizione, upload.data FROM upload INNER JOIN utenti ON upload.codiceutente=utenti.codiceutente WHERE utenti.nomeutente='$nomeutente' ";

$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] <br>");

};

mysql_close($connessione);

</script>

listato di cercodatistudenti.php

 

 

 

Un modulo per la registrazione di un nuovo utente non amministratore, per evidenti ragioni, può essere il seguente:

Cognome

Nome

Scuola
Comune della scuola
e-mail
Nickname
Password
Gruppo 

 

il cui listato è:

<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 Cognome e Nome!");

return false;

};

return true;

}

// -->

</script>

<form action="salvoutente.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="35%"><font size="4" face="Verdana" color="#FF0000">Scuola</font></td>

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

<font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="text" name="scuola" 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="35%"><font size="4" face="Verdana" color="#FF0000">Comune della

scuola</font></td>

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

<font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="text" name="comune" 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="35%"><font size="4" face="Verdana" color="#FF0000">e-mail</font></td>

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

<font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="text" name="email" 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="35%"><font size="4" face="Verdana" color="#FF0000">Nickname</font></td>

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

<font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="text" name="nomeutente" 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="35%"><font size="4" face="Verdana" color="#FF0000">Password</font></td>

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

<font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="password" name="password" 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="35%"><font size="4" face="Verdana" color="#FF0000">Gruppo&nbsp;</font></td>

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

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

<option value="">GRUPPO</option>

<option value="studente">studente</option>

<option value="docente">docente</option>

 

</select>

</td>

</tr>

<tr>

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

<p align="center"><input type="submit" value="SALVA I DATI" name="salvo" style="font-family: Verdana; font-size: 14 pt"></td>

</tr>

</table>

</div>

</form>

listato di inseriscodatiutenti.php

i dati del modulo verranno passati al programma php: salvoutenti.php che salva i dati del modulo sulla base di dati esistente sul server; il cui listato del programma può essere:

<?php

if($cognome=="") return;

print("Cerco di inserire i seguenti dati: $cognome ; $nome; $scuola; $comune; $email; $nomeutente $password; $gruppo<br>");

print ("Programma per inserire una riga nella nella tabella corsi di recupero");

$nomehost = "miohost";

$utente = "mionome";

$parola = "miapasswors";

$nome = "nomedeldatabase";

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

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

 

$richiesta="INSERT INTO utenti (cognome, nome, scuola, comune, email, nomeutente, password, gruppo) VALUES ('$cognome', '$nome', '$scuola', '$comune', 'email', '$nomeutente', '$password', '$gruppo')";

$risultato =mysql_query($richiesta);

if($risultato)

print("Dati inseriti correttamente");

else

print ("Dati non inseriti");

 

mysql_close($connessione);

?>

 

listato di salvoutenti.php

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

Gestione di una banca dati scolastica

 

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