La pagina di default della nostra applicazione mostrerà la lista dei record già al primo accesso, dato che però la tabella del database sarà inizialmente vuota, cominceremo ad occuparci dell'inserimento, ovvero della creazione del form e della quary per l'invio dei dati.
Il form per l'invio dei dati
Quando la variabile $azione
sarà valorizzata come form
chiameremo la funzione form()
che creerà un semplice modulo HTML e lo restituirà alla variabile $contenuto
:
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"><br />';
$out.='<label for="cognome">Cognome</label><br /><input type="text" id="cognome" name="cognome"><br />';
$out.='<label for="email">Email</label><br /><input type="email" id="email" name="email"><br />';
$out.='<input type="submit" class="btn btn-success" value="Salva">';
$out.='</form>';
return($out);
}
In questa funzione compare la variabile $id
che servirà per le operazioni che prevedono l'uso della chiave primaria, in ogni caso nello schema della pagina sarà sempre presente, pertanto andremo a leggere il valore della variabile e lo filtreremo con filter_var()
per accertarci che contenga solo numeri. Inseriremo questo codice all'inizio della pagina, immediatamente prima della lettura di $azione
:
$id = 0;
if(isset($_REQUEST['id'])) {$id = filter_var($_REQUEST['id'], FILTER_SANITIZE_NUMBER_INT);}
La keyword global
darà visibilità alla variabile all'interno della funzione.
Funzione per l'inserimento dei dati
A questo punto il form è pronto, verrà compilato e inviato alla pagina stessa come specificato nell'action
; la variabile $azione
e l'id verranno invece spediti tramite dei campi hidden
inseriti nel form, non è infatti utile che l'utente veda o possa modificare questi valori.
Ricaricando la pagina con azione = salva
l'azione sarà intercettata dal primo switch, verrà quindi chiamata la funzione salva()
:
function salva() {
global $id, $mysqli;
$nome = $_REQUEST["nome"];
$cognome = $_REQUEST["cognome"];
$email = $_REQUEST["email"];
if($id==0){
$sql = 'insert into utenti(nome, cognome, email) values(?, ?, ?)';
$result = $mysqli->prepare($sql);
$result->bind_param('sss', $nome, $cognome, $email);
$result->execute();
}
}
Schematicamente abbiamo questi passaggi:
- definizione della visibilità delle variabili (
$id
e connessione al database); - lettura dei dati passati dal form;
- memorizzazione nelle variabili;
- se l'id è uguale a zero, il nostro caso, procederemo con il
prepare
dell'SQL e la definizione dei segnaposto anonimi per i parametri; - bind dei parametri, rispettando l'ordine sequenziale e usando la keyword
s
per indicare che si tratterà di stringhe; - esecuzione della query per l'inserimento nella tabella.
A questo punto, un volta eseguita la funzione salva()
, la variabile $azione
verrà valorizzata come lista
e uscendo dal primo switch
verrà richiamata la funzione lista()
.