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:
- l'utente fornisce un valore chiave, che identifica i dati
che si vogliono modificare;
- i dati sono presentati all'utente in una form, pronti per essere
modificati;
- 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);
- 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:
- 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;
- 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.
I file utilizzati in questa lezione: airdb2.sql,
error.php,
e .htaccess