- Learn
- Form d’invio e inserimento dei dati
Form d’invio e inserimento dei dati
La prima volta che accederemo alla nostra pagina PHP la tabella degli utenti sarà vuota, pertanto la prima azione utile da prendere in considerazione è l’inserimento di un nuovo record. Il link “aggiungi nuovo” ricaricherà la stessa pagina PHP passando come querystring la variabile $azione
, lo switch
che la gestisce entrerà nel case
“form” e chiamerà la funzione crea_form()
.
Lo scopo di questa funzione è creare un form HTML per poi inserire i dati nel nostro database. Quindi, di fatto, inseriremo il codice HTML in una variabile che verrà restituita dalla funzione. Nella nostra pagina, ogni volta che una funzione restituisce un output in formato HTML lo memorizzeremo in una variabile $output
che stamperemo.
function form() {
global $id;
$out='';
$out.='<form name="info" action="?" method="post">';
$out.='<input type="hidden" id="id" name="id" value="'.$id.'">';
$out.='<input type="hidden" id="azione" name="azione" value="salva">';
$out.='<label for="nome">Nome</label><br /><input type="text" id="nome" name="nome" required><br />';
$out.='<label for="cognome">Cognome</label><br /><input type="text" id="cognome" name="cognome" required><br />';
$out.='<label for="email">Email</label><br /><input type="email" id="email" name="email" required><br />';
$out.='<input type="submit" class="btn btn-success" value="Salva">';
$out.='</form>';
return($out);
}
Il form sarà modellato sulla base della tabella utenti
, quindi prevedremo tre campi per l’inserimento di nome
, cognome
e email
. Sfruttando HTML 5 potremmo completare velocemente la fase dei controlli, inserendo l’attributo required
all’interno dei campi di input che vogliamo rendere obbligatori.
Nel form, oltre ai campi da compilare, avremo anche due campi di servizio, ma li inseriremo come campi nascosti. Nel primo inseriremo l’azione, in modo che al submit
del form venga innescato l’opportuno switch
che ci dirotti sulla funzione di salvataggio. Nel secondo andremo invece a scrivere il valore di una variabile id
.
Nel caso dell’inserimento questa variabile sarà valorizzata a 0; essa viene letta e settata all’inizio della pagina PHP, inizializzata a 0 e passata come variabile global
alla funzione. Per sicurezza andremo a controllare il contenuto della variabile tramite le filter_var
, nel caso specifico, faremo il sanitize dei numeri interi, ovvero il nostro $id
sarà ripulito da tutto ciò che non è compatibile con il formato di un numero intero.
Inseriremo quindi il codice necessario nella parte superiore della pagina insieme alla lettura della variabile $azione
:
$id = 0;
if(isset($_REQUEST['id'])) {$id = filter_var($_REQUEST['id'],FILTER_SANITIZE_NUMBER_INT);}
Riepilogando: accedo alla pagina, essendo la tabella del database vuota l’unica azione utile è l’inserimento di un nuovo utente; attivo il link, ricarico la stessa pagina ma con querystring azione=form
. A questo punto viene invocata crea_form()
che stamperà il codice del form.
Una volta compilato il form, premendo sul pulsante submit
spediremo i dati del form al server ricaricando ancora una volta la stessa pagina, ma questa volta con azione=salva
. Il nostro switch
provvederà a chiamare la funzione che si occuperà di scrivere i dati nel database:
function salva() {
global $id, $connection;
$nome = $_REQUEST["nome"];
$cognome = $_REQUEST["cognome"];
$email = $_REQUEST["email"];
if($id==0){
$sql='INSERT INTO utenti(nome, cognome, email) VALUES(:nome, :cognome, :email)';
$stmt = $connection->prepare($sql);
$stmt->bindParam(':nome',$nome,PDO::PARAM_STR);
$stmt->bindParam(':cognome',$cognome,PDO::PARAM_STR);
$stmt->bindParam(':email',$email,PDO::PARAM_STR);
$stmt->execute();
}
}
Il primo passaggio è semplice: si tratta di recuperare le informazioni necessarie, quindi l’id che arriverà dal form a 0 e la variabile contenente la connessione al database. Poi salveremo in tre variabili i dati provenienti dal form.
$id
verrà usata anche per decidere se eseguire un INSERT
o un UPDATE
; se l’id è uguale a zero, il nostro caso, procederemo all’inserimento del un nuovo record. Prepariamo quindi la stringa SQL relativa all’inserimento con la definizione dei parametri: come da specifica PDO useremo parametri nominali, molto più comodi dei segnaposto anonimi di MySQLi.
Il passaggio successivo sarà il bind dei parametri, dove associare la variabile valorizzata in precedenza al segnaposto e specificare il tipo di dato della variabile stessa. Quest’operazione è raccomandata per evitare l’iniezione di codice malevolo ed è a tutti gli effetti uno dei maggiori punti di forza di PDO.
Arrivati a questo punto non resta che eseguire la query: stringa SQL e parametri verranno inviati al server separatamente e non sarà più possibile stampare la stringa “completa” a fini del debug.
Il record viene quindi inserito nel database e si passa all’esecuzione della funzione lista()
che mostrerà l’elenco dei record presenti nella tabella utenti
del database.
Se vuoi aggiornamenti su mysql, PHP inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Appmethod, IDE C++ per app Android, iOS e altro
Appmethod è un IDE cross platform, con il quale creare app Android, iOS, Windows etc. Utilizzando C++ e il framework […]