Gestione del modulo in un unico file PHP
Nella lezione precedente il nostro modulo era posizionato
su una pagina, ma inviato a un'altra.
In realtà non è obbligatorio. Se si lascia
l'attributo action vuoto o lo si rimuove
completamente, il modulo verrà inviato a questa
stessa pagina.
Come funzionerà: al primo accesso alla pagina compileremo il modulo con i dati e cliccheremo sul pulsante. Dopodiché la pagina si aggiornerà e il suo codice verrà eseguito nuovamente, ma questa volta con i dati del modulo.
Vediamo un esempio. Supponiamo di avere in un unico file un modulo e la sua gestione:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Al primo accesso alla pagina la funzione var_dump
stamperà un array vuoto. E dopo l'invio del modulo
stamperà i dati del modulo. Cioè la prima
volta $_GET sarà vuoto, mentre la seconda volta
- conterrà i dati del modulo.
Questo può causare problemi. Supponiamo, ad esempio, di inserire numeri nel modulo e di voler visualizzare la somma di questi numeri:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
In questo caso, al primo accesso alla pagina
vedremo errori PHP, dovuti al fatto che
l'array $_GET è vuoto, mentre noi tentiamo di accedere
ai suoi elementi.
Va detto che potresti non vedere gli errori nel browser. In tal caso controlla che la visualizzazione degli errori PHP sia attiva, e assicurati che sia il tuo primo accesso alla pagina e che non ci siano dati del modulo nella barra degli indirizzi.
Risolviamo il problema. Aggiungiamo una condizione in cui verificheremo che il modulo sia stato inviato.
Ad esempio, si può verificare se $_GET
non è vuoto. Se $_GET non è vuoto -
allora il modulo è stato inviato e si può eseguire
la somma. Altrimenti siamo ancora
al primo accesso alla pagina e la somma non verrà
eseguita. Quindi, ecco il codice corretto:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Chiedi all'utente cognome, nome e patronimico. Dopo l'invio del modulo, visualizza i dati inseriti.