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

La classe PHP per la gestione dei dati

Cominciamo ad implementare la classe PHP che consentirà di creare il form, leggere i dati, inserire e modificare i record, renderli visibili in formato lista o dettaglio ed eliminare i record.
Cominciamo ad implementare la classe PHP che consentirà di creare il form, leggere i dati, inserire e modificare i record, renderli visibili in formato lista o dettaglio ed eliminare i record.
Link copiato negli appunti

Procediamo ora con la definizione della classe che si occuperà di creare il form, leggere i dati del form, inserire e modificare i record, renderli visibili in formato lista o dettaglio e, infine, eliminare i record.

Definiamo quindi due proprietà public, l'$id e il $tipo. Nella prima inseriremo l'$id del record oggetto delle nostre operazioni o "0" quando non ci sarà bisogno di un $id valorizzato; lo definiamo public perché al caricamento della pagina che istanzia la classe leggeremo il valore dell'$id e lo assegneremo.

$tipo fa invece riferimento alla tabella da gestire e avrà valore news oppure autori.

Il primo metodo sarà pubblico e lo chiameremo crea_lista(). il suo scopo è creare un output HTML con la lista dei record presenti nella tabella; altre feature da integrare sono: la paginazione, un motore di ricerca interno e l'ordinamento sulle colonne. L'output sarà formattato grazie a Bootstrap..

La parte rilevante del metodo inizia con la query sulla tabella struttura che permette di estrarre tutti i nomi dei campi da utilizzare nella SELECT, per questo motivo nella tabella struttura abbiamo inserito un campo lista: verranno estratti i record che hanno valore "1".:

$sql='SELECT * FROM struttura WHERE tabella="'.$this->tipo.'" AND lista="1"';

Andiamo a prepararla ed eseguirla con PDO, eseguiremo poi un ciclo sull'array dei risultati. Prima abbiamo però bisogno di preparare diversi dettagli. Innanzitutto al nostro metodo passeremo come global la variabile $db contenente la connessione. Poi definiremo un array vuoto, $campi, per i nomi dei campi da estrarre, e una variabile stringa $where contenente una stringa vuota: ci servirà per costruire dinamicamente la clausola WHERE della nostra query.

Definiamo una variabile $cerca come stringa vuota, se il form di ricerca e filtro dei dati verrà utilizzato questa variabile conterrà il valore passato in GET. Stesso discorso per $order, a differenza della precedente useremo questa variabile per riordinare i dati e quindi per la clausola ORDER BY; anche questa verrà gestita in base ad un eventuale valore ottenuto tramite GET.

Ultima variabile sarà $page,inizializzata a "1", che conterrà il numero della pagina da caricare.

In un contenitore div andremo a costruire un form costituito da un campo di input di tipo search e un bottone submit: servirà per filtrare i dati, il metodo di invio del form sarà GET e la variabile $cerca leggerà il valore inserito. Infine inseriremo un pulsante che ricaricherà la pagina che useremo per l'inserimento dei nuovi record. A questo punto possiamo impostare la tabella html che conterrà l'output dei dati.

Possiamo ora tornare al nostro ciclo e impostare l'HTML di intestazione della tabella. I nomi dei campi saranno dei link attivi per l'ordinamento, ogni link sarà costruito all'interno di un if per l'ordinamento inverso. In pratica se la nostra query dovesse essere ordinata per il nome del campo sul cui sta insistendo il ciclo, l'ordinamento diventerà DESC. Tutto ciò lo memorizzeremo nella variabile $o:

if($order == $array['nome']){
$o = $array['nome'].' DESC';
}else{
$o = $array['nome'];
}

Creiamo la stringa HTML con l'intestazione della tabella e concateniamola con una variabile di output che verrà restituita dal metodo:

$out.='<td class="'.$array['nome'].'"><a href="?azione=lista&cerca='.$cerca.'&order='.$o.'" data-order="ASC">'.$array['nome'].'</a></td>';

Inseriamo i nomi dei campi nell'array:

array_push($campi,$array['nome']);

E, infine, costruiamo la clausola WHERE della futura query concatenando i nome dei campi con la variabile $cerca. Per semplicità decideremo di usare LIKE come operatore e OR per congiungere vari campi, ovviamente arricchendo il form anche queste scelte potrebbero non essere più arbitrarie.

if($where!=''){$where.=')';}

In conclusione possiamo completare l'intestazione della nostra tabella con qualche riga HTML:

$out.='<td class="funzioni">Dettaglio</td>';
$out.='<td class="funzioni">Copia</td>';
$out.='<td class="funzioni">Edit</td>';
$out.='<td class="funzioni">Delete</td>';
$out.='</tr></thead>';

Ti consigliamo anche