Objetivo:
Este artigo foi escrito tendo em mente que o leitor já tem noções de programação e banco de dados, ou já é experiente mas não conhece o PHP. Sigo uma linha mais direta, visando evitar a aborrecida abordagem de TODAS as possíveis variáveis, tipos, controle-de-fluxo, etc. Para se aprofundar, basta pesquisar.
O que é o PHP:
O PHP é uma linguagem de script utilizada principalmente para a criação de sites e aplicativos web. Também é utilizado (menos largamente) na criação de scripts para serem utilizados na linha comando, a fim de facilitar e automatizar certas tarefas.
O que é necessário para fazê-lo funcionar:
Para rodar scripts escritos em PHP é preciso apenas baixar os módulos e bibliotecas da linguagem. Nem é necessário “instalar” propriamente dito, porque é só descompactar e usar. Porém, para ter ele funcionando para os sites é preciso antes instalar um servidor web (leia-se Apache) e configurar o Apache para interpretar o PHP.
O segundo passo é instalar o MySQL e configurar o PHP para reconhecê-lo.
Como essa instalação e configuração toda foge do escopo deste artigo, recomendo (para quem ainda não tem o Apache, o PHP e o MySQL funcionando) instalar um AMP (Apache-MySQL-PHP), que são pacotes já com esses três itens pré-configurados. Instale o XAMPP ou o EasyPHP, coloque o Apache e MySQL para rodar (os dois tem uma interface bem intuitiva para isso) e vamos lá.
Crie no diretório www ou htdocs (ele fica dentro do diretório onde você instalou o AMP) um script chamado basico.php. O objetivo desse script é mostrar, numa lapada só, o mínimo necessário da sintaxe da linguagem.
Todo script, ou trecho de código PHP, deve ficar entre “<?php” e “?>“. O script vai declarar um array, varrer ele, testando se existe o elemento “inverno” e, se existir, vai concatenar ele com uma variável, que será exibida no final.
basico.php
<?php $resultado = 'Estamos no '; /* - O tipo dessa variável "$resultado" é automaticamente setado como string, porque ela recebeu um valor desse tipo. Um inteiro seria $contador = 1000 e um float seria $pagar = 75.25 */ $aEstacoes = array('idx01' => 'Verão', 'idx02' => 'Outono', 'idx03' => 'Inverno', 'idx04' => 'Primavera'); /* - Pode-se omitir o índice. Ex: array('Verão','Inverno'). Nesse caso cada elemento receberá um índice numérico, começando do zero. - O array mode ter quantas dimensões precisar: ex: array(0 => array('nome' => 'Lawrence', 'email' => 'llagerlof@gmail.com'), 1 => array('nome' => 'Angélica', 'email' => 'angelica.lagerlof@gmail.com')) - Uma observação: eu costumo iniciar as variáveis do tipo "array" com "a", para identificá-la melhor visualmente. */ foreach ($aEstacoes as $key => $value) { if ($value == 'Inverno') { $resultado .= $value; } } /* - A linha do "if" poderia ser substituída por: if ($aEstacoes[$key] == 'Inverno') { - A linha do "$resultado" é o mesmo que: $resultado = $resultado . $value; - Já percebeu que comparação é feito com "==" e atribuição com "=", certo? */ if (strpos($resultado,'Inverno') === false) { echo 'Não existe a palavra Inverno na lista.'; } else { echo $resultado; } /* - No PHP, zero equivale a falso. O problema é que TAMBÉM existe o tipo boolean FALSE. A função strpos que usei pra testar se existe a palavra "Inverno" dentro da string "$resultado" retorna a posição da palavra no $resultado, só que se "Inverno" estiver no início da string a função retorna ZERO, que é a primeira posição. Logo, se eu testar se zero é igual (==) a false, vai dar TRUE na comparação. Nos casos em que você precisar diferenciar zero de FALSE, use "===". - "echo" joga a string para a saída padrão (o terminal, o navegador, etc). Poderia ser "print" no lugar de "echo". */ ?>
Teste o código acessando o endereço do seu servidor local: http://localhost/basico.php
Conectando, inserindo e acessando dados no banco
Já dá para começar a ficar sério. Vamos criar um cadastro com HTML e PHP. Crie um arquivo cadastro.php e insere.php
cadastro.php
<html> <body> <form name="form1" method="post" action="insere.php"> Nome: <input type="text" name="nome"><br> Idade: <input type"text" name="idade"><br> <input type="submit" value="Enviar"> </form> </body> </html>
Quando o usuário clicar no botão Enviar, será criado no script insere.php um array $_POST, com o nome e a idade digitados.
Vamos ver agora como manipular essas variáveis e, de quebra, inserir o indivíduo na tabela “pessoas” do banco de dados “BANCO1“.
Para facilitar, segue abaixo o “create” da tabela “pessoas”. Se precisar, leia como criar um banco no MySQL.
create table pessoas (id integer not null primary key auto_increment, nome varchar(50) not null unique, idade integer);
insere.php
<?php $n = $_POST['nome']; $i = $_POST['idade']; $conexao = mysql_pconnect("localhost","root",""); // localhost = servidor do mysql. // root = usuário do mysql com permissão para acessar o banco. // "" = senha do banco de dados para o usuário root. O meu MySQL local está sem senha, por isso deixei vazio. $bd = mysql_select_db("BANCO1"); $sql = "insert into pessoas (nome, idade) values ('$n',$i)"; /* Você pode colocar variáveis diretamente dentro de strings definidas com aspas duplas. Elas serão "traduzidas" para seus respectivos valores. */ $query1 = mysql_query($sql); /* mysql_query() Executa a query. Nesse momento a pessoa é inserida no banco de dados. Agora não tem mais volta. */ // Aproveitando a deixa, logo após a inserção, vamos listar todas as pessoas da tabela. $query2 = mysql_query("select * from pessoas"); while ($registro = mysql_fetch_array($query2)) { echo 'Id: ' . $registro['id'] . '<br>'; echo 'Nome: ' . $registro['nome'] . '<br>'; echo 'Idade: ' . $registro['idade'] . '<br>'; echo '-------------------------------<br>'; } mysql_close($conexao); /* Para quem já programa, o código é auto-explicativo. Apenas algumas observações: - mysql_pconnect() cria uma conexão persistente com o servidor do MySQL, o seu computador neste caso. Se não quiser uma conexão persistente, use mysql_connect(). - mysql_select_db() seleciona o banco em que será executado os SQLs posteriores. */ ?>
Teste o código acessando o endereço do seu servidor local: http://localhost/cadastro.php
Maravilha! Temos um cadastro e uma consulta funcionando. Agora você já sabe o necessário para começar a criar sites com bancos de dados. Lembre-se, no final, tudo se resume a cadastros e consultas ao banco de dados.
Dica bônus 1:
Quando os dados são passados através de um formulário você recupera os valores através do array $_POST. Quando você passar variáveis através da URL, recupere-as pelo array $_GET. Por exemplo, se você acessar pelo navegador http://localhost/insere.php?nome=Lawrence&idade=20 , essas duas variáveis vão chegar no script insere.php, só que você deve acessá-las lendo os valores de $_GET[‘nome’] e $_GET[‘idade’] .
Dica bônus 2
Você pode inserir scripts dentro do código html. Veja o exemplo:
<html> <body> <p>Este parágrafo está fixo no HTML.</p> <?php echo '<p>Este parágrafo está sendo gerado dinamicamente pelo PHP.</p>'; ?> </body> </html>
Consulte também:
- A documentação oficial do PHP. É uma das melhores existentes. Bem explicado e com muitos exemplos.
- PHP Brasil. É o maior portal de PHP do Brasil. Muitos scripts, artigos e tutoriais.
- Smarty. Uma biblioteca que permite você criar suas páginas usando PHP e HTML em arquivos separados, evitando assim a bagunça que inevitavelmente acontece quando é utilizado a “Dica bônus 2”. Aqui você começa ficar profissional.
- MVC (Model View Controller). É a coqueluche atual da programação orientada a objetos. Se quiser sair na frente, caia de cabeça no modelo de desenvolvimento MVC. Aprenda a trabalhar com o Zend Framework, o CakePHP ou o CodeIgniter. É isso que as empresas que trabalham com PHP estão usando hoje em dia.
MUITO BOM!!!!
Obrigado, Viviane. Espero que tenha ajudado.
Muito bom, texto claro e objetivo, parabéns.
Obrigado Lucas. Procurei ser o mais didático possível neste artigo.
Cara você tem alguma dica para quem quer se aprimorar em introdução a Banco de dados com PHP?
Fala Lucas. Bom, o que mais tem na Internet são tutoriais, mas se você quiser tem um bom livro para você se tornar especialista. Aí vai a dica: http://novatec.com.br/livros/phpmysql/
Não estou conseguindo fazer essa comparação do meu form com o banco de dados alguem pode me ajudar ?
<?php
$nome1 = $_GET["nome1"];
$senha1 – $_GET["senha1"];
include "conectabdnm.php";
mysql_query ("SELECT * FROM usuario WHERE values (null,'ID''$nome','$senha')", $conexao) or die (mysql_error());
if( $nome == $nome1 and $senha == $senha1){
Echo "Bem Vindo Ao Nosso Site !";
Echo "Esperamos que Goste do Nosso Conteúdo !";
echo "”;
}
else {
echo “”;
}
?>
Vikeddu,
esse código tem alguns problemas. Segue abaixo a minha análise. Abraço.
<?php
$nome1 = $_GET["nome1"];
$senha1 = $_GET["senha1"]; // Erro1: tinha um "menos" no lugar de "igual".
include "conectabdnm.php";
mysql_query ("SELECT * FROM usuario WHERE values (null,’ID”$nome’,’$senha’)", $conexao) or die (mysql_error());
// Erro2: mysql_query deve retornar o resultado para uma variável. Ex: $result = mysql_query(…
// Erro 3: O SELECT está com a syntaxe incorreta. O correto seria: SELECT * FROM usuario WHERE nome = ‘$nome1’ and senha = ‘$senha1’
// Erro 4: Faltou pegar os valores dos campos NOME e SENHA do resultado
while ($linha = mysql_fetch_assoc($result)) {
$nome = $linha[‘nome’];
$senha = $linha[‘senha’];
}
// Erro 5: coloque as comparações sempre entre parênteses. Use && para AND e || para OR
if( ($nome == $nome1) && ($senha == $senha1) ) {
Echo "Bem Vindo Ao Nosso Site !";
Echo "Esperamos que Goste do Nosso Conteúdo !";
echo "";
}
else {
echo "";
}
?>
Também postei ele no codepad: http://codepad.org/PXSwrbuO