PHP
Cadastro no Banco de Dados com Formulário em PHP
Um problema muito comum e frequente para quem ainda está começando na programação com PHP, é saber como usar o formulário HTML para cadastrar dados no Banco de Dados.
Apresentaremos nesse artigo duas maneiras simples de se fazer isso, uma usando o antigo método PHP para programadores mais inexperientes, e outro em PDO para quem já tem um pouco a mais de experiência com a linguagem.
Bem começaremos criando nosso Banco de Dados e nossa tabela bem simples para usar como exemplo nesse artigo.
CREATE DATABASE TestePost; USE TestePost; CREATE TABLE IF NOT EXISTS Teste ( idPost INT AUTO_INCREMENT PRIMARY KEY , descricaoPost VARCHAR(150) NULL DEFAULT NULL );
Iniciamos com a estrutura básica do HTML para fazermos o Formulário, lembrando que não vamos adicionar estilos, pois o foco é como funciona as passagens de parâmetros dos forms.
<!DOCTYPE HTML> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <title>Seu Site</title> </head> <body> <form id="newPost" method="post" action="insere.php" > <label class="label" for="tituloPost">Categoria:</label> <input type="text" name="tituloPost" id="tituloPost" ></input><br/> <input class="br-publicar" type="submit" value="Criar" /> </form> </body> </html>
OBS: Importante frisar que sempre a página inicial do seu site tem que se chamar index.php com a extensão (.php), toda página que houver códigos PHP para tratar dados, tem que ter a extensão .php para que funcione.
No formulário de envio é simples o processo também, é html puro, na qual você pode adicionar estilos, etc, para ficar da forma como preferir.
Começando pelo mais importante do FORM que é o method="post".
O que ele significa?
Ele é o método responsável de como os dados vão ser enviados para a outra página. O envio pode ser de duas formas, POST e GET. Neste caso enviaremos via POST, na qual você também vai receber via $_POST para resgatar o valor enviado pelo formulário.
O action do formulário também é muito importante tanto quanto o method, pois ele é o endereço da página que você vai enviar os dados do formulário, ou seja, você vai enviar os dados desse form para a página insere.php com o método via POST, através do click no input com tipo submit. Esse botão é responsável por realizar a ação do form para que ele funcione.
Input type="text" é o campo onde vai os dados, importante sempre ver o type do input, pois há vários tipos de type, para saber mais sobre isso estude sobre as novas Tags do HTML5.
IMPORTANTE: o atributo name tem que prestar muita atenção, pois é por esse atributo nome que você vai resgatar o valor do campo digitado na variável, como no exemplo abaixo, o name é tituloPost, na página insere.php a nossa variável que vai receber o post, a sintaxe tem que ser assim: $var = $_POST['tituloPost'], pois desta forma você estará resgatando o valor desse input corretamente.
Exemplo:
<input type="text" name="tituloPost" id="tituloPost" ></input>
Input type="submit" é ele quem faz a ação do form funcionar para enviar os dados para a página insere.php como mostra abaixo:
<input class="br-publicar" type="submit" value="Enviar" />
Recebendo as variáveis no arquivo insere.php
<?php //inicia a conexão com o banco de dados setando(colocando) valores dentro das variáveis $servidor = "localhost";//nome do servidor, como é local sempre é localhost $username = "root";//nome de usuário do banco de dados root é padrão $password = "";//senha para acessar o banco de dados $database = "TestePost";//nome do banco de dados que vc criou //faz a connection $connection = mysql_connect($servidor, $username, $password); //gera a conexão passando os dados das var criadas if (!$connection) { die('Not connected : ' . mysql_error());//caso não consiga conectar ao banco de dados emite msg de erro } //seleciona o banco de dados existente no servidor definido acima @mysql_select_db($database) or die(mysql_error()); //aki é onde é selecionado o banco de dados desejado, caso não consiga emite msg de erro com o mysql_error(); mysql_set_charset('utf8');//bom ter para evitar problemas com acentos ?>
Esses são os passos mais importantes para funcionamento do Banco de Dados.
Criado a conexão com o banco de dados, e estando tudo ok, vamos resgatar os valores dos campos input type="text" enviados via POST através do formulário, com a seguinte sintaxe.
$TesteVar = $_POST['tituloPost'];
Variáveis em php não precisam definir tipo como em outras linguagens, exemplo:
String valor;
Basta somente colocar $NomedaSuaVar e elas servirão para alocar qualquer tipo de dados string, int, double etc, assumindo seu valor automaticamente, claro também que podemos parsear os dados para ter certeza de que se trata de um número, técnica muito utilizada para cálculos e seus tratamentos de exceções. Para isso basta adicionar o tipo antes da var, desta forma:
$id = int($id);
Variáveis no PHP sempre são iniciadas com cifrão dólar $, e lembrando sempre receber a var pelo name atribuído no formulário, não se esquecendo de colocar ponto e vírgula sempre ao final de toda linha, erro mais comum que acontece entre os iniciantes.
Pronto, você tem uma variável com o valor digitado no campo do formulário, agora vamos inserir esse dado no BD.
Criamos então a query para inserção no banco, estou fazendo INSERT mas poderia ser qualquer um.
$sql = mysql_query("INSERT INTO MinhaTabela(campoTabela)VALUES('$TesteVar')")or die(mysql_error());
IMPORTANTE: Onde foi passado a $var como parâmetro, pode ser feito dessa maneira ou concatenando, que seria o mais correto, a sintaxe ficaria dessa forma:
"INSERT INTO minhaTabela(campoTabela)VALUES(".$TesteVar.")";
//VERIFICAMOS AS LINHAS AFETADAS PELA CONSULTA, ou seja, se deu certo $row = mysql_num_rows($sql); //limpa o resultado para liberar memória mysql_free_result($sql); //VERIFICAMO SE RETORNOU ALGO maior que zero if($row == 0){ //se não retornou nada imprimimos um msg dizendo que não houve alteração echo "Não foi inserido nenhum registro!!!"; mysql_close($connection);//fecha conexão sempre }else{ //se maior que zero é que houve mudança na tabela e exibe msg de sucesso echo "Dados inseridos com sucesso!!!"; mysql_close($connection);//fecha conexão sempre }
Feito tudo isso e se estiver correto, já estará cadastrando no BD da forma que desejar, agora vamos ao PHP com PDO.
<!DOCTYPE HTML> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <title>Seu Site</title> </head> <body> <form id="newPost" method="post" action=" " > <label class="label" for="tituloPost">Categoria:</label> <input type="text" name="tituloPost" id="tituloPost" ></input> <input type="text" name="'acaoPost'" value=”Cadastro” ></input> <input class="br-publicar" type="submit" value="Criar" /> </form> </body> </html> <?php $tituloPost = isset($_POST['tituloPost']) ? trim($_POST['tituloPost']) : ''; /*condição para criar um regsitro*/ if(isset($tituloPost) && $tituloPost != "" && $_POST['acaoPost'] == ""){ require_once('class/Insere.class.php'); $Insere = new Insere(); $Insere->tituloPost = $_POST['tituloPost']; if($Insere-> Cadastrar()){ echo "Cadastrado com sucesso"; }else{ echo “Falha ao cadastrar"; } } ?>
Explicando código:
Primeiramente verificamos com um operador ternário, se o POST 'tituloPost' está vazio, caso ele esteja, a variável é setada com valor em branco, ou vazio.
Depois temos um IF na qual ele verifica se o post é vazio e se o input 'acaoPost' também está vazio para controle, caso todos estejam setados, ou seja, com valores, a condição é aceita e entra no IF para o cadastro.
Feito isso, vamos requerer a nossa classe Insere na qual temos o nosso método cadastrar. Após instanciar a classe, vamos passar o valor do post para nossa classe através dos GET e SET como de praxe utilizando os métodos mágicos do PHP, para saber mais sobre métodos mágicos acesse o nosso artigo sobre MÉTODOS MÁGICOS PHP.
O nosso método na classe ficará dessa forma.
public function Cadastrar(){ if(parent::getPDO() == null){ //caso ainda não tenha conectado conecta-se com o banco de dados parent::conectar(); } //preparação para a query com os metodos pdo $stmt = $this->pdo->prepare('INSERT INTO Teste(descricaoPost)VALUES(:pdescricaoPost)'); $stmt->bindValue(':pdescricaoPost ', $this->tituloPost, PDO::PARAM_STR); If($stmt->execute()) parent::desconectar(); return true; }else{ parent::desconectar(); return false; } }
Explicando código:
Primeiramente Verificamos se já existe alguma conexão com o BD, feito isso preparamos nossa query com o método PDO.
Na onde tem :pcampo, essa var tem essa sintaxe para identificar que ela vai servir como parâmetro para passagem de valor através do GET da classe na qual está $this->tituloPost. Lembrando que o nome após o $this tem que ser exatamente igual como está no arquivo HTML, e especificado o tipo dela, se é string, int dessa forma, PDO::PARAM_STR ou PDO::PARAM_INT.
Feito isso vamos executar nossa query, e caso tudo ocorra corretamente, entra na condição de sim, desconecta do BD e retorna true sinalizando sucesso no HTML, e caso de algo errado retorna false, sinalizando que algo de errado.
Bem, o foco do artigo está em como explicar o funcionamento do formulário com os dados, e não sobre como fazer a classe e o BD propriamente dito.
Bons estudos!
Gigasystems Login:
Informe seu e-mail abaixo para continuar!
XVeja Também:
Artigos Relacionados a categoria: PHP
Cotações para compra e venda de Moedas estrangeiras com PHP
27 July de 2016
Gerenciador de dependências Composer
14 January de 2016
Erro ao acessar um arquivo externo com o comando file_get_content
04 November de 2015
Baixando anexo do email no servidor com IMAP e PHP
27 August de 2015
Olá, deixe seu comentário para Cadastro no Banco de Dados com Formulário em PHP