Sie sind auf Seite 1von 10

Este material apenas um resumo para acompanhamento dinmico das aulas ministradas, sendo necessrio o acompanhamento, e as orientaes, do professor.

Linguagem PHP e MySQL

PARTE 01 - Introduo ao Banco de Dados 1. Viso Geral


Neste ponto do Curso Tcnico voc j est familiarizado com a teoria dos Bancos de Dados, portanto, vamos apenas lembrar, ou reforar, alguns conceitos: Um Banco de Dados uma coleo de Tabelas. Uma Tabela contm um conjunto de Registros. Todos os Registros tm o mesmo nmero de Campos. Cada Campo categoriza um Dado. importante definir um campo com identificador exclusivo, para evitar duplicidade de informaes. importante relacionar as Tabelas de um Banco de Dados atravs de um campo com identificador exclusivo. Embora a Linguagem de Consulta Estruturada (SQL) tenha sido desenvolvida pela IBM, o SQL est atualmente sob a regulamentao do American National Standarts Institute (ANSI). O conhecimento do conjunto de comandos SQL padro permite a utilizao do SQL em mltiplos sistemas de bancos de dados, como INFORMIX, Microsft SQL Server, PostgreSQL, Oracle, Sybase, mSQL e MySQL:

a) b) c) d) e) f)

1.1. O Bsico do SQL

CREATE Cria uma nova Tabela no Banco de Dados: CREATE TABLE [nome_tab] (nome_campo tipo_campo (tamanho),...); ALTER Modifica a estrutura de uma Tabela existente: Para alterar o tamanho de um campo para 5, por exemplo: ALTER TABLE [nome_tab] CHANGE nome_campo nome_campo varchar(5); Para adicionar um novo campo: ALTER TABLE [nome_tab] ADD nome_campo tipo_campo(tamanho); DROP Remove definitivamente elementos como Campos e Tabelas. DROP TABLE [nome_tab]; Para remover apenas um campo da Tabela, e todos os dados contidos nele: ALTER TABLE [nome_tab] DROP [nome_campo]; INSERT Adiciona um Registro Tabela. INSERT INTO [nome_tab] ([nome_campo1], [nome_campo2],...) VALUES ([valor_campo1], [valor_campo2],...); UPDATE Modifica Dados em um Registro. Caso no declare a expresso WHERE, todos os registros sero modificados: UPDATE [nome_tab] SET [nome_campo1] = [novo_valor] WHERE [expresso];
SELECT Executa um consulta em uma Tabela, fazendo com que determinados registros sejam selecionados:

SELECT [nome_campo1, nome_campo2,...] FROM [nome_tab] WHERE [expresso] ORDER BY [nome_campo] ASC/DESC;
DELETE Remove definitivamente os elementos de uma Tabela.

DELETE FROM [nome_tab] WHERE [expresso];

Resumo das Aulas de PHP com MySQL - Prof. Celso Gallo

Pgina 1

1.2. O Banco de Dados MySQL

Neste curso optamos pela utilizao do MySQL por ser o mais popular entre os desenvolvedores PHP, possui vrias funes muito bem documentadas do PHP com o MySQL e cdigo aberto. No manual do PHP existe uma lista completa de funes, mas para nossos estudos, utilizaremos apenas as principais, para a simples conexo e seleo de dados. Abre uma conexo ao servidor MySQL. Requer o nome de host, nome de usurio e senha. Seleciona um Banco de Dados no MySQL, tornando-o ativo. Executa uma consulta ao Banco de Dados ativo. Obtm uma linha do resultado pesquisado, armazenando-a em uma matriz (array). Obtm os dados de um resultado.Consulta pelo nome ou posio. Fecha a conexo com o MySQL.

mysql_connect() mysql_select_db() mysql_query() mysql_fetch_array() mysql_free_result() mysql_close()

1.3. O Banco de Dados ODBC (Microsoft)

Neste curso optamos pela utilizao do MySQL, entretanto, se o seu ambiente de trabalho no inclui o MySQL, no h problema algum! O PHP inclui funes para o ODBC (Open DataBase Conectivity), o que muito til se a conexo for feita em um Banco de Dados Microsoft ACCESS em Windows: Abre uma conexo a ODBC. Requer o nome da origem (datasource) do Banco de Dados, nome de usurio e senha. L uma declarao SQL para execuo.. Executa uma declarao SQL. Coloca o resultado da sua declarao SQL dentro de uma pgina HTML bem formatada. Libera os recursos em uso pela conexo atual. Fecha a conexo atual.

odbc_connect() odbc_prepare() odbc_execute() odbc_result_all() odbc_free_result() odbc_close()

PARTE 02 - Criando Conexo


Vamos conhecer como feita a conexo do PHP com um servidor qualquer, que possui um banco de dados MySQL e receber tarefas atravs de comandos SQL.

2. Conectar o PHP com o MySQL

2.1. Passo 1: Conectar o Servidor

Para fazer a conexo com o servidor, utiliza-se a funo mysql_connect() com os 3 parmetros:

mysql_connect("servidor","usurio","senha");
Vamos supor um exemplo com os seguintes parmetros: Nome do servidor: 192.168.0.3 Nome do usurio: userlgp Senha do usurio: nn //Criar conexo com o servidor $conectar = mysql_connect("192.168.0.3","userlgp","nn") or die ("No foi possvel conectar o servidor."); Neste exemplo, a funo mysql_connect() foi armazenada em uma varivel chamada $conectar, que ser utilizada em outros pontos do programa, sempre que for preciso se referir a esta conexo. Caso algum parmetro fornecido seja falso, a conexo no acontecer e ser executada a funo die(), que encerra a execuo e exibe uma mensagem na tela. A funo die() opcional. Note que os 3 parmetros esto entre aspas.
Resumo das Aulas de PHP com MySQL - Prof. Celso Gallo Pgina 2

2.2. Passo 2: Conectar o Banco de Dados

Para fazer a conexo com o banco de dados, utiliza-se a funo mysql_select_db() com os 2 parmetros:

mysql_select_db("nome_do_BD", conexo_com_servidor);
Vamos supor o seguinte parmetro: Nome do banco de dados: BD_aluno Varivel para conectar o servidor: $conectar //Conectar com o Banco de Dados $banco = mysql_select_db("BD_aluno", $conectar) or die ("No foi possvel selecionar o Bco Dados."); Neste exemplo, a funo mysql_select_db()foi armazenada em uma varivel chamada $banco (opcional). Caso algum parmetro fornecido seja falso, a conexo no acontecer e ser executada a funo die(), que encerra a execuo e exibe uma mensagem na tela. A funo die() opcional. Note que o nome do banco de dados deve estar entre aspas, j a varivel $conectar no possui aspas.

2.3. Passo 3: Efetuar a Operao

Para executar uma tarefa em SQL, utiliza-se a funo mysql_query() com os 2 parmetros:

mysql_query(funo_SQL, conexo_com_servidor);
Vamos supor os seguintes parmetros: Varivel com os comandos SQL: $varSQL Varivel para conectar o servidor: $conectar //Executar um tarefa SQL $operacao = mysql_query($varSQL, $conectar) or die ("No foi possvel executar a operao."); Neste exemplo, a funo mysql_query() foi armazenada em uma varivel chamada $operacao. Caso algum parmetro fornecido seja falso, a conexo no acontecer e ser executada a funo die(), que encerra a execuo e exibe uma mensagem na tela. A funo die() opcional. Note que os 2 parmetros esto sem aspas pois so nomes de variveis.

Resumo das Aulas de PHP com MySQL - Prof. Celso Gallo

Pgina 3

PARTE 03 - Consultando Banco de Dados 3. Consulta ao Banco de Dados MySQL atravs do PHP 3.1. Buscar os Dados na Tabela do Banco de Dados
Para buscar os dados de uma consulta SQL, utiliza-se a funo mysql_fetch_array() com 1 parmetro:

mysql_fetch_array(operao_SQL);
Vamos supor uma consulta que foi determinada pela funo descrita no item 2.3. Ento, para buscar os dados na tabela do MySQL, preciso criar um lao lgico (neste exemplo usamos while()) que ser executado enquanto houver registros que satisfaam o comando SQL armazenado na varivel $varSQL. Veja a seguir: //Executar uma consulta SQL $operacao = mysql_query($varSQL, $conectar) or die ("No foi possvel executar a operao."); while ($linha = mysql_fetch_array($operacao)) { //recebe os dados da tabela do MySQL } A funo mysql_fetch_array() busca um registro inteiro, contendo os campos especificados no comando SQL. Entretanto, todos os campos deste registro fazem parte de array, ou seja, um vetor que ter um nome determinado pelo programador. Neste exemplo este vetor se chama $linha, e receber todo o contedo da funo mysql_fetch_array(). Sendo assim, preciso receber os dados do vetor $linha e separ-los em variveis php, da mesma forma como se faz com $_POST ou $_GET. Veja como ficou o cdigo-fonte: //Executar uma consulta SQL $operacao = mysql_query($varSQL, $conectar) or die ("No foi possvel executar a operao."); while ($linha = mysql_fetch_array($operacao)) { //recebe os dados da tabela do MySQL $cod = $linha["COD"]; $nom = $linha["NOME"]; $pre = $linha["PRECO"]; echo "Cdigo: $cod - Nome: $nom - Preo: $pre <HR>"; } Note que COD, NOME e PRECO so campos da tabela MySQL que est sendo consultada. A partir deste momento, esses 3 campos esto armazenados em variveis do php e podero ser utilizados dentro do programa. Neste exemplo, os 3 campos esto sendo exibidos na tela, separados por um hfen, seguido de uma linha horizontal.

Resumo das Aulas de PHP com MySQL - Prof. Celso Gallo

Pgina 4

3.2. Seu Primeiro Programa de Consulta ao MySQL com PHP


Vamos construir um exemplo de uma loja de DVD, onde queremos CONSULTAR todos os DVDs venda, e EXIBIR na tela. Considere a existncia de um banco de dados MySQL chamado banco, com uma tabela chamada tab_dvd. Salve este programa como Consulta.PHP. <HTML><!-- Banco de Dados MySQL - PHP - PROFESSOR CELSO GALLO --> <HEAD> <TITLE>Loja Virtual</TITLE> </HEAD> <BODY BGCOLOR="yellow" TEXT="darkblue"> <CENTER> <H2>Utilizando PHP com Banco de Dados MySQL</H2> <H3>Consultando os Registros Gravados</H3> <H3>Aluno 1 - Aluno 2</H3> </CENTER> <? //Estabelecer conexo com o Servidor $conecta = mysql_connect("192.168.0.3","usurio","senha") or die ("No foi possvel conectar o servidor."); //Acessar Banco de Dados j criado $banco = mysql_select_db("banco",$conecta) or die ("No foi possvel selecionar o Banco de Dados."); //Criar a declarao SQL para consulta $varSQL = "SELECT COD_DVD, NOME_DVD, DESC_DVD, PRECO_DVD FROM tab_dvd ORDER BY NOME_DVD ASC"; //Executar a operao $consulta = mysql_query($varSQL, $conecta) or die ("No foi possvel executar a consulta."); ?> Nesta primeira parte, foi estabelecida a conexo com o servidor e com o banco de dados. Em seguida criamos uma linha com os comandos SQL que sero utilizados para efetuar a operao, que neste exemplo uma consulta uma tabela chamada tab-dvd, com os campos COD_DVD, NOME_DVD, DESC_DVD, PRECO_DVD. Esta linha SQL foi armazenada na varivel $varSQL. Depois disso, foi criada uma nova varivel chamada $consulta que armazena a funo mysql_query().

Resumo das Aulas de PHP com MySQL - Prof. Celso Gallo

Pgina 5

No prximo trecho do programa ser feita a busca e a exibio dos dados. Veja a seguir: <!-- Montar o cabealho da tabela HTML --> <TABLE WIDTH=100% BORDER=1> <TR> <TH>Cdigo</TH> <TH>Nome</TH> <TH>Descrio</TH> <TH>Preco</TH></TR> <? //Exibir na tela 1 registro por linha dentro da tabela HTML while ($linha = mysql_fetch_array($consulta)) { $cod = $linha["COD_DVD"]; $nom = $linha["NOME_DVD"]; $des = $linha["DESC_DVD"]; $pre = $linha["PRECO_DVD"]; $preF = number_format($pre,"2",",","."); echo"<TR> <TD>$cod</TD> <TD>$nom</TD> <TD>$des</TD> <TD align=right>$preF</TD></TR>"; } echo "</TABLE>"; //Libera recursos e fecha a conexo mysql_free_result($consulta); mysql_close(); ?> Neste segundo trecho do cdigo-fonte, foi montada uma tabela HTML para a exibio dos dados da tela. Primeiro foi montado um cabealho, como sendo a 1 linha desta tabela HTML, fora do lao lgico. Em seguida foi criado um lao lgico que executar a funo mysql_fetch_array()com o parmetro $consulta, e armazenar na varivel vetor $linha, enquanto houver registro que satisfaa a varivel $varSQL. Cada registro que buscado no MySQL, recebido pelo vetor $linha e atribudo s suas respectiva variveis do php. Note que a varivel $pre foi formatada para o padro monetrio brasileiro antes de ser exibida na tela.

Resumo das Aulas de PHP com MySQL - Prof. Celso Gallo

Pgina 6

PARTE 04 - Consultando Pginas Dinmicas 4. O mtodo GET


Vamos realizar consultas ao banco de dados com diferentes filtros, atravs de uma pgina HTML chamada Menu.HTM, onde sero exibidos trs links para essas consultas: Consulta para exibir todos os DVDs. Consulta para exibir apenas os DVDs de Filmes. Consulta para exibir apenas os DVDs de Shows.

Para tanto, ao invs de editarmos 3 pginas de consulta para mostrar os resultados, faremos apenas uma, chamada ConGeral.php. Quando o usurio clicar no link desejado na pgina Menu.HTM, o prprio link enviar informaes atravs de variveis. Como j foi visto anteriormente, para enviar uma varivel pelo mtodo GET basta inserir o sinal de interrogao (?) logo aps o nome da pgina a ser acessada, seguido do nome da varivel e seu valor. Caso existam mais variveis a serem enviadas, acrescente o sinal de e-comercial (&) e digite nome e valor da segunda varivel, e assim por diante.

4.1. Escrevendo a Pgina com os Links


O cdigo-fonte a seguir dever ser gravado como Menu.HTM. <html> <head><title>Loja Virtual de DVD</title></head> <body> <table width="80%" border="1"> <tr> <th bgcolor="black"> <font color="white">CONSULTAS - Nome do Aluno</font></th></tr> <tr> <td> <a href="ConGeral.php?tipo=0&exibe=TODOS">Todos os DVDs</a></td></tr> <tr> <td> <a href="ConGeral.php?tipo=1&exibe=FILMES">Somente os FILMES</a></td></tr> <tr> <td> <a href = "ConGeral.php?tipo=2&exibe=SHOWS">Somente os SHOWS</a></td></tr> </table> </body> </html>

Resumo das Aulas de PHP com MySQL - Prof. Celso Gallo

Pgina 7

4.2. Escrevendo a Pgina com os Links


Quando o usurio clicar sobre um desses trs links, uma pgina de consulta em php chamada ConGeral.php ser executada pelo navegador. preciso fazer o recebimento e a verificao das variveis que foram enviadas junto com o link. Uma simples verificao com if() ou switch() desviar a execuo da pgina de acordo com o contedo a ser exibido, e criar uma linha de consulta SQL diferente para cada tipo. Vamos armazenar a linha do SQL em uma varivel chamada $consulta. Veja o trecho do cdigo-fonte a seguir: <? //Recebe as variveis vindas da pgina inicial Menu.HTM $tipo = $_GET["tipo"]; $exibe = $_GET["exibe"]; //Verifica a existncia da varivel $exibe if (!$exibe){ header("location: Menu.HTM"); } //Verifica o $tipo para selecionar a linha SQL correta switch ($tipo) { case "0": $consulta = "SELECT COD_DVD, NOME_DVD, DESC_DVD, PRECO_DVD, TIPO_DVD, FOTO_DVD FROM tab_dvd ORDER BY NOME_DVD ASC"; break; case "1": case "2": $consulta = "SELECT COD_DVD, NOME_DVD, DESC_DVD, PRECO_DVD, TIPO_DVD, FOTO_DVD FROM tab_dvd WHERE TIPO_DVD=$tipo ORDER BY NOME_DVD ASC"; break; } Caso o tipo = 0, desejamos exibir todos os DVDs gravados no banco de dados, ento a linha de consulta SQL no far filtro algum. Repare que no h o parmetro WHERE. Caso o tipo = 1 ou tipo = 2, desejamos filtrar a consulta, e portanto utilizaremos o parmetro WHERE que especifica o campo TIPO_DVD, podendo ter o valor 1 ou 2. Agora faa a conexo com o servidor e com o banco de dados, e execute a operao com mysql_query(). Note que a operao foi armazenada na varivel $resultado, e ser utilizada no mysql_fetch_array(). //Estabelecer conexo com o Servidor $conecta = mysql_connect("192.168.0.3","usurio","senha") or die ("No foi possvel conectar o servidor."); //Acessar Banco de Dados j criado $banco = mysql_select_db("banco",$conecta) or die ("No foi possvel selecionar o Banco de Dados."); //Executar a operao $resultado = mysql_query($consulta, $conecta) or die ("No foi possvel executar a consulta."); ?>
Resumo das Aulas de PHP com MySQL - Prof. Celso Gallo Pgina 8

Em seguida inicie a montagem da parte HTML, determinando cores para o fundo e para os textos. Exiba tambm uma mensagem dinmica no alto da pgina que depender do contedo da varivel $exibe. Certifique-se de ter fechado o PHP antes de escrever este trecho em HTML. <HTML> <HEAD><TITLE>Consulta de DVDs</TITLE></HEAD> <BODY BGCOLOR="#EEEEFF" TEXT="darkblue"> <center> <font face="Arial" size="4"> <? echo $exibe; ?> EM DVD<P> </font> </center> Agora crie a tabela HTML que exibir o resultado da consulta. Primeiro, a 1 linha de cabealho da tabela: <table width=100% border=1 bordercolor ='darkblue'> <tr bgcolor='orange'> <th width='100'>Foto</th> <th width='50'>Cdigo</th> <th width='100'>Nome</th> <th>Descrio</th> <th width='100'>Preco R$</th></tr> Ainda no feche a tabela. Abra o PHP e crie um lao lgico para a consulta no banco de dados. Cada DVD ser exibido em uma linha da tabela HTML: <? while ($linha = mysql_fetch_array($resultado)) { $foto = $linha["FOTO_DVD"]; $cod $tit $des $pre = $linha["COD_DVD"]; = $linha["NOME_DVD"]; = $linha["DESC_DVD"]; = $linha["PRECO_DVD"];

$preF = number_format ("$pre", 2, "," ,"."); echo"<TR BGCOLOR='white'> <td><img src='fotos/$foto' width='100' height='100' border='0'></td> <th>$cod</th> <td>$tit</td> <td>$des</td> <td align=right><b>$preF</b></td></TR>"; } echo "</TABLE>";
Repare que a varivel $preco foi formatada para valor monetrio brasileiro, e alinhada esquerda da clula.
Resumo das Aulas de PHP com MySQL - Prof. Celso Gallo Pgina 9

A varivel $foto armazena apenas o nome da foto a ser exibida. Como as fotos esto dentro de uma pasta chamada fotos, adicionamos essa informao dentro do parmetro src do tag <img>. Especificamos tambm o tamanho da foto com os parmetros width e height, para que no haja surpresa na exibio.
Para encerrar, liberamos os recursos do PHP, fechamos a conexo, encerramos o PHP e pgina HTML:

mysql_free_result($resultado); mysql_close(); ?> </BODY> </HTML>


A exibio dever ser semelhante a estas abaixo:

Resumo das Aulas de PHP com MySQL - Prof. Celso Gallo

Pgina 10