CRUD PHP 8.3 - Maykon Silveira

Vou criar um exemplo completo de um CRUD (Create, Read, Update, Delete) usando PHP 8.3, PDO e MySQL. Esse CRUD será para uma tabela simples de usuários no banco de dados.

1. Estrutura do Banco de Dados

Suponhamos que você tenha uma tabela usuarios com a seguinte estrutura:

CREATE TABLE usuarios (
   id INT AUTO_INCREMENT PRIMARY KEY,
   nome VARCHAR(100) NOT NULL,
   email VARCHAR(100) NOT NULL UNIQUE,
   idade INT NOT NULL
);
 

2. Código PHP para o CRUD

a) Configuração da Conexão PDO

<?php
// Configuração do banco de dados
$host = 'localhost';
$dbname = 'meubanco';
$username = 'root';
$password = 'senha123';

try {
   $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
   $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
   die("Erro de conexão: " . $e->getMessage());
}
?>
 

b) Create (Criar Novo Usuário)

Este arquivo vai permitir inserir um novo usuário na tabela usuarios.

<?php
include 'conexao.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $nome = $_POST['nome'];
   $email = $_POST['email'];
   $idade = $_POST['idade'];

   try {
       $sql = "INSERT INTO usuarios (nome, email, idade) VALUES (:nome, :email, :idade)";
       $stmt = $pdo->prepare($sql);
       $stmt->bindParam(':nome', $nome);
       $stmt->bindParam(':email', $email);
       $stmt->bindParam(':idade', $idade);

       $stmt->execute();

       echo "Usuário criado com sucesso!";
   } catch (PDOException $e) {
       echo "Erro ao criar usuário: " . $e->getMessage();
   }
}
?>

<form method="POST">
   Nome: <input type="text" name="nome" required><br>
   Email: <input type="email" name="email" required><br>
   Idade: <input type="number" name="idade" required><br>
   <input type="submit" value="Criar Usuário">
</form>
 

c) Read (Listar Usuários)

Este arquivo vai listar todos os usuários da tabela usuarios.

<?php
include 'conexao.php';

try {
   $sql = "SELECT * FROM usuarios";
   $stmt = $pdo->query($sql);
   $usuarios = $stmt->fetchAll(PDO::FETCH_ASSOC);

   if (count($usuarios) > 0) {
       foreach ($usuarios as $usuario) {
           echo "ID: " . $usuario['id'] . " | Nome: " . $usuario['nome'] . " | Email: " . $usuario['email'] . " | Idade: " . $usuario['idade'] . "<br>";
           echo "<a href='update.php?id=" . $usuario['id'] . "'>Editar</a> | <a href='delete.php?id=" . $usuario['id'] . "'>Excluir</a><br><br>";
       }
   } else {
       echo "Nenhum usuário encontrado.";
   }
} catch (PDOException $e) {
   echo "Erro ao listar usuários: " . $e->getMessage();
}
?>
 

d) Update (Atualizar Usuário)

Este arquivo permitirá editar os dados de um usuário já existente.

<?php
include 'conexao.php';

if (isset($_GET['id'])) {
   $id = $_GET['id'];

   // Buscar o usuário a ser editado
   try {
       $sql = "SELECT * FROM usuarios WHERE id = :id";
       $stmt = $pdo->prepare($sql);
       $stmt->bindParam(':id', $id);
       $stmt->execute();
       $usuario = $stmt->fetch(PDO::FETCH_ASSOC);

       if (!$usuario) {
           echo "Usuário não encontrado.";
           exit;
       }
   } catch (PDOException $e) {
       echo "Erro ao buscar usuário: " . $e->getMessage();
       exit;
   }
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $nome = $_POST['nome'];
   $email = $_POST['email'];
   $idade = $_POST['idade'];

   try {
       $sql = "UPDATE usuarios SET nome = :nome, email = :email, idade = :idade WHERE id = :id";
       $stmt = $pdo->prepare($sql);
       $stmt->bindParam(':nome', $nome);
       $stmt->bindParam(':email', $email);
       $stmt->bindParam(':idade', $idade);
       $stmt->bindParam(':id', $id);

       $stmt->execute();

       echo "Usuário atualizado com sucesso!";
   } catch (PDOException $e) {
       echo "Erro ao atualizar usuário: " . $e->getMessage();
   }
}
?>

<form method="POST">
   Nome: <input type="text" name="nome" value="<?= $usuario['nome'] ?>" required><br>
   Email: <input type="email" name="email" value="<?= $usuario['email'] ?>" required><br>
   Idade: <input type="number" name="idade" value="<?= $usuario['idade'] ?>" required><br>
   <input type="submit" value="Atualizar Usuário">
</form>
 

e) Delete (Excluir Usuário)

Este arquivo vai excluir um usuário da tabela usuarios.


<?php
include 'conexao.php';

if (isset($_GET['id'])) {
   $id = $_GET['id'];

   try {
       // Excluir usuário
       $sql = "DELETE FROM usuarios WHERE id = :id";
       $stmt = $pdo->prepare($sql);
       $stmt->bindParam(':id', $id);

       $stmt->execute();

       echo "Usuário excluído com sucesso!";
   } catch (PDOException $e) {
       echo "Erro ao excluir usuário: " . $e->getMessage();
   }
}
?>


3. Estrutura Completa de Arquivos

Aqui está a estrutura completa dos arquivos que você precisará:

  1. conexao.php – Arquivo responsável pela conexão ao banco de dados. 

<?php
// Configuração do banco de dados
$host = 'localhost';
$dbname = 'meubanco';
$username = 'root';
$password = 'senha123';

try {
   $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
   $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
   die("Erro de conexão: " . $e->getMessage());
}
?>
 

1 - create.php – Formulário e lógica para criar um novo usuário.

2 - read.php – Exibe todos os usuários com links para editar ou excluir.

3 - update.php – Formulário e lógica para editar um usuário.

4 - delete.php – Lógica para excluir um usuário.

4. Conclusão

Agora você tem um sistema básico de CRUD em PHP usando PDO e MySQL. O código cobre as operações essenciais para criar, ler, atualizar e excluir usuários em um banco de dados.

Funcionalidades:

  • Create: Permite adicionar novos usuários.
  • Read: Lista todos os usuários com opções de editar ou excluir.
  • Update: Permite editar os dados de um usuário existente.
  • Delete: Permite excluir um usuário.

Este exemplo usa uma estrutura simples, mas você pode expandir facilmente para adicionar mais funcionalidades, como validação de dados, tratamento de erros mais robusto, e até mesmo uma interface mais amigável com o uso de Bootstrap ou outras bibliotecas de front-end.

Simples, rápido e eficiente, não é mesmo? 🚀

Atenciosamente,
Maykon Silveira

Usamos cookies para personalizar sua experiência. Ao continuar visitando este site, você concorda com o uso de cookies

Mais