Fondamenti delle basi di dati

Corso MySQL a cura del prof. Pietro De Paolis

Salvaggio dei dati provenienti dal modulo e ricerca

Nella  lezione precedente abbiamo compilato un modulo con i dati da inserire nella tabella della nostra base di dati di nome studenti. I dati passati dal modulo verrano presi dal nostro programma in php in modo automatico e memorizzati nelle variabili php : $cognome; $nome; $comunenascita;$giorno; $mese; $anno; $comuneresidenza; $indirizzo; $telefono; $classe; $sezione; $corso;

Volendo trasformare la data di nascita nel formato: giorno/mese/anno usiamo una istruzione del tipo:

if ($giorno!="") $datanascita= $giorno."/".$mese."/".$anno;

A questo punto possiamo fare una richiesta di inserimento dei dati con una istruzione MySQL INSERT INTO nometabella e precisamente:

$richiesta="INSERT INTO studenti (cognome, nome, datanascita, comunenascita, comuneresidenza, indirizzo, telefono, classe, sezione, corso) VALUES ('$cognome', '$nome', '$datanascita', '$comunenascita', '$comuneresidenza', '$indirizzo', '$telefono', '$classe', '$sezione', '$corso')"; 

Il nostro programma completo per inserire una riga sarà:

<?php

if($cognome=="") return;

if ($giorno!="") $datanascita= $giorno."/".$mese."/".$anno;

print ("Programma per inserire una riga nella nella tabella studenti");

$nomehost = "miohost";

$utente = "mionome";

$parola = "miapasswors";

$nome = "nomedeldatabase";

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

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

 

$richiesta="INSERT INTO studenti (cognome,nome,datanascita,comunenascita,comuneresidenza,indirizzo,telefono,classe,sezione,corso) VALUES  ('$cognome', '$nome', '$datanascita', '$comunenascita', '$comuneresidenza', '$indirizzo', '$telefono', '$classe', '$sezione', '$corso')"; 

$risultato =mysql_query($richiesta);

mysql_close($connessione);

?>

Salviamo con il nome di salvostudenti.php ed eseguiamo inseriscodatistudenti.php che lo richiamerà al momento della registrazione dei dati sul nostro database.

Ricerca sulla base di dati

Nella  lezione precedente abbiamo visto che il nostro esercizio prevedeva tre richieste sul database, la prima era:

1 - Dato uno studente fornire la data di nascita, il comune di nascita, il comune di residenza, l'indirizzo, il numero di telefono, la classe frequentata nel corrente anno scolatico.

Prepariamo, quindi, una prima interfaccia per inserire nome e cognome dello studente e poi un secondo programma in php che ci visualizzi i dati della ricerca.

L'interfaccia di ricerca  può essere la seguente:

Cognome

Nome

Modulo

Poichè i dati devono essere passati da un programma ad un altro dobbiamo per forza utilizzare un modulo che ci consenta di inviare i dati; la istruzione html sarà:

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

al termine del modulo metteremo:

</form>

Il modulo ha nome: modulo1; quando si premerà il tasto di ricerca dei dati dapprima vi sarà un controllo dei dati inviati tramite una funzione javascript di nome: controllo1() e successivamente verrà caricata la pagina: cercodatistudenti.php che cercherà i dati dello studente nella tabella studenti della base di dati.

La funzione controllo1() la vedremo in seguito.

Utlizziamo intanto una tabella in html per poter visualizzare in modo ordinato i dati da inserire; nella prima riga della tabella metteremo:

Cognome

<table><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>

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

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

</tr>

</table>

 

 

cioè stiamo utilizzando una istruzione html:

<input type="text" name="cognome" size="22" >

la quale genera una casella di testo di nome: cognome; quando l'utente scriverà il dato nella casella di testo esso verrà memorizzato nella variabile html: cognome, che poi diventerà $cognome in php.

Analogamente faremo per il nome:

Nome

<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>

 

Il listato completo del programma che acquisisce i dati degli studenti è 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="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">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 STUDENTE" name="cerco" style="font-family: Verdana; font-size: 14 pt"></td>

</tr>

</table>

</div>

</form>

 

listato di cercostudenti.php

Funzione in javascript controllo1()

E' buona norma effettuare un primo controllo dei dati prima di effettuare la ricerca; per questo useremo una apposita funzione in javascript; i controlli potrebbero essere molteplici, noi ci limiteremo a controllare:

1 - Che l'utente abbia inserito sia il cognome che il nome prima di effettuare l'invio dei dati;

Controllo di nome e cognome

La funzione javascript controllo1() ha una parte che controlla il nome e il cognome ed è la seguente:

Istruzione Significato

// controllo che ci sia il cognome e il nome

sceltacognome=document.modulo1.cognome.value;

 

metto nella variabile sceltacognome il valore contenuto nella casella di testo del modulo1 che si chiama: cognome
sceltanome=document.modulo1.nome.value; metto nella variabile sceltanome il valore contenuto nella casella di testo del modulo1 che si chiama: nome

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

alert("Inserire sia Cognome che Nome!");

return false;

};

 

controllo che le due variabili non siano vuote; se sono vuote segnalo con alert e blocco l'invio dei dati con: return false

Quando l'utente preme il tasto di convalida: 

tutti i dati contenuti nel modulo vengono passati al programma in php che serve ad effettuare la ricerca dei dati dello studente voluto e cioè cercodatistudenti.php.

I dati passati dal modulo verrano presi dal nostro programma in php in modo automatico e memorizzati nelle variabili php : $cognome; $nome;

A questo punto possiamo fare una richiesta di ricerca dei dati con una istruzione MySQL SELECT  e precisamente:

$richiesta="SELECT * FROM studenti WHERE studenti.cognome='$cognome' AND studenti.nome='$nome' ";

cioè cerchiamo con * tutti i dati; con FROM studenti nella tabella studenti; ma cercheremo solo quelli dello studente il cui cognome e nome corrispondano entrambi a quello voluto; infatti studenti.cognome è il dato contenuto nella tabella studenti alla colonna cognome; mentre $cognome è il dato inviato dal modulo di ricerca; essi devono coincidere; analogamente per il nome;infatti vi abbiamo messo una  AND per indicare che le due condizioni devono essere vere contemporaneamente.

Il nostro programma completo per la ricerca dei dati dello studente voluto sarà:

<?php

if($cognome=="") return;

print ("Programma per la ricerca di uno studente nella tabella studenti");

$nomehost = "miohost";

$utente = "mionome";

$parola = "miapasswors";

$nome = "nomedeldatabase";

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

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

 

$richiesta="SELECT * FROM studenti WHERE studenti.cognome='$cognome' AND studenti.nome='$nome' ";

$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);

?>

Salviamo con il nome di cercodatistudenti.php ed eseguiamo cercostudenti.php che lo richiamerà al momento della ricerca dei dati sul nostro database.

Ricerca sulla base di dati per singola colonna

Nella  lezione precedente abbiamo visto che il nostro esercizio prevedeva tre richieste sul database, la seconda richiesta era:

2 - Dato un comune di residenza fornire un elenco di tutti gli studenti residenti in quel comune.

Prepariamo, quindi, una interfaccia per inserire il comune di residenza dello studente e poi un secondo programma in php che ci visualizzi i dati della ricerca.

L'interfaccia di ricerca  può essere la seguente:

Comune di residenza

Modulo

Poichè i dati devono essere passati da un programma ad un altro dobbiamo per forza utilizzare un modulo che ci consenta di inviare i dati; la istruzione html sarà:

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

al termine del modulo metteremo:

</form>

Il modulo ha nome: modulo1; quando si premerà il tasto di ricerca dei dati dapprima vi sarà un controllo dei dati inviati tramite una funzione javascript di nome: controllo1() e successivamente verrà caricata la pagina: cercodaticomune.php che cercherà i dati dello studente nella tabella studenti della base di dati.

La funzione controllo1() la vedremo in seguito.

Utlizziamo intanto una tabella in html per poter visualizzare in modo ordinato i dati da inserire; nella prima riga della tabella metteremo:

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

<tr>

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

 

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

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

</span>

</font>

</td>

</tr>

 

 

cioè stiamo utilizzando una istruzione html:

<input type="text" name="comuneresidenza" size="22" >

la quale genera una casella di testo di nome: comuneresidenza; quando l'utente scriverà il dato nella casella di testo esso verrà memorizzato nella variabile html: comuneresidenza, che poi diventerà $comuneresidenza in php.

Il listato completo del programma che acquisisce i dati degli studenti è il seguente:

<script language="JavaScript">

<!--

// controllo che ci siano le due scelte

function controllo1(){

// controllo che ci sia il comune di residenza

sceltacomuneresidenza=document.modulo1.comuneresidenza.value;

if (sceltacomuneresidenza=="") {

alert("Inserire il Comune di residenza!");

return false;

};

return true;

}

// -->

</script>

<form action="cercodaticomune.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">Comune di residenza</font></td>

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

<font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="text" name="comuneresidenza" 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 STUDENTI DEL COMUNE" name="cerco" style="font-family: Verdana; font-size: 14 pt"></td>

</tr>

</table>

</div>

</form>

listato di cercocomune.php

Funzione in javascript controllo1()

E' buona norma effettuare un primo controllo dei dati prima di effettuare la ricerca; per questo useremo una apposita funzione in javascript; i controlli potrebbero essere molteplici, noi ci limiteremo a controllare:

1 - Che l'utente abbia inserito il Comune di residenza prima di effettuare l'invio dei dati;

Controllo del Comune di residenza 

La funzione javascript controllo1() ha una parte che controlla il coune di residenza ed è la seguente:

Istruzione Significato
// controllo che ci sia il comune di residenza

sceltacomuneresidenza = document.modulo1.comuneresidenza.value;

 

 

metto nella variabile sceltacomuneresidenza il valore contenuto nella casella di testo del modulo1 che si chiama: comuneresidenza
if (sceltacomuneresidenza=="") {

alert("Inserire il Comune di residenza!");

return false;

 

controllo che la variabile non sia vuota; se è vuota segnalo con alert e blocco l'invio dei dati con: return false

Quando l'utente preme il tasto di convalida: 

tutti i dati contenuti nel modulo vengono passati al programma in php che serve ad effettuare la ricerca dei dati dello studente voluto e cioè cercodaticomune.php.

I dati passati dal modulo verrano presi dal nostro programma in php in modo automatico e memorizzati nelle variabili php : $comuneresidenza;

A questo punto possiamo fare una richiesta di ricerca dei dati con una istruzione MySQL SELECT  e precisamente:

$richiesta="SELECT * FROM studenti WHERE studenti.comuneresidenza='$comuneresidenza' ";

cioè cerchiamo con * tutti i dati; con FROM studenti nella tabella studenti; ma cercheremo solo quelli degli studenti il cui Comune di residenza corrisponde a quello voluto; 

Il nostro programma completo per la ricerca dei dati dello studente voluto sarà:

<?php

if($comuneresidenza=="") return;

print ("Programma per la ricerca degli studenti dello stesso Comune nella tabella studenti");

$nomehost = "miohost";

$utente = "mionome";

$parola = "miapasswors";

$nome = "nomedeldatabase";

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

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

 

$richiesta="SELECT * FROM studenti WHERE studenti.comuneresidenza ='$comuneresidenza' ";

$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);

?>

Salviamo con il nome di cercodaticomune.php ed eseguiamo cercocomune.php che lo richiamerà al momento della ricerca dei dati sul nostro database.

Lasciamo allo studente il compito della risoluzione della terza richiesta dell'esercizio e cioè:

3 - Data una classe fornire l'elenco di tutti gli alunni della classe.

A questo punto è bene riunire tutti i moduli del nostro programma in un'unica pagina, vedi:

Gestione di una base di dati scolatica

Esercizi da svolgere

1 - Migliorare i moduli di ricerca dei dati in modo che i dati trovati nella base di dati scolastica vista nelle lezioni precedenti ( Gestione di una base di dati scolatica ) siano inseriti in una tabella, in modo da essere visualizzati in modo più leggibile.

 

2 - Un esercizio commerciale del settore alimentare effettua delle vendite giornaliere che vengono annotate sui registri contabili in base al rapporto giornaliero del registratore di cassa.

Creare un programma di gestione della base di dati del negozio che consenta:

a) - la creazione di una tabella: vendite;

b) - la memorizzazione del corrispettivo giornaliero con giorno mese e anno di incasso.

c) - la ricerca dell'incasso conoscendo la data di incasso.

 

3 - Una biblioteca scolastica possiede migliaia di testi scolastici di cui si conosce: autore, titolo, casa editrice, prezzo, breve riassunto in formato testo.

Creare un programma di gestione della base di dati che consenta:

a) - la creazione di una tabella: libri;

b) - la memorizzazione dei dati sopra elencati per ogni libro della biblioteca;

c) - la ricerca per autore;

d) - la ricerca per titolo del libro;

e) - la ricerca per casa editrice.

 

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