Mini Curso PHP
- 30/10/2008
Mini curso de PHP (Parte 12 – ‘INSERT e SELECT’ ) – Mysql no PHP
Fala galera!
Demorou mas saiu.
Hoje vamos aprender como fazer um cadastro no Mysql e como recuperar os dados. Tentarei ser o mais breve possível.
Vamos lá?
Então, como estamos aprendendo PHP e Mysql, não vou me deter a estruturar os arquivos do nosso sistema. Vamos fazê-lo utilizando:
- Um arquivo para conexão com o banco de dados; (banco.php) – este será usado em todo o sistema(será chamado pelo comando include()).
- Um arquivo com o formulário para cadastro; (usuario_formulario.php)
- Um arquivo para efetuar o cadastro; (usuário_cadastro.php)
- Um arquivo com a lista dos registros do banco de dados; (usuario_lista.php)
Então para começarmos, precisamos do arquivo banco.php, que será responsável por fazer a conexão como banco de dados. Veja abaixo como ele é:
-
<?
-
# ===— Declaração das variáveis com os dados para acesso ao banco de dados.
-
$host = ‘localhost’; // HOST para conexão
-
$user = ‘root’; // usuário
-
$pass = ”; // senha
-
-
# ===– Aqui ele tenta efetuar a conexão com o banco de dados
-
-
# ===— Se a conexão der certo
-
if($con){
-
# ===— Seleciona base de dados
-
} else {
-
}
-
?>
Vou explicar linha por linha:
3 / 4 / 5: Declaração das variáveis com os dados de acesso.
8: Tenta efetuar a conexão com o banco de dados
11: Se a variável $con for verdadeira(conexão feita com sucesso);
13: Seleciona a base de dados
14: ELSE da linha 11, só que imprime o número do erro e a mensagem de erro.
Feito isto, estamos prontos para começar como sistema.
Não vou me preocupar com firulas e layout, a intenção é mostrar como funciona o PHP e o Mysql.
Beleza então, veja abaixo a estrutura do arquivo ‘usuario_formulario.php’. Ele é apenas HTML.
-
<h1>Cadastro de usuários</h1>
-
-
<form name="form1" action="usuario_cadastro.php" method="POST">
-
Nome: <input type="text" name="nome" id="nome" maxlength="50" /><BR>
-
E-mail: <input type="text" name="email" id="email" maxlength="50" /><BR>
-
Usuário: <input type="text" name="usuario" id="usuario" maxlength="12" /><BR>
-
Senha: <input type="password" name="senha" id="senha" maxlength="12" /><BR>
-
<BR>
-
<input type="submit" value="Enviar" />
-
</form>
Veja que é um formulário super simples. Dois detalhes:
- Método de envio dos dados como POST, para que os dados não sejam visualizados na URL.
- Definimos o total de caracteres dos campos (maxlength), os mesmos que definimos na hora de criar os campos no banco de dados lembram?
Veja o formulário abaixo:
Caso você queira, coloque este formulário em uma tabela para que fique com os campos alinhados.
Bom, agora que tenho o formulário, precisamos escrever o código que recebe os dados digitados e cadastra-os no na tabela. Veja o código abaixo:
-
<?
-
# ===— Inclui o arquivo que faz a conexão com o banco de dados
-
require(‘banco.php’);
-
-
# ===— Verificamos se a pessoa preencheu todos os campos
-
-
# ===—- Recupero os dados do formulário
-
$nome = $_POST[‘nome’];
-
$email = $_POST[‘email’];
-
$usuario = $_POST[‘usuario’];
-
$senha = $_POST[‘senha’];
-
-
# ===— Monto o comando SQL que faz a inserção no banco de dados
-
$sql = "INSERT INTO usuarios (nome, email, usuario, senha, data_cadastro) VALUES (‘$nome’, ‘$email’, ‘$usuario’, ‘$senha’, now())";
-
-
# ===— Executando o SQL
-
-
# ====— Vejo se o comando foi executado com sucesso
-
if($sql){
-
echo ‘Cadastro efetuado com sucesso. <a href="usuario_lista.php">Clique aqui</a> para ver a lista de usuários cadastrados.’;
-
} else {
-
}
-
-
-
} else {
-
echo ‘Por favor preencha todos os campos. Clique <a href="usuario_formulario.php">aqui</a> para voltar.’;
-
}
-
?>
Vou explicar linha por linha:
2: Incluímos o arquivo com a conexão com o Banco de dados. Utilizei a função require() no lugar de include() pois ela é mais segura.
6: Utilizei a função isset() para ver se os campos foram digitados. Ou seja, esta função retorna um booleano informando se a variável foi inicializada.
9 / 10 / 11 / 12: Fiz a atribuição dos valores digitados nas suas respectivas variáveis.
15: Crio uma variável que é uma String com o código SQL que será executado. Eu gosto de criar uma variável para isto pois fica mais fácil debugar, por exemplo, mandar imprimir $sql na tela para ver como ele será executado. Isto ajuda muito na hora de achar erros no código. Clique aqui e veja detalhadamente como funciona o comando INSERT do Mysql.
18: mysql_query() serve para executar os comandos SQL. TODO comando será executado utilizando esta função. Ao atribuir esta função a uma variável, podemos testar para ver se o comando foi executado com sucesso.
21: Um IF para saber se o mysql_query() foi executado com sucesso.
22: Se deu tudo certo, imprimo uma mensagem na tela e crio um link para o usuário chegar a lista de usuários do sistema.
24: Caso tenha dado erro, eu mostro uma mensagem e informo o número do erro com a função mysql_errno() e a mensagem do erro com mysql_error(). A utilização destas funções é MUITO IMPORTANTE, pois se der algum erro, usando elas você sabe exatamente o que aconteceu.
29: Apenas coloco a mensagem de erro caso ele não tenha informado todos os dados no formulário. Este é o ELSE da linha 6.
Agora acesse o usuario_formulario.php e efetue um cadastro, veja abaixo qual é o resultado vendo os dados da tabela no Phpmyadmin.
Muito fácil, agora faça o cadastro de mais alguns usuários apenas para fazer número no banco de dados (e na mensagem de sucesso no cadastro, coloque um link para o formulário).
Agora vamos criar o arquivo usuario_lista.php
-
<?
-
# ===— Inclui o arquivo que faz a conexão com o banco de dados
-
require(‘banco.php’);
-
?>
-
<h1>Lista dos usuários do sistema</h1>
-
<?
-
# ===— Monto o comando SQL que faz a busca dos usuários
-
$sql = ‘SELECT nome, email FROM usuarios’;
-
-
# ===— Executando o SQL
-
-
# ===— Recupero o total de registros encontrados
-
-
# ===— Imprimo o total de registros
-
echo "Total de usuário cadastrados no sistema: $total_de_usuarios <BR><BR>";
-
-
# ===— WHILE enquanto o comando for verdadeiro, ou seja, enquanto existir registros a serem exibidos.
-
-
# ===— Declaro as variáveis com os dados que estavam gravados no banco de dados
-
$nome = $linha[‘nome’];
-
$email = $linha[‘email’];
-
-
# ===— Imprimo o nome e e-mail
-
echo "<b>$nome</b> (<a href=’mailto:$email’>$email</a>) <BR>";
-
-
}
-
?>
Vou explicar linha por linha:
3: Já vimos que require() é faz a mesma coisa que include(), porém, ele é mais seguro.
8: Criamos a variável com o comando SQL que busca os dados no banco de dados. Clique aqui e veja detalhadamente como funciona o SELECT.
Eu tenho uma mania de colocar todo código SQL em maiúsculo. Assim fica fácil identificar apenas passando o olho. Por este motivo eu escrevo INSERT, INTO, SELECT… Penso nisso como boas práticas de programação.
11: Executo o SQL
14: Recupero o total de registros do banco de dados com a função mysql_num_row();
17: Apenas exibo uma frase com o total de usuários.
20: Este while() funciona assim: Enquanto a atribuição da variável $linha for verdadeira, ele vai dando o loop. A variável $linha recebe mysql_fetch_array($sql), que transforma a consulta em um array com os dados vindos do banco de dados. A cada loop do while(), ele vai pegando o próximo registro do banco de dados.
Então se tivermos 10 usuários no banco de dados, o while() vai dar 10 voltas.
Clique aqui para mais detalhes do mysql_fetch_array(). Por favor, clique neste link! É muito importante que você leia a documentação.
Prontinho!
Agora você já pode acessar este arquivo no navegador… Veja abaixo como ficou:
Bom pessoal, por hoje é isso. Como eu falei, não vou me deter em layout e essas coisas, pretendo mostrar como funciona o PHP e Mysql ok?
Tudo isto que fizemos pode ser feito de várias maneiras. Sei que não expliquei a melhor ou a mais correta, mas ao meu ver, esta é a maneira mais fácil de aprender. Com o tempo, vocês vão descobrindo a melhor maneira de programar.
Espero ter sido objetivo e que vocês tenham entendido. Qualquer dúvida é só postar!
Por enquanto não vou postar os fontes, pois quero que vocês digitem e aprendam a programar.. não copiar!


(9 votos, média: 4.89 de 5)



18 Comentários to “Mini curso de PHP (Parte 12 – ‘INSERT e SELECT’ ) – Mysql no PHP”
Kara, Muito bom seu tutorial… Parabéns!!!!
Eu estou com dúvida nesta linha:
echo ‘Ops.. ocorreu algum erro: (’.mysql_errno().‘) – ‘.mysql_error();
Esta certo esta sintaxe… Utilizo o PhpEdit e demonstra erro…
Por Glenio Leonel (1 comments) em 10/11/2008
Olá Glenio tudo bom?
kra.. primeiramente muito obrigado pelo elogio! fico muito feliz em saber que meu blog esta sendo útil heheh
Sobre o erro:Vc copiou o codigo da pagina? pois o plugin do WordPress troca a ‘(aspa simples) por ‘ e ’. Ai da erro mesmo.
Te mandei por e-mail o arquivo banco.php pra vc dar uma olhada ok?
Abração
Por Marcelo Sabadini (101 comments) em 10/11/2008
Parabens Marcelo , seus tutoriais sao realmente excelentes !!! Tornou-se uma obrigação pra mim !!! heheheheheh
Daria para vc fazer um tutorial explicando a autenticação de formulario utilizando cookies para definir o perfil de usuario ou administrador , ou seja , a tela que e mostrada e diferente para usuario e administrador ?
Abração !!!
Por Alessandro Pinto (2 comments) em 14/11/2008
Q bom que gostou do tutorial. Esta eh a intenção hehehehe
Então, neste minicurso vamos aprender como fazer autenticação de usuários. Não pretendia abordar permissões e tals.. mas me disponho a tirar todas as suas dúvidas sobre o assunto por e-mail.
QQ coisa eh soh escrever!!!
Abração
Por Marcelo Sabadini (101 comments) em 14/11/2008
Opa Marcelo eu agradeceria sim e muito !!! hehehe o seu e-mail e o marcelosabadini@gmail.com ? abs !
Por Alessandro Pinto (2 comments) em 18/11/2008
É isso aí Marcelo. Continuo acompanhando seu curso, mesmo já sabendo o conteudo abordado. Parabéns mesmo pela dedicação
Por Almeida (1 comments) em 26/11/2008
Olá Marcelo, parabéns pela brilhante didática nata que você tem, continue assim com este dom.
Este curso PHP existe partes anteriores? Se sim, como tenho acesso porque notei que está seguindo uma numeração, como exemplo: “Mini curso de PHP (Parte 11 IV – ‘INSERT e SELECT’ )” … parte 11…
Agradeço pela atenção e sucesso sempre!
Por Sergio Santos (6 comments) em 01/12/2008
Gostei muito do seu sistema principalmente a parte de listar usuários, que acho muito interressante, parabéns, porém justamente essa parte está dando erro:
Lista dos usuários do sistema
“; while ($linha = mysql_fetch_array($sql)) { $nome = $linha[‘nome’]; $email = $linha[‘email’]; echo “$nome ($email)
“; } ?>
poderia se for possível me ajudar, agradeço, tenha uma boa tarde…
Por Leandro (1 comments) em 21/12/2008
### Só pra constar! ###
Entrei em contato com o Leandro e o problema era que aqui no blog, as códigos são postados e o plugin que colore ele troca as aspas por acentos. Ou seja, no lugar de ‘(aspa simples) ele coloca `(crase).
Problema resolvido heheeheheh
Por Marcelo Sabadini (101 comments) em 23/12/2008
Achei super legal a aula, sou iniciante em php? gostaria de saber o que aconteceria se algum campo do formulario não tivesse sido digitado?
Por Carlos (2 comments) em 13/01/2009
@Carlos,
Obrigado por acessar meu site.
O if da linha 6 faz exatamente isso. Testa se algum dos campos está em branco. Caso tenha algum em branco, ele vai cair no ELSE(linha29).
Abraços!
Por Marcelo Sabadini (101 comments) em 13/01/2009
boas,
tem aki um tutorial muito bom…
mas gostaria de saber como é que através de um botão submit poderia enviar os dados para a base de dados.
por exemplo:
o botão confirmar fazer enviar os dados do formulário (Nome, passw, login, etc)
muito obrigado
Por José Ferreirra (1 comments) em 30/01/2009
Olá Jodé tudo bom?
Obrigado por acessar meu site…
Então, definimos um arquivo que é o formulário… no qual contem os campos para digitarmos os dados(que chamamos de usuario_formulario.php).
Neste arquivo configuramos a ação do apontar para o arquivo usuario_cadastro.php passando os dados pelo metodo POST.
Este é o X da questão! os dados são passados assim.
No arquivo usuario_cadastro.php os valores são recuperados pela superglobal $_POST['nome_do_campo'].
Qualquer coisa é só postar!!
Um grande abraço!
Por Marcelo Sabadini (101 comments) em 31/01/2009
Marcelo,
E como fica a sintaxe para inclusão do mesmo dado em 3 tabelas? Fiz assim, não deu erro, mas também não incluiu nas duas últimas:
$sql = “insert into tb_usuario (NO_USUARIO, NU_CPF, DS_SENHA) values (’$nome’, ‘$cpf’, ‘$senha’)”;
$resultado = mysql_query($sql);
$sql = “insert into rl_usuario_curso (NU_CPF) values (’$cpf’)”;
$resultado = mysql_query($sql);
$sql = “insert into rl_usuario_empresa (NU_CPF) values (’$cpf’)”;
$resultado = mysql_query($sql);
Onde está o erro?
Por Felipe (2 comments) em 02/03/2009
Parabens Marcelo, primeiro dia que vi o blog gostei muito e to acompanhando ja!
Voce explica de um jeito que nao consegui achar em nenhuma dessas grandes apostilas que tem por ai.. to aprendendo muito!
To querendo colocar no cadastro a data de nascimento mas nao sei como ficaria no mysql,
se puder ajudar ;D
t+
Por Alessandro Coelho (5 comments) em 22/03/2009
Estou começando com PHP, testei o ex e achei ótimo, bem simples e bem explicado.
Obrigada Marcelo, continue fazendo muitos tutoriais como esse
Por Andrea (1 comments) em 03/04/2009
Bom dia, primeiro mto legal o seu link aparecer entre apenas 3 em uma busca que fiz no google com o tema “php sem complicações”. Com certeza cliquei no lugar certo. Vi algumas das vídeoaulas somente a partir da #12. Tem como ver as anteriores?
Att,
Edson
Por Edson Rosa (1 comments) em 15/06/2010