Lezione Precedente
Lezione Successiva

Laboratorio di Sistemi Informativi

Modifica dati con PHP

Dopo aver visto come implementare le operazioni di visualizzazione e inserimento dati, occupiamoci della modifica di dati già presenti nella base di dati.

L'operazione è più complessa che il semplice inserimento, e di solito consta di un processo a 4 fasi:
  1. l'utente fornisce un valore chiave, che identifica i dati che si vogliono modificare;
  2. i dati sono presentati all'utente in una form, pronti per essere modificati;
  3. una volta che l'utente ha sottomesso la form, i dati sono aggiornati usando il comando SQL UPDATE (il valore chiave ottenuto al passo 1 è usato per identificare la riga da modificare);
  4. l'utente viene rediretto a una pagina con la "ricevuta" dell'operazione. Se la modifica è avvenuta con successo la ricevuta visualizza i dati modificati

Primo tentativo

Il passo 1 della procedure delineata qui sopra di solito prevede che l'utente faccia una qualche interrogazione al sistema. Per esempio, potrebbe richiedere l'elenco dei voli che partono e arrivano in determinati aeroporti, e scegliere quale volo modificare semplicemente cliccandoci sopra.

Per ora, tuttavia, concentriamoci sulla procedura di modifica, assumendo che l'utente inserisca in una form direttamente il codice del volo da modificare.

La procedura vista sopra è implementata dagli script: modifica-fase1.php, modifica-fase2.php, modifica-fase3.php, modifica-fase4.php.

Da notare l'uso dell'attributo VALUE per il tag INPUT, col quale è possibile pre-riempire una form con i valori desiderati (in questo caso le informazioni sul volo selezionato dall'utente).

Secondo tentativo

Vogliamo ora di migliorare l'interfaccia della procedura di modifica dati. In particolare, vogliamo:
  1. modificare l'implementazione della fase 1. All'utente viene proposto in una tabella l'elenco di tutti i voli disponibili, e seleziona quello da modificare cliccandoci sopra;
  2. modificare la form per il cambiamento dei dati, trasformando i campi di input per aeroporto partenza e destinazione in campi di tipo SELECT.
Per implementare il punto 1, occorre visualizzare una lista dei voli disponibili (e questo lo sappiamo fare), in modo che un click sui voli rimandi alla fase 2 della procedura. Questo non è particolarmente complicato, basta racchiudere la parte che si vuole rendere cliccabile con il tag A (in particolare, il tag <A HREF="modifica-fase2.php">). Tuttavia, bisogna fare in modo che nella fase 2 si possa sapere su quale volo è stato fatto click.

Noi sappiamo già come trasmettere un parametro tramite la URL. Basta quindi che la URL dentro l'attributo HREF contenga, come parametro, l'id del volo che è stato cliccato. In pratica, basta che per ogni volo si generi un tag <A> leggermente diverso, del tipo <A HREF="modifica-fase2.php?numvolo=xyz"> dove al posto di xyz va l'id del volo.

Per quanto riguarda la seconda modifica, l'unica cosa che potrebbe risultare un po' difficile è la pre-riempitura dei dati. Bisogna fare in modo che, nei campi a tendina riguardanti gli aeroporti di partenza e destinazione, siano selezionati in partenza gli aeroporti giusti (quelli corrispondenti al volo da modificare). Per il campo SELECT, non esiste l'attributo VALUE come per i campi di dipo testo; tuttavia,  è possibile scegliere quale delle varie opzioni è selezionata di default aggiungendo l'attributo SELECTED al corrispondente tag OPTION.

I nuovi script modifica2-fase1.php e modifica2-fase2.php implementano queste modifiche.

Esercizio

In realtà, modifica2-fase2.php implementa il campo a scelta multipla solo per l'aeroporto di partenza. Modificarlo in modo che anche per l'aeroporto di arrivo e per il numero aereo venga visualizzato un appropriato campo a scelta multipla, correttamente pre-riempito.

Lezione Precedente
Lezione Successiva

I file utilizzati in questa lezione: airdb2.sql, error.php, e .htaccess