prepare(" SELECT comune.idComune, comune.nome AS nomeComune, provincia.nome AS nomeProvincia, provincia.sigla FROM comune JOIN provincia ON comune.idProvincia = provincia.idProvincia "); $stmt->execute(); $comuni = $stmt->fetchAll(PDO::FETCH_ASSOC); if (postMethod()) { switch($azione) { case "predefinito": { // OKOKFATTO try { if (!$idIndirizzo) { $messaggio = "Id indirizzo non valido"; die("Id indirizzo non valido"); } $pdo->beginTransaction(); // Rimozione dei precedenti indirizzi predefiniti $stmt = $pdo->prepare(" UPDATE indirizzo SET predefinito = 0 WHERE idCliente = :idCliente "); $stmt->execute([ "idCliente" => $idCliente ]); // Settando indirizzo corrente come predefinito $stmt = $pdo->prepare(" UPDATE indirizzo SET predefinito = 1 WHERE idCliente = :idCliente AND idIndirizzo = :idIndirizzo "); $stmt->execute([ "idCliente" => $idCliente, "idIndirizzo" => $idIndirizzo ]); $pdo->commit(); break; } catch (PDOException $e) { if ($pdo -> inTransaction()) { $pdo->rollBack(); } $messaggio = "Errore durante l'aggiornamento dell'indirizzo" . $e->getMessage(); break; } } case "inserisci": { // OKOKFATTO try { if ( $via === "" || $numeroCivico === "" || $idComune === "" ) { $messaggio = "Compila i campi correttamente"; die("Compila i campi correttamente"); } /* Verifica della presenza di indirizzi giĆ registrati a nome del cliente. Questa operazione non richiede che sia inserita nella beginTransaction() */ $stmt = $pdo->prepare(" SELECT EXISTS ( SELECT 1 FROM indirizzo WHERE idCliente = :idCliente ) AS esiste "); $stmt->execute([ "idCliente" => $idCliente ]); $predefinito = $stmt->fetchColumn(); if ($predefinito) { // Sono presenti record di indirizzi $predefinito = 0; } else { // Non sono presenti record di indirizzi $predefinito = 1; } /* Inizia la transazione, si inserisce nel database la via. */ $pdo->beginTransaction(); $stmt = $pdo->prepare(" INSERT INTO indirizzo (via, numeroCivico, predefinito, idComune, idCliente) VALUES (:via, :numeroCivico, :predefinito, :idComune, :idCliente) "); $stmt->execute([ "via" => $via, "numeroCivico" => $numeroCivico, "predefinito" => $predefinito, "idComune" => $idComune, "idCliente" => $idCliente ]); $pdo->commit(); $messaggio = "Indirizzo aggiunto con successo"; break; } catch (PDOException $e) { if ($pdo -> inTransaction()) { $pdo->rollBack(); } $messaggio = "Errore durante l'inserimento dell'indirizzo" . $e->getMessage(); break; } } case "elimina": { // OKOKFATTO try { if (!$idIndirizzo) { $messaggio = "Id indirizzo non valido"; die("Id indirizzo non valido"); } $pdo->beginTransaction(); $stmt = $pdo->prepare(" DELETE FROM indirizzo WHERE idIndirizzo = :idIndirizzo AND idCliente = :idCliente "); $stmt->execute([ "idIndirizzo" => $idIndirizzo, "idCliente" => $idCliente ]); $pdo->commit(); $messaggio = "Indirizzo eliminato con successo"; break; } catch (PDOException $e) { if ($pdo -> inTransaction()) { $pdo->rollBack(); } $messaggio = "Errore durante l'eliminazione dell'indirizzo" . $e->getMessage(); break; } } default: $messaggio = "Azione non valida"; break; } } $stmt = $pdo->prepare(" SELECT indirizzo.idIndirizzo, indirizzo.via, indirizzo.numeroCivico, indirizzo.predefinito, comune.nome AS nomeComune, provincia.sigla AS siglaProvincia FROM (indirizzo JOIN comune ON indirizzo.idComune = comune.idComune) JOIN provincia ON comune.idProvincia = provincia.idProvincia WHERE idCliente = :idCliente "); $stmt->execute([ "idCliente" => $idCliente ]); $indirizzi = $stmt->fetchAll(PDO::FETCH_ASSOC); $pageTitle = "Indirizzi"; $basePath = ".."; require __DIR__ . "/../includes/header.php"; ?>