A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa

PHP + MySQL

Sex

1

Dez

2006


21:25

(33 votos, média 4.24 de 5) 


Nível Intermediário

O movimento do software de código aberto doou o Linux para o mundo da computação. Só isto já seria o suficiente, mas a coisa não pára por aí. O mesmo movimento nos trouxe, entre outros, o PHP, o MySQL e o PostgreSQL. Pelo andar da carruagem, a dupla dinâmica PHP + MySQL já fez história como a melhor combinação para se criar sites dinâmicos. Tanto é verdade que a grande maioria dos serviços de hospedagem oferecem o famoso LAMP - Linux, Apache, MySQL e PHP - para você criar seus sites. É claro que existem outras opções para os escravos da Micro$oft, mas este é um outro assunto smile

Há muito tempo atrás escrevi um tutorial que chamei de PHP rapidinho. Ao encerrar o dito cujo, pedi que o pessoal se manifestasse se quisesse um tutorial mais parrudo, o PHP maiorzão. Os pedidos foram muitos, principalmente solicitações de PHP com banco de dados. Foi devido à insistência que resolvi escrever este tutorial. Ainda não é o maiorzão, mas acho que quebra um galho para o pessoal de nível intermediário.

Preparando o terreno

Se você optou por um serviço de hospedagem que oferece tanto o PHP quanto o MySQL, tá tudo em riba. Se você possui um servidor próprio e está com tudo na mão, melhor ainda! Com o PHP instalado e à disposição, é só criar os scripts. Com o MySQL instalado, criar uma base de dados são dois palitos.

atencao Este tutorial não cobre os tópicos de instalação e configuração do PHP e do MySQL. Também não entra em detalhes de como criar uma base de dados no MySQL.

Vou usar como exemplo uma base de dados para mostrar as figurinhas que já tenho no meu álbum de jogadores de futebol (a bem da verdade, surrupiei esta idéia do meu neto João, curtidor das ditas figurinhas :blush: ). Mas vamos lá. Se você puder usar um gerenciador de banco de dados como o PHPMyAdmin ou tiver acesso direto ao servidor faça o seguinte:

  1. Crie uma base de dados chamada albuns.
  2. Crie uma tabela chamada craques.
  3. Crie os seguintes campos na tabela craques:
    nome VARCHAR(20) NOT NULL
    clube VARCHAR(20) NOT NULL
    numero TINYINT(4) NOT NULL
    disp TINYINT(4)
  4. Adicione alguns dados só para poder testar seus scripts. Por exemplo, INSERT INTO craques VALUES('Pelé', 'Brasil', 1, 3)

Você também pode usar o PHP para criar sua base de dados e as tabelas. Sugiro que você use este método para ir pegando o jeito da coisa.

Conexão com o banco de dados

Para testar se você consegue se conectar com o seu banco de dados, crie o seguinte script (sem os números de linha) substituindo o nome do usuário e a senha:

'; mysql_close($conexao); echo 'Conexão fechada'; ?>

Vou chamar este arquivo de teste.php. Faça o upload do teste.php para um local que seu navegador possa acessar e execute-o indicando o endereço correspondente. Se você o colocou no diretório raiz, o endereço deve ser http://www.seusite.com.br/teste.php.

Se a conexão não puder ser efetuada, você vai ver na tela apenas a mensagem Erro de conexão com o MySQL; caso contrário, vai aparecer Sucesso na conexão e, como apenas nos conectamos e logo em seguida nos desconectamos, a mensagem Conexão fechada aparece depois da primeira.

Aqui foram usadas as funções mysql_connect e mysql_close do PHP.

Criando uma base de dados

Se o teste acima mostrou que foi possível fazer a conexão com seu banco de dados, tente criar uma nova base de dados. Insira no script anterior as linhas 10 a 13:

'; $query = "CREATE DATABASE IF NOT EXISTS albuns"; $base = mysql_query( $query ); if( $base ) echo 'Base de dados criada< br>'; else echo 'Não foi possível criar a base de dados albuns< br>'; mysql_close( $conexao ); echo 'Conexão fechada'; ?>

Se o resultado foi Sucesso na conexão / Base de dados criada / Conexão fechada, então tudo está andando como o previsto. Se a mensagem Não foi possível criar a base de dados albuns aparecer, então o usuário indicado tem somente o privilégio de se conectar ao banco de dados, mas não o de criar novas bases de dados, ou existe um erro no seu script.

Aqui foi usada mais uma função do PHP que é, sem dúvida nenhuma, a mais usada para "conversar" com o MySQL: a mysql_query. Os parâmetros que enviamos através desta função são da linguagem MySQL. Aqui usamos CREATE DATABASE IF NOT EXISTS albuns. Poderíamos ter usado apenas CREATE DATABASE albuns que o resultado seria o mesmo, mas, como vamos rodar o script uma porção de vezes, não tem porque ficar criando a mesma base de dados repetidamente.

Mais um detalhe: não usamos die( 'Não foi possível criar a base de dados albuns' ) porque, caso a base de dados não for criada, o script será interrompido e a conexão fica aberta. Cuidado para não esquecer conexões abertas nos seus scripts!


Criando uma tabela

Se você conseguiu chegar até este ponto, então pode criar quantas tabelas quiser na nova base de dados. Vamos dar uma guaribada no script que usamos até agora. Adicione o código das linhas 16 a 26.

'; $query = "CREATE DATABASE IF NOT EXISTS albuns"; $base = mysql_query( $query ); if( $base ) echo 'Base de dados criada< br>'; else echo 'Não foi possível criar a base de dados albuns< br>'; mysql_select_db('albuns'); $query = 'CREATE TABLE IF NOT EXISTS craques( '. 'nome VARCHAR(20) NOT NULL, '. 'clube VARCHAR(20) NOT NULL, '. 'numero TINYINT(4) NOT NULL, '. 'disp TINYINT(4) )'; $tabela = mysql_query( $query ); if( $tabela ) echo 'Tabela craques criada< br>'; else echo 'Não foi possível criar a tabela craques< br>'; mysql_close( $conexao ); echo 'Conexão fechada'; ?>

Antes de fazer qualquer coisa numa base de dados é preciso ativá-la. Para isto existe a função PHP mysql_select_db, cujo parâmetro é o nome da base de dados que se quer ativar. Não é preciso desativar uma base de dados ativada. Querendo ativar uma base de dados diferente, é só usar novamente a função mysql_select_db com outro nome. Além disso, quando a conexão é fechada, as bases de dados ativas são todas desativadas.

A função mysql_query do PHP é pau pra toda obra. Foi com ela que criamos a base de dados e a tabela craques. Através desta função pode-se enviar qualquer tipo de solicitação ao banco de dados, contanto que a sintaxe atenda todos os requisitos da linguagem MySQL. Se o seu script não funcionar como você espera, lembre-se desta dica: verifique cuidadosamente a sintaxe da query, pois a maioria dos erros costuma estar aí. Às vezes a gente se confunde um pouco porque estamos lidando com duas linguagens (PHP e MySQL) no mesmo script :blush:

Inserindo dados numa tabela

Para completar este nosso primeiro script só falta inserir alguns dados na tabela craques. Qual será a função da nossa escolha? Adivinhou, mais uma vez será a mysql_query. Complete o script com o código das linhas 28 a 31:

'; $query = "CREATE DATABASE IF NOT EXISTS albuns"; $base = mysql_query( $query ); if( $base ) echo 'Base de dados criada<br>'; else echo 'Não foi possível criar a base de dados albuns<br>'; mysql_select_db('albuns'); $query = 'CREATE TABLE IF NOT EXISTS craques( '. 'nome VARCHAR(20) NOT NULL, '. 'clube VARCHAR(20) NOT NULL, '. 'numero TINYINT(4) NOT NULL, '. 'disp TINYINT(4) )'; $tabela = mysql_query( $query ); if( $tabela ) echo 'Tabela craques criada<br>'; else echo 'Não foi possível criar a tabela craques<br>'; $query = "INSERT INTO craques VALUES ('Pelé', 'Brasil', 1, 3, 0)"; $dados = mysql_query( $query ); if( $dados ) echo 'Dados inseridos<br>'; else echo 'Não foi possível inserir os dados na tabela craques<br>'; mysql_close( $conexao ); echo 'Conexão fechada'; ?>

Criando páginas dinâmicas

Antes de entrar de sola neste assunto, tem um recado muuuuito importante da vó:

vovo NÃO SE ESQUEÇA de deletar o arquivo teste.php do seu servidor. Este nome é muito manjado e, além do mais, seu nome de usuário e senha de acesso para o banco de dados estão lá dando sopa. Se alguém resolver chamar esta página um zilhão de vezes, sua base de dados vai ficar recheada com um zilhão de registros.

Mas vamos ao que interessa. Uma vez que a base de dados está prontinha para ser usada, vamos usá-la! Vou dar um exemplo bem fácil do que é possível fazer.

Quando o assunto é álbum, logo se pensa em troca de figurinhas. Digamos que você queira colocar no seu site as figurinhas que tem para trocar. Neste caso seria interessante que você pudesse ir adicionando/editando suas figurinhas repetidas, indicando quais são e quantas estão disponíveis.

Buscando uma figurinha

Para adicionar figurinhas repetidas à base de dados, vamos criar uma página que permita incluir ou atualizar registros. Para isto usaremos um formulário de entrada e, para facilitar as coisas, a referência será o número da figurinha. Como esta será uma página administrativa, vou chamá-la de adminCromo.php.

Administração de Figurinha </head> <body> <h2>Administração das minhas figurinhas</h2> <br> <form action="editaCromo.php" method="POST"> <input type="text" name="nro"> <input type="submit" value="Ver"> </form> </body> </html>

Esta página possui um formulário que apresenta uma caixa de texto onde você indica o número da figurinha e um botão [Ver]. Ao clicar no botão, é chamada uma outra página que se chama editaCromo.php.

Mostrando uma figurinha

Na página editaCromo.php será feita a conexão com a base de dados, uma procura na tabela craques e os resultados serão mostrados num outro formulário.

<head> <title>Administração de Figurinhas</title> </head> <body> <h2>Figurinha Número <? echo $nrofig; ?></h2> <br> <form action="atualizaBD.php" method="POST"> <input type="text" name="nome" value="<? $nome ?>"> <input type="text" name="clube" value="<? $clube ?>"> <input type="text" name="numero" value="<? $numero ?>"> <input type="text" name="disp" value="<? $disp ?>"> <input type="submit" value="Atualizar"> </form> </body> </html>

Logo no começo da página, entre as linhas 8 e 21, criamos uma área de PHP. A primeira providência foi pegar o número da figurinha enviado pela página anterior e atribuí-lo à variável $nrofig. Depois fizemos uma conexão com o banco de dados, ativamos a base de dados albuns, procuramos pelo registro cujo valor do campo numero é igual ao número da figurinha e fechamos a conexão. O registro encontrado ficou armazenado no array $resultado.

Logo a seguir, passamos os valores dos campos para variáveis e as usamos para criar o formulário. Se a procura não encontrar nenhum registro (a figurinha número $nrofig ainda não foi adicionada), os campos do formulário estarão vazios e precisam ser preenchidos. Caso contrário, os campos do formulário mostram os valores encontrados na base de dados e podem ser editados. Se você indicar o número 1, verá os dados da figurinha do Pelé e que há 3 figurinhas disponíveis. O botão [Atualizar] nos leva para a página seguinte onde a base de dados será atualizada.

Atualizando a base de dados

O formulário da página editaCromo.php nos remete à página atualizaBD.php. Esta página será novamente uma página híbrida, meio PHP e meio HTML.

<head> <title>Administração de Figurinhas</title> </head> <body> <h2>Atualização da Base de Dados</h2> <?php $nome = $_POST["nome"]; $clube = $_POST["clube"]; $numero = $_POST["numero"]; $disp = $_POST["disp"]; $conexao = mysql_connect( 'localhost', 'vovoVicki', 'senha123' ) or die( 'Erro de conexão com o MySQL' ); mysql_select_db('albuns'); $query = 'SELECT * FROM craques WHERE numero=' . $numero; $resultado = mysql_query( $query ); $tem = mysql_numrows( $resultado ); if( $tem ) { $query = 'UPDATE craques SET nome=' . $nome . ' clube=' . $clube . ' disp=' . $disp . ' WHERE numero=' . $numero; } else { $query = 'INSERT INTRO craques VALUES ('. $nome . ', ' . $clube . ', ' . $numero . ', ' . $disp . ')'; } $sucesso = mysql_query( $query ); if( $sucesso ) echo 'Base de Dados atualizada com sucesso'; else echo 'A Base de Dados não pode ser atualizada'; mysql_close( $conexao ); ?> <br> <a href="/adminCromo.php">Voltar</a> </body> </html>

A primeira providência foi passar os valores enviados pelo POST do formulário editaCromo.php para variáveis PHP. Em seguida, fizemos uma conexão com a base de dados e colocamos uma query buscando o número da figurinha. O resultado desta pesquisa foi para o array $resultado. Com a função mysql_numrows passamos o número de linhas do array para a variável $tem. Se o número de linhas for diferente de zero, então precisamos apenas atualizar os dados; se for igual a zero, é preciso inserir um novo registro. Depois de montar as queries de acordo com o resultado $tem, a query adequada é utilizada. O resultado da query, por sua vez, é armazenado na variável $sucesso para poder dar o aviso correto ao administrador.

Fechamos o banco de dados e colocamos um link para poder voltar à primeira página da administração para começar tudo novamente.


Referências

Observações

Este sisteminha de administração é muito rudimentar. Por exemplo, não está protegido por senha e qualquer pessoa que conhecer a URL vai poder mexer na sua base de dados. Tem mais um sério problema relacionado à segurança: não foi tomada nenhuma precaução com os dados enviados pelos formulários. Normalmente é preciso depurá-los para evitar ataques conhecidos como injeção sql.

Outra mancada são as páginas geradas - tão feinhas de doer. Mas como o tutorial é para aprender a pilotar PHP+MySQL, não me preocupei com este aspecto. Espero que tenham gostado e, como sempre, em caso de dúvida façam contato.

Grande abraço

vovo vovó Vicki

com mfxbroker развод набор кастрюлейnikas restaurant yeellamfx brokerресторан никасbroker mfx

Informações adicionais