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

Tabella del database e connessione

Creiamo un'applicazione CRUD (create, read, update, delete) basata su MySQLi e PHP partendo dalla tabella del database e dalla connessione a MySQL.
Creiamo un'applicazione CRUD (create, read, update, delete) basata su MySQLi e PHP partendo dalla tabella del database e dalla connessione a MySQL.
Link copiato negli appunti

Logica dell'applicazione

Come descritto in precedenza MySQLi è, insieme a PDO, una delle due opzioni di PHP alternative alle obsolete mysql functions. Procediamo con la creazione di un'unica pagina PHP dove andremo a condensare tutte le operazione di gestione dei dati relativi a una tabella (utenti) tramite un'applicazione CRUD (create, read, update, delete) di un nostro file PHP.

CREATE TABLE utenti (
  id int(11) NOT NULL,
  nome varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  cognome varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  email varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  anno_nascita year(4) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

La struttura della pagina sarà impostata sulla variabile $azione che determinerà cosa la pagina PHP dovrà fare; avremo due tipi di operazioni, in scrittura e in lettura, che corrisponderanno a funzioni con cui restituire output solo in caso di lettura.

La variabile sarà gestita da un doppio switch: il primo per le operazioni che non prevedono output (insert, update e delete), il secondo per quelle che li prevedono come la creazione del form, il dettaglio del singolo record e la lista di tutti i record presenti in tabella.

Ogni case dello switch corrisponderà a una funzione, in caso di output verrà restituita una variabile contenente la stringa HTML da stampare.

Possiamo iniziare creando la struttura della nostra pagina.

Connessione al database

La prima operazione di cui abbiamo bisogno è la connessione al database:

$mysqli = new mysqli('localhost', 'root', '', 'corso_2016');
if ($mysqli->connect_error) {
    die('Errore di connessione (' . $mysqli->connect_errno . ') '. $mysqli->connect_error);
}

La seconda è la lettura della variabile $azione; elencheremo anche le azioni ammesse in modo che se la nostra variabile assumesse un valore imprevisto rientreremmo in un caso di default:

$azioniAmmesse = array('lista', 'dettaglio', 'form', 'salva', 'elimina');
$azione='';
if(isset($_REQUEST['azione'])) {
	$azione = $_REQUEST['azione'];
	if(!in_array($azione, $azioniAmmesse)){
		$azione='';
	}
}

La funzione isset() serve per evitare il notice al primo accesso, o nel caso in cui venga rimossa, o dimenticata, l'azione. in_array() è la funzione che restituisce un valore booleano (true o false) a seconda che la stringa cercata sia presente o meno nell'array $azioniAmmesse.

Impostazione degli switch

A questo punto possiamo procedere con l'impostazione degli switch, il primo per la scrittura:

switch ($azione) {
	case "salva":
		salva();
		$azione = 'lista';
		break;
	case "elimina":
		elimina();
		$azione = 'lista';
		break;
	}
function salva(){}
function elimina(){}

In questo modo quando la variabile $azione corrisponde ad uno dei due case viene eseguita la funzione associata, nel primo caso salva servirà sia per l'insert che per l'update, nel secondo avremo elimina per la cancellazione del record. Andremo poi a riassegnare la variabile $azione che verrà gestita dal secondo switch, quello che si occuperà di restituire l'output.

switch ($azione) {
	case 'lista':
		$contenuto = lista();
		break;
	case 'form':
		$contenuto = form();
		break;
	case 'dettaglio':
		$contenuto = dettaglio();
		break;
	default:
		$contenuto = lista();
		break;
	}
function lista(){}
function dettaglio(){}
function form(){}

In questo caso le tre funzioni previste restituiranno una stringa HTML che verrà memorizzata nella variabile $contenuto e successivamente stampata nella seguente pagina:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<?php echo $contenuto; ?>
</div>
</body>
</html>

Si tratta du una struttura ridotta all'osso, in essa abbiamo giusto il collegamento via CDN al file CSS di Bootstrap e, soprattutto, la stampa della variabile contenuto nella nostra pagina.

Ti consigliamo anche