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

Creazione delle tabelle per i dati

Realizzare un semplice CMS con PHP e PDO. Cominciamo definendo la struttura della nostra applicazione e progettando le tabelle per i dati.
Realizzare un semplice CMS con PHP e PDO. Cominciamo definendo la struttura della nostra applicazione e progettando le tabelle per i dati.
Link copiato negli appunti

PHP permette di costruire l'infrastruttura necessaria a mantenere aggiornato un sito Web. Tuttavia chi ha esperienza di programmazione sa che la creazione dei backend è spesso un'operazione lunga e ripetitiva. Sarebbe quindi interessante limitare al minimo la creazione manuale del codice e creare qualcosa di più astratto che permetta la generazione di tutti gli step necessari al raggiungimento del nostro obiettivo.

Creeremo quindi una classe PHP che si occuperà della creazione dei form, della lettura dei dati per l'inserimento e la modifica dei record, della loro visualizzazione in formato lista o dettaglio e, infine, dell'eliminazione dei record.

La classe sarà astratta da qualsiasi riferimento ad una tabella specifica, ma recupererà le informazioni da una tabella presente nel nostro database dove, di fatto, andremo a descrivere la struttura delle tabelle che vogliamo gestire.

Un dettaglio importante consisterà nell'inserire all'interno della classe il minor numero possibile di rigidità, onde evitare di dover seguire regole di naming vincolanti che renderebbero lo strumento poco pratico.

Il nostro lavoro sarà organizzato in questo modo:

  • creazione del database inserendo prima due tabelle di dati e poi la tabella "master" che conterrà le informazioni sulle altre due tabelle;
  • creazione della classe;
  • creazione delle pagine per la gestione dei dati.

Le tabelle per i dati

La prima tabella si chiamerà news e sarà costituita dai campi titolo (VARCHAR(255)), testo (TEXT), data_pubblicazione (DATE) e autore_id (INT) che servirà come chiave esterna per la tabella degli autori: ipotizzeremo una relazione uno a molti, quindi "un autore molte news".

Passiamo ai campi di "servizio". Il primo sarà un campo id chiave primaria autoincrementale; tutte le tabelle avranno una chiave primaria con AUTOINCREMENT e con nome "id". Creeremo poi un campo ordine (INT), per definire ordinamenti diversi da quelli di default, e data_insert, un TIMESTAMP con valore predefinito CURRENT_TIMESTAMP per registrare data e ora d'inserimento. L'ultimo campo sarà un DATETIME, chiamato data_update, per tener traccia dell'ultima modifica effettuata.

La tabella delle news a questo punto è finita, ovviamente in base alla necessità si possono aggiungere ulteriori campi.

CREATE TABLE 'news' (
  'id' int(11) NOT NULL,
  'titolo' varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  'testo' text COLLATE utf8_unicode_ci NOT NULL,
  'data_pubblicazione' date NOT NULL,
  'autore_id' int(11) NOT NULL,
  'ordine' int(11) NOT NULL,
  'data_insert' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  'data_update' datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Indici per le tabelle 'news'
--
ALTER TABLE 'news'
  ADD PRIMARY KEY ('id');
--
-- AUTO_INCREMENT per la tabella 'news'
--
ALTER TABLE 'news'
  MODIFY 'id' int(11) NOT NULL AUTO_INCREMENT;

La seconda tabella sarà quella degli autori. Creeremo due campi per nome e cognome (VARCHAR(255)) e poi i quattro campi di servizio seguendo le stesse regole della tabella delle news, quindi: id, ordine, data_insert e data_update.

CREATE TABLE 'autori' (
  'id' int(11) NOT NULL,
  'nome' varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  'cognome' varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  'ordine' int(11) NOT NULL,
  'data_insert' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  'data_update' datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Indici per le tabelle 'autori'
--
ALTER TABLE 'autori'
  ADD PRIMARY KEY ('id');
-- AUTO_INCREMENT per la tabella 'autori'
--
ALTER TABLE 'autori'
  MODIFY 'id' int(11) NOT NULL AUTO_INCREMENT;

Ti consigliamo anche