Como salvar as informações do formulário em um banco de dados usando PDO e PHP (Parte 3)

Continuando a série sobre formulários, PHP e HTML vamos agora salvar as informações em um banco de dados para serem posteriormente consultadas.

Se você está perdido, sugiro acessar os artigos anteriores: Parte 1 e Parte 2.

Abaixo o código feito nos artigos anteriores para você começar a partir daqui:

<?php

// Recuperando os dados do formulário
$nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$mensagem = filter_input(INPUT_POST, 'mensagem', FILTER_SANITIZE_STRING);

// Verificando se os campos obrigatórios foram preenchidos
if (empty($nome) || empty($email) || empty($mensagem)) {
    header("Location: formulario.php?erro=1");
    exit;
}

// Verificando se o endereço de e-mail é válido
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    header("Location: formulario.php?erro=2");
    exit;
}

// Verificando se a mensagem não ultrapassa o tamanho máximo permitido
if (strlen($mensagem) > 500) {
    header("Location: formulario.php?erro=3");
    exit;
}

// Configurando o e-mail a ser enviado
$to = "[email protected]";
$subject = "Mensagem de contato";
$message = "Nome: $nome\nE-mail: $email\nMensagem: $mensagem";
$headers = "From: [email protected]\r\nReply-To: $email";

// Enviando o e-mail
mail($to, $subject, $message, $headers);

// Redirecionando o usuário para uma página de agradecimento
header("Location: agradecimento.html");
exit;

?>

Entra em cena o PDO

PDO (PHP Data Objects) é uma biblioteca de extensão do PHP que fornece uma interface para acessar bancos de dados de maneira genérica. Ela permite a conexão com vários tipos de bancos de dados, como MySQL, Oracle, PostgreSQL, entre outros, de forma padronizada, ou seja, as funções e métodos para realizar consultas e operações no banco de dados são os mesmos, independentemente do tipo de banco de dados utilizado.

Algumas vantagens de se utilizar PDO são:

  • Fácil de usar: a interface é simples e intuitiva, o que facilita o aprendizado e o desenvolvimento de aplicações.
  • Portabilidade: como a interface é genérica, é possível mudar o banco de dados utilizado sem precisar alterar o código.
  • Segurança: o PDO possui mecanismos de proteção contra ataques de SQL injection, o que aumenta a segurança da aplicação.
  • Suporte a vários bancos de dados: o PDO pode ser utilizado para se conectar a vários tipos de bancos de dados, como MySQL, Oracle, PostgreSQL, entre outros.

Adicionando PDO em nosso código

Para salvar os dados acima em um banco de dados usando PDO, primeiro é necessário estabelecer uma conexão com o banco de dados. Isso pode ser feito da seguinte forma:

$pdo = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'usuario', 'senha');

Em seguida, é preciso criar a consulta SQL para inserir os dados no banco. No exemplo a seguir, estamos supondo que a tabela no banco de dados possui os campos nome, email e mensagem. Em seguida podemos usar o método prepare do PDO para preparar a consulta para ser executada.

$sql = "INSERT INTO tabela (nome, email, mensagem) VALUES (:nome, :email, :mensagem)";
$stmt = $pdo->prepare($sql);

Depois, é preciso vincular os valores a serem inseridos na tabela com os parâmetros da consulta usando o método bindValue.

$stmt->bindValue(':nome', $nome);
$stmt->bindValue(':email', $email);
$stmt->bindValue(':mensagem', $mensagem);

Por fim, basta chamar o método execute para executar a consulta e inserir os dados no banco de dados.

$stmt->execute();

Aqui está como o código final ficará

<?php

// Recuperando os dados do formulário
$nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$mensagem = filter_input(INPUT_POST, 'mensagem', FILTER_SANITIZE_STRING);

// Verificando se os campos obrigatórios foram preenchidos
if (empty($nome) || empty($email) || empty($mensagem)) {
    header("Location: formulario.php?erro=1");
    exit;
}

// Verificando se o endereço de e-mail é válido
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    header("Location: formulario.php?erro=2");
    exit;
}

// Verificando se a mensagem não ultrapassa o tamanho máximo permitido
if (strlen($mensagem) > 500) {
    header("Location: formulario.php?erro=3");
    exit;
}

// Configurando o e-mail a ser enviado
$to = "[email protected]";
$subject = "Mensagem de contato";
$message = "Nome: $nome\nE-mail: $email\nMensagem: $mensagem";
$headers = "From: [email protected]\r\nReply-To: $email";

// Enviando o e-mail
mail($to, $subject, $message, $headers);

// Iniciando a conexão com o banco de dados
$pdo = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'usuario', 'senha');

// Preparando a declaração SQL
$sql = "INSERT INTO tabela (nome, email, mensagem) VALUES (:nome, :email, :mensagem)";
$stmt = $pdo->prepare($sql);


$stmt->bindValue(':nome', $nome);
$stmt->bindValue(':email', $email);
$stmt->bindValue(':mensagem', $mensagem);

$stmt->execute();

// Redirecionando o usuário para uma página de agradecimento
header("Location: agradecimento.html");
exit;

?>

E assim chegamos ao fim desta parte, onde aprendemos a capturar os dados e inseri-los no banco de dados mysql usando PDO. É importante ressaltar que todo o código mostrado aqui tem a única função de aprendizado e trabalho didático e não deve ser usado para fins comerciais.

Related posts

Leave a Comment