Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 33 di 56
  • livello intermedio
Indice lezioni

Scrittura del database (INSERT)

Proseguiamo nella creazione del nostro CMS basato su PHP e MySQL con la gestione della fase di inserimento dei dati nel database.
Proseguiamo nella creazione del nostro CMS basato su PHP e MySQL con la gestione della fase di inserimento dei dati nel database.
Link copiato negli appunti

Una volta creato il form del nostro CMS, componente che si può utilizzare sia per l'inserimento e sia per la modifica dei record così come per la per la funzione copia, dobbiamo passare al salvataggio dei dati. Il pulsante per eseguire il submit richiamerà sempre la stessa pagina, variando l'azione e chiamando tramite lo switch il metodo della classe preposto alla scrittura: salva().

Questo metodo verr` utilizzato sia per l'inserimento dei nuovi record sia per la modifica, fra le varie soluzioni possibili ne adotteremo una che, praticamente, limiter` notevolmente le differenze. Come prima questione dovremo capire se siamo in fase di inserimento (INSERT) o aggiornamento (UPDATE), la differenza sta nell'avere valorizzato o meno il nostro campo chiave.

struttura chiave
$sql='SELECT nome FROM struttura WHERE tabella="'.$this->tipo.'" AND chiave="1"';
$stmt = $db->prepare($sql);
$stmt->execute();
$array = $stmt->fetch(PDO::FETCH_ASSOC);
if($_REQUEST[$array['nome']] == 0 || $_REQUEST[$array['nome']] == ''){
	$sql = 'INSERT INTO '.$this->tipo.'('.$array['nome'].',data_insert) VALUES("?","'.date("Y-m-d H:i:s").'")';
	$stmt = $db->prepare($sql);
	$stmt->execute();
	}

La prima query si rivolge alla tabella struttura if

Il secondo campo, anche questo non necessario da esplicitare, è relativo alla data inserimento, avendo di default CURRENT_TIMESTAMP id

Per recuperare il valore dell'id lastInsertId() id

$id = $db->lastInsertId();
$this->id=$id;
$key = $array['nome'];

Il problema che si pone ora riguarda quali parametri arrivano dal nostro form. La soluzione più semplice è andare a leggere la tabella struttura, per i campi che non sono chiave, della tabella di nostro interesse e fare un ciclo per l'inserimento. La costruzione del ciclo verrà fatta in questo modo:

$sql='SELECT * FROM struttura WHERE tabella="'.$this->tipo.'" AND visibile="1" AND chiave="0"';
$stmt = $db->prepare($sql);
$stmt->execute();
while($array = $stmt->fetch(PDO::FETCH_ASSOC)){
..
}

All'interno del ciclo, al fine di evitare errori, vado effettivamente ad accertarmi che arrivi qualcosa dal nostro form facendo attenzione alla complicazione imposta dalla checkbox

if((isset($_REQUEST[$array['nome']]) || $array['tipo_input']=='checkbox')){
..
}

Diventa ora indispensabile un sistema per la gestione degli errori, argomento che verrà trattato nella prossima lezione.

Ti consigliamo anche