=== Imparando.net ===

Soluzione esempio compito database

Nei file inclusi nello zip si trova una soluzione del compito proposto nel PDF e anche il file .sql che contiene le tabelle richieste nel problema.

In questa soluzione e in tutte quelle in cui viene chiesto di utilizzare un'implementazione base di solito i passi sono i seguenti:

  • ogni azione viene rappresentata in un file separato: in questo caso c'è un file che rappresenta l'azione di raccogliere i dati attraverso un form e un altro che esegue l'inserimento vero e proprio all'interno della tabella.
  • volendo il file con le istruzioni di connessione (nell'esempio connessione.php) può essere tenuto separato, per evidenziare un minimo di organizzazione e modularità nel codice
  • se non esplicitamente richiesto, i controlli sugli errori sono assenti o ridotti al minimo. In particolare:
    1. usando PDO nel caso di errori di connessione o altri tipi di errori del database verrà automaticamente lanciata un'eccezione, che in generale si può lasciare non gestita
    2. la verifica di un inserimento può essere fatta, come nell'esempio, ma non è necessario fare controlli sui dati che arrivano dalla form, che si può supporre essere validi
  • in generale il codice HTML deve essere corretto, ma minimale, come nel codice di esempio. Nelle immagini mostrate nel testo del problema, la presenza di alcuni elementi grafici è dovuta esclusivamente a motivi di impaginazione: quindi se sono ad esempio sono presenti dei radio button quelli dovranno essere mostrati, se la loro posizione poi non fosse uguale a quella mostrata non è un problema.
  • la soluzione in generale prevede:
    1. connessione al database
    2. invio di una o più query, anche di tipo DML a seconda delle richieste del problema, utilizzando i prepared statement dove è necessario
    3. iterazione sui risultati della query per la produzione di un qualche genere di codice HTML, spesso una tabella o qualcosa di analogo, utilizzando un costrutto di iterazione come il while e il metodo fetch() oppure un foreach.