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

Inserimento di un nuovo record

Continuiamo ad implementare il nostro CMS basato su PHP, PDO e MySQL realizzando la parte dell'applicazione che presiede all'inserimento dei record.
Continuiamo ad implementare il nostro CMS basato su PHP, PDO e MySQL realizzando la parte dell'applicazione che presiede all'inserimento dei record.
Link copiato negli appunti

Il link per l'inserimento di un nuovo record della nostra applicazione ricarica la pagina news.php modificando la variabile $azione passata come querystring. Tale variabile viene letta e gestita dallo switch creato ad hoc. Ovviamente, come avvenuto nel corso del precedente accesso, la classe viene istanziata con le due proprietà $id, che in questo caso, sarà valorizzato a zero, e $tipo, che conterrà il valore news, ovvero il nome della tabella da utilizzare.

Lo switch permetterà di invocare il metodo crea_form() all'interno del quale come variabili globali avremo la connessione al database $db e la variabile $azione. Quest'ultima ci servirà per stabilire, eventualmente, se siamo in fase di inserimento, di modifica oppure di copia. Lo stesso metodo verrà utilizzato infatti sia per l'inserimento e sia per la modifica; possiamo anche pensare a una terza opzione, la copia, ovvero un nuovo inserimento a partire dai dati popolati da un inserimento precedente.

Pertanto la prima operazione da compiere sarà l'estrazione dei dati dalla tabella delle news, in modo che nel caso della modifica e della copia avremo i valori dei value, mentre nel caso dell'INSERT nessun record corrisponderà al criterio della clausola WHERE e quindi i campi resteranno puliti.

$sql = 'SELECT * FROM '.$this->tipo.' WHERE id='.$this->id;
$stmt = $db->prepare($sql);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);

Prepariamo ora in una variabile $out la porzione di HTML statico del nostro form:

$out='<form id="info" name="info" action="?azione=salva" method="post" enctype="multipart/form-data"&glt;';
$out.='<fieldset&glt;<legend&glt;Inserimento/modifica '.$this->tipo.'</legend&glt;';

Arriviamo quindi ad uno dei punti salienti del nostro lavoro: per sapere quali campi preparare dovremo andare a leggere la tabella struttura, in essa troveremo tutte le informazioni necessarie a costruire il nostro form. La query dovrà essere filtrata con il nome della tabella e ordinata tramite il campo ordine.

$sql = 'SELECT * FROM struttura WHERE tabella="'.$this->tipo.'" AND visibile="1" ORDER BY ordine, id';
$dati = $db->prepare($sql);
$dati->execute();

Nel ciclo che andremo a sviluppare per scorrere i dati estratti dalla query inseriremo uno switch che opererà sulla variabile contenente il tipo di input della riga in oggetto. In base al tipo di input chiameremo un metodo privato che ci restituira l'HTML relativo alla sua generazione:

while($array = $dati->fetch(PDO::FETCH_ASSOC)){
	if($azione == 'copy' && $array['nome']=='id'){$row[$array['nome']]=0;}
	switch($array['tipo_input']){
	..
	}
}

Come si può notare esaminando il codice, è presente un controllo con cui azzerare la variabile $id nel caso in cui si stia eseguendo la copia di un record.

Ti consigliamo anche