- Learn
- PHP e MySQL, la guida
- Dettaglio ed eliminazione record
Dettaglio ed eliminazione record
La funzione dettaglio
Il nostro CMS inizia a prendere forma: nella lista dei record, oltre al pulsante iniziale per inserire nuovi elementi, per ciascuna riga abbiamo un pulsante modifica e copia. Dobbiamo occuparci ancora della funzione per visualizzare il dettaglio di un singolo record.
Per la verità la maggior parte dei problemi sono stati già risolti, il meccanismo sarà identico a quello della creazione del form ma semplificato: non ci sarà bisogno di diversificare i campi di input, ma basterà stampare la coppia costituita dal campo label
e dal valore assegnato per poi raccogliere tutto in una variabile $out
che conterrà la stringa HTML da stampare.
Procediamo con la SELECT
sulla tabella dei dati usando l’id passato in querystring, poi preleviamo la lista dei campi dalla tabella struttura
:
$out = '';
$sql = 'SELECT * FROM '.$this->tipo.' WHERE id='.$this->id;
$stmt = $db->prepare($sql);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$sql = 'SELECT * FROM struttura WHERE tabella="'.$this->tipo.'" AND visibile="1" order by ordine';
$dati = $db->prepare($sql);
$dati->execute();
while($array = $dati->fetch(PDO::FETCH_ASSOC)){
..
}
Per ogni riga della tabella struttura
che abbiamo deciso di rendere visibile andremo a chiamare il metodo creaText()
che ci permetterà di creare l’HTML necessario passandogli il valore e l’etichetta da associare:
$out.=$this->creaText($row[$array['nome']],$array['label']);
La stampa della stringa HTML sarà una versione semplificata della creazione dei form:
public function creaText($valore,$label){
$out='<div>';
$out.='<label>'.$label.'</label>';
$out.='<span>'.htmlentities(stripslashes($valore)).'</span>';
$out.='</div>';
return($out);
}
In questo modo riusciamo a costruire la scheda del contenuto che sarà abbastanza spartana, ma è possibile arricchire e personalizzare la presentazione aggiungendo altri parametri e stilizzazioni.
Eliminazione di un record
Anche l’operazione di eliminazione di un record in sé non pone grossi problemi, l’unico aspetto da tenere sotto controllo è quello di evitare le cancellazioni accidentali. Per ovviare a questo problema useremo una funzione Javascript tra il click sul bottone e l’invio della richiesta al server, questa funzione chiederà conferma dell’operazione e solo una volta accettato procederemo con l’eliminazione del record.
Per velocizzare la scrittura del codice useremo jQuery, libreria molto diffusa e di facile utilizzo. Partiamo dal link che sarà creato in questo modo:
<a class="elimina" data-id="'.$row[$key].'"><span class="glyphicon glyphicon-trash"></span></a>
La funzione Javascript sarà inclusa in un file js
esterno in modo da poterla utilizzare in tutte le pagine.
$(document).ready(function(){
$('.elimina').on('click',function(){
var id=$(this).data('id');
var scelta=window.confirm('Sei sicuro di voler eliminare il record?');
if(scelta){location.href='?azione=elimina&id='+id;}
})
});
In pratica agganciamo l’evento click
sui tag con classe elimina
, andiamo a leggere il valore dell’id stampato nell’attributo custom data-id
e mostriamo una finestra di conferma. Se l’utente accetta verrà ricaricata la pagina con azione elimina
e con l’id del record da eliminare.
Nella classe PHP abbiamo un metodo elimina()
che va a cancellare il record. Le due variabili che entrano in gioco, il nome della tabella e il valore dell’id, li abbiamo come proprietà dell’oggetto e quindi le informazioni necessarie sono al completo.
public function elimina(){
global $db;
$sql = 'DELETE FROM '.$this->tipo.' WHERE id='.$this->id.' LIMIT 1';
$stmt3 = $db->prepare($sql);
$stmt3->execute();
}
Questo metodo provvede all’eliminazione fisica del record dal database.
Conclusioni
Con quest’ultimo passaggio abbiamo completato le operazioni CRUD, create-read-update-delete, raggiungendo l’obiettivo di gestire i dati nelle tabelle del nostro database senza dover riscrivere codici tutto sommato molto simili. Creeremo un file per inizializzare la classe settando la proprietà tipo
con il nome della tabella e popoleremo la tabella struttura
con i dati relativi alla nuova tabella, l’unica convenzione richiesta è il campo chiave id
, ma volendo con qualche riga di codice in più anche questa convenzione potrebbe essere eliminata.
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
Creare una single page application in 60 minuti
Le Single Page Application sono un nuovo modello di sviluppo per le applicazioni web. Queste applicazioni garantiscono una miglior User-Experience […]