Codifica php simulazione 2014 2015
21 Maggio 2015
Posted by on Codifica php della simulazione seconda prova di Informatica (a.s. 2014/2015)
La traccia della simulazione al punto 7 (qui il testo completo e lo svolgimento delle altre parti) chiede testualmente:
“la codifica in un linguaggio a scelta di un segmento significativo dell’applicazione Web che consente l’interazione con la base di dati”
La codifica che forniremo sarà in linguaggio php; si è scelto di sviluppare la parte di inserimento, da parte di un caseificio, della quantità di latte prodotto in totale nella giornata e della parte di latte relativa alla produzione di forme (sempre della giornata corrente).
Non si ritiene opportuno permettere, come indicato dalla traccia, l’inserimento delle forme vendute e degli acquirenti in questo contesto; questo perché in una procedura automatizzata le vendite dovrebbero essere registrate all’atto stesso dell’acquisto da parte di un acquirente e quindi il numero di forme acquistate a fine giornata è ricavabile in automatico (così come gli acquirenti).
Osservazioni:
- supponiamo di aver precedentemente creato un database di nome: “esame” tramite mysql, con le varie tabelle (e cioè quelle già descritte qui)
- forniremo una versione alpha del codice che ci permetta quindi di lavorare in locale (localhost) senza creare utenti speciali ma tramite l’utente root senza password (password vuota); tali impostazioni dovranno ovviamente essere cambiate in fase di rilascio (deployment).
- le tabelle con le quali interagisce il segmento di codice che svilupperemo sono le seguenti:
tabelle:caseifici(idcaseificio, nome, titolare, indirizzo, password, idcomune) lavorazionelatte(idlavorazione, qta, qtaforme, data, idcaseificio)
- ipotizziamo che il caseificio abbia effettuato il login per inserire i dati relativi alla lavorazione del latte del giorno corrente e di avere quindi una variabile di sessione contenente l’id del caseificio supponiamo
$_SESSION['idcaseificio']
Per la codifica sono necessari i seguenti file:
- connessione.php
- inserimento_dati_latte.php
- invio_inserimento_dati_latte.php
- elenco_record_lavorazionelatte.php
- nomecaseificio.php
connessione.php
Contiene le istruzioni necessarie alla connessione e alla selezione del database; deve essere incluso in tutti quei file in cui è necessario interagire col database tramite le funzioni per l’accesso a mysql. E’ stato creato seguendo la seconda osservazione
<?php $hostname = '127.0.0.1'; //oppure 'localhost' $username = 'root'; $password = ''; if ( !( mysql_connect($hostname, $username, $password) ) ) { print "<h3>Errore di connessione al database</h3>\n"; exit; } if (! mysql_select_db("esame") ) { print "<h3>Errore: database non esistente</h3>\n"; exit; } ?>
inserimento_dati_latte.php
Contiene il modulo (form) di inserimento dati da parte dell’utente che successivamente chiama il file “invio_inserimento_dati_latte.php” per la memorizzazione effettiva nel database.
<BR><h2 align='center'><font face='Book Antiqua'> <?php print "<h2>CASEIFICIO: <u>"; include "nomecaseificio.php";//visualizza il nome del caseificio corrente print "</u></h2>"; ?> INSERIMENTO LATTE LAVORATO</font></h2> <FORM action='invio_inserimento_dati_latte.php' method='post'> Quantità totale: <input type=text name='qta' ><br><br> Quantità relativa alle forme*: <input type=text name='qtaforme' ><br><br> <INPUT type='submit' value='Conferma'> <INPUT type='reset' value='Annulla'> <p>*Inserire la quantità di latte usata per la produzione delle forme <br>NB: tutte le quantità si intendono in litri </FORM>
invio_inserimento_dati_latte.php
Contiene le istruzioni per l’inserimento dei dati, provenienti dalla form contenuta nel file precedente, nel database (in particolare nella tabella lavorazionelatte).
<?php include "connessione.php"; $qta = $_POST['qta']; $qtaforme = $_POST['qtaforme']; $data = date("Y-m-d"); //data corrente nel formato aaaa-dd-mm come richiesto da mysql $idcaseificio = $_SESSION['idcaseificio']; //variabile di sessione $query = "insert into lavorazionelatte(qta, qtaforme, data, idcaseificio) values ('$qta', '$qtaforme', '$data', '$idcaseificio')" ; $risultato = mysql_query( $query ); if($risultato) { print "<br><h2>INSERIMENO RIUSCITO</h2>"; print "<br><h2><a href='elenco_record_lavorazionelatte.php? idcaseificio=$idcaseificio'>VISUALIZZA I DATI</a></h2>"; } ?>
elenco_record_lavorazionelatte.php
Contiene la parte di visualizzazione di alcuni record inseriti negli ultimi giorni (con in testa l’inserimento della giornata) per avere un riscontro immediato (si è ritenuto opportuno visualizzare solo gli ultimi 10 inserimenti).
<?php include "connessione.php"; $idcaseificio = $_POST['idcaseificio']; $risultato = mysql_query("select * from lavorazione latte where idcaseificio=$idcaseificio order by data DESC limit 10"); if($risultato) { print "<h2>CASEIFICIO: <u>"; include "nomecaseificio.php";//visualizza il nome del caseificio corrente print "</u></h2>"; print "<p><h2>QUANTITA' LATTE DEGLI ULTIMI 10 GIORNI</h2>"; print "<table> <th width="30%">TOTALE (litri)</th> <th width="30%">QTA LATTE PER FORME</th> <th width="30%">DATA</th>"; //intestazione while( $riga = mysql_fetch_array($risultato) ) { print "<tr><td>".$riga['qta']."</td>"; print "<td>".$riga['qtaforme']."</td>"; print "<td>".$riga['data']."</td></tr>"; } print "</table>"; } ?>
nomecaseificio.php
Contiene il codice riusabile (incluso nel file elenco_record_lavorazionelatte.php) che serve a ricavare il nome del caseificio a partire dal suo identificativo (contenuto nella variabile $_SESSION[‘idcaseificio’])
<?php $risultato = mysql_query("select nome from caseifici where idcaseificio=$_SESSION[idcaseificio]"); if($risultato) { $riga = mysql_fetch_array($risultato); print $riga['nome']; } ?>
NB: il funzionamento non è stato testato, quindi sono possibili errori od omissioni; la parte grafica è stata curata al minimo, anche perché non avrebbe senso impiegare tempo considerati i tempi limitati di un esame di Stato.