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.