Gravar dados de qualquer formulário em PHP [ Parte I ]
Vêm amigos do Blog Grupo Universos (é não ficou “bão” esse inicio da postagem, então leia assim: Olá pessoal), iniciarei novamente uma seqüência de postagens sobre como recuperar dados de um formulário e gravar no banco de dados utilizando o php como linguagem de programação. Nesta minha primeira postagem irei mostrar como recuperar todos os dados de um formulário, independente da quantidade de campos e gravá-las no banco passando como parâmetro somente o nome da tabela do banco de dados.
O detalhe dessa postagem é que eu irei diferenciar dos inúmeros Blogs ao qual sempre vejo postagens da mesma forma (alguns até são cópias de outros) o método de executar uma gravação no banco.
Você já pensou ou ao menos deve ter passado por sua cabeça: “Porque não criar uma função que recupere todos os dados de um formulário independente da quantidade de campos?”, se não pensou, pense agora, todos os formulários, seja para cadastro ou envio de itens por email são particularmente comuns em qualquer desenvolvimento web. Para desenvolver um é necessário criar um formulário, anotarem os nomes de todos os campos, recuperarem todas as variáveis, pegar o nome da tabela, pegar o nome das colunas e então fazer toda essa ligação. Além desse trabalho todo é preciso lembrar um ponto importante: E quando um formulário ou tabela no banco de dados sofre uma atualização? Nem preciso responder a essa pergunta sobre o que é preciso fazer quando isso acontece, não é mesmo?
BANCO DE DADOS:
Para iniciar, será preciso criar um banco de dados, lembrando que nesse exemplo será utilizado o mysql como plataforma de gerenciamento de banco de dados.
EM SQL:
1
CREATE database banco1;
Se tiver o phpmyadmin instalado poderá ser utilizada no modo visual a criação do banco de dados.
TABELA:
Também é necessário criar uma tabela nesse banco de dados e será dado o nome de cadastro a ela, com os campos:
id, nome, email, assunto e telefone.
EM SQL:
1
CREATE TABLE cadastro (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(60) NOT NULL, email VARCHAR(60) NOT NULL, assunto VARCHAR(100) NOT NULL, telefone VARCHAR(14) NOT NULL) ENGINE = InnoDB;
O próximo passo é criar a página que contém o formulário:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Gravar dados de qualquer formulário em PHP [ Parte I ]</title>
</head>
<body>
<form id="texte" method="post" action="gravar.php">
<ul>
<li>
<label for="nome">Nome:</label>
<input type="text" id="nome" name="nome" />
</li>
<li>
<label for="email">Email:</label>
<input type="text" id="email" name="email" />
</li>
<li>
<label for="assunto">Assunto:</label>
<input type="text" id="assunto" name="assunto" />
</li>
<li>
<label for="telefone">Telefone:</label>
<input type="text" id="telefone" name="telefone" />
</li>
<li>
<input type="submit" id="enviar" name="enviar" />
</li>
</ul>
</form>
</body>
</html>
IMPORTANTE:
Os nomes dos campos do formulário devem ser os mesmos da coluna da tabela para esse primeiro exemplo.
GRAVAR.PHP
O arquivo gravar.php ficará responsável por pegar essas variáveis se conectar ao banco e fazer a inserção no banco de dados:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
<?php
mysql_connect('localhost','root',''); // Realizo a conexão com o banco de dados
mysql_select_db('banco1'); // Seleciono o banco de dados
/* Crio uma função ao qual irá esperar o parâmetro tabela */
function gravar($tabela) {
/* Recebo todos os campos do formulário e elimino o último, pois normalmente em um formulário o último input é o submit e gravo na variável $val */
$val = end($_POST);
/* Procuro pela posição em que o elemento está para excluí-lo da matriz de dados */
$pos = array_search($val, $_POST);
/* Removo o item submit da matriz de dados */
unset($_POST[$pos]);
/* Através do foreach eu percorro todos os campos e todos os conteúdos desses campos */
foreach ($_POST as $campo => $val) {
/* Separo os campos e gravo em uma variável( na verdade uma nova matriz de dados) chamado de $campos[] */
$campos[] = $campo;
/* Faço o mesmo com o conteúdo, porém utilizo as funções: mysql_real_espace_string para evitar que seja realizado uma tentativa de burlar o banco de dados utilizando injeção de SQL e strip_tags eliminar as tags HTML */
$conteudo[] = mysql_real_escape_string(strip_tags($val));
}
/* Crio a SQL que irá ser inserida no banco de dados */
$insert = "INSERT INTO $tabela(".implode(',',$campos).") VALUES('".str_replace(",","','",implode(',',$conteudo))."')";
/* Faço a inserção no banco de dados e caso haja algum erro na inserção, será retornado através da função mysql_error() */
mysql_query($insert) or die ('ERRO: '.mysql_error());
/* Caso não haja erros exibi a mensagem de sucesso. */
echo 'Dados gravados com sucesso';
}
/* Chamo a função gravar passando o parâmetro que é o nome da tabela */
echo gravar('cadastro');
?>
Caso queira fazer download dos arquivos. Clique Aqui, porém os arquivos estão sem os comentários.
Essa é a primeira de uma série de quatro postagens que irei realizar sobre gravar dados no banco de dados utilizando o PHP. Na próxima postagem irei mostrar como deixar essa função mais completa, com outros recursos. Até a próxima.
