
POO e CRUD
Criaremos uma classe chamada Veiculo que servirá para gerenciar informações de veículos, permitindo a criação, leitura, atualização e deleção de dados na base de dados.
A classe Veiculo será equipada com métodos para acessar o banco de dados de forma segura e eficiente. Estruturaremos nosso código para incluir getters e setters, garantindo o encapsulamento e a validação dos dados. Além de representar a lógica do veículo, a nossa classe também estabelecerá a conexão com o banco, facilitando operações CRUD (Create, Read, Update, Delete).
Criar o Banco de Dados
CREATE DATABASE gerenciador_veiculos;
Selecione o Banco de Dados
USE gerenciador_veiculos;
Criar Tabela: veiculo
CREATE TABLE veiculos (
id INT AUTO_INCREMENT PRIMARY KEY,
marca VARCHAR(50) NOT NULL,
modelo VARCHAR(50) NOT NULL,
ano INT NOT NULL
);
Estrutura (arquivos):
1.conexao.php
2.veiculo.php
3.index.php
4.editar.php
5.processar.php
Criar a conexão com o banco de dados:
1.conexao.php
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
} catch (PDOException $e) {
die("Erro de conexão: " . $e->getMessage());
}
}
?>
Criar a Classe Veículo:
2. veiculo.php
pdo = getConnection();
}
// Getters e Setters com validação
public function getId() { return $this->id; }
public function getMarca() { return $this->marca; }
public function getModelo() { return $this->modelo; }
public function getAno() { return $this->ano; }
public function setId($id) { $this->id = $id; }
public function setMarca($marca) { $this->marca = $marca; }
public function setModelo($modelo) { $this->modelo = $modelo; }
public function setAno($ano) {
if(is_numeric($ano) && $ano > 1885 && $ano <= date('Y')) {
$this->ano = $ano;
} else {
throw new Exception("Ano inválido!");
}
}
// Métodos CRUD
public function create() {
$sql = "INSERT INTO veiculos (marca, modelo, ano) VALUES (:marca, :modelo, :ano)";
$stmt = $this->pdo->prepare($sql);
$stmt->bindParam(':marca', $this->marca);
$stmt->bindParam(':modelo', $this->modelo);
$stmt->bindParam(':ano', $this->ano);
$stmt->execute();
$this->id = $this->pdo->lastInsertId();
}
public function read($id) {
$sql = "SELECT * FROM veiculos WHERE id = :id";
$stmt = $this->pdo->prepare($sql);
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
return $stmt->fetch(PDO::FETCH_ASSOC);
}
public function update() {
$sql = "UPDATE veiculos SET marca = :marca, modelo = :modelo, ano = :ano WHERE id = :id";
$stmt = $this->pdo->prepare($sql);
$stmt->bindParam(':marca', $this->marca);
$stmt->bindParam(':modelo', $this->modelo);
$stmt->bindParam(':ano', $this->ano);
$stmt->bindParam(':id', $this->id, PDO::PARAM_INT);
$stmt->execute();
}
public function delete($id) {
$sql = "DELETE FROM veiculos WHERE id = :id";
$stmt = $this->pdo->prepare($sql);
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
}
public function listAll() {
$sql = "SELECT * FROM veiculos";
$stmt = $this->pdo->query($sql);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
?>
Criar o Formulário:
3. index.php
Gestão de Veículos
Gestão de Veículos
Veículos Cadastrados
ID
Marca
Modelo
Ano
Ações
listAll();
foreach ($veiculos as $carro) {
echo "
{$carro['id']}
{$carro['marca']}
{$carro['modelo']}
{$carro['ano']}
";
}
} catch (Exception $e) {
echo "Erro: " . $e->getMessage();
}
?>
Atualização do Arquivo
4. editar.php
read($_GET['id']);
} catch (Exception $e) {
echo "Erro: " . $e->getMessage();
exit;
}
}
?>
Editar Veículo
Editar Veículo
Arquivo de Processamento PHP
5. processar.php
setMarca($_POST['marca']);
$veiculo->setModelo($_POST['modelo']);
$veiculo->setAno($_POST['ano']);
$veiculo->create();
header('Location: index.php');
} elseif ($_POST['acao'] === 'Atualizar' && isset($_POST['id'])) {
$veiculo->setId($_POST['id']);
$veiculo->setMarca($_POST['marca']);
$veiculo->setModelo($_POST['modelo']);
$veiculo->setAno($_POST['ano']);
$veiculo->update();
header('Location: index.php');
} elseif ($_POST['acao'] === 'Excluir' && isset($_POST['id'])) {
$veiculo->delete($_POST['id']);
header('Location: index.php');
}
}
} catch (Exception $e) {
echo "Erro: " . $e->getMessage();
}
?>