Codifica php simulazione 2014 2015

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:

  1. supponiamo di aver precedentemente creato un database di nome: “esame” tramite mysql, con le varie tabelle (e cioè quelle già descritte qui)
  2. 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).
  3. 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)

  4. 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:

Eccoli di seguito:

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;
}
?>

su^

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>

su^

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>";
}
?>

su^

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>";
}
?>

su^

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'];
}
?>

su^

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.

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.