Vous êtes sur la page 1sur 39

O SUCESSO COMEA AQUI E AGORA

PHP + MYSQL INTRODUO A PROGRAMAO

Se fizermos o que sempre fizemos, teremos o resultado que sempre tivemos (Henry Ford)

Florianpolis, setembro de 2007 www.opens.com.br

Florianpolis, setembro de 2007

Prezado participante,

com muita satisfao que o recebemos neste grupo com o objetivo de ampliarmos nosso conhecimento. Nossos profissionais esto capacitados tcnica e didaticamente para apresentar o assunto, porm importante pensarmos que o ser humano no se compe somente de estudos tcnicos, mas se completa na utilizao dessas tecnologias associadas ao seu comportamento em constante evoluo. Assim, tambm, o convidamos para continuar estudando a tecnologia que envolve o seu trabalho e a livre expresso que envolve a sua vida. O sucesso comea aqui e agora. Bem-vindo!

Centro de Treinamento OpenS

Esta apostila est registrada na Biblioteca Nacional como material didtico do Centro de Treinamento OpenS, em nome do autor e organizador, Flavio Henrique Somensi (flavio@opens.com.br).

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

ndice
1. Introduo....................................................................................................... ....5 1.1. O que PHP........................................................................... ......................5 1.2. Caractersticas Principais.............................................................. ...............5 1.2.1. Server Based: ................................................................................ ......5 1.2.2. Portvel:................................................................................. ...............5 1.2.3. Bancos de Dados: ................................................ ................................5 1.2.4. Embutido no HTML................................................................. ...............5 1.2.5. XML........................................................................... ............................5 2. Instalao.......................................................................... .................................6 3. Primeiros Passos....................................................................... ..........................7 3.1. Noes de Programao.................................................... ..........................7 3.2. Primeiro Programa.......................................................... .............................7 3.3. Estrutura de um Programa PHP................................... ................................8 3.3.1. Comandos HTML....................................................... ............................8 3.3.2. Cdigo PHP..................................................................................... .......8 3.3.3. Mostrando os resultados...................................................... .................9 4. Manipulando de Dados........................................................... ..........................10 4.1. Valores Literais........................................................................................ ...10 4.1.1. Numricos.......................................................................... .................10 4.1.2. Texto ................................................................................................ ..10 4.2. Expresses..................................................................................... ............11 4.3. Operadores.................................................................... ............................11 4.3.1. Operadores Aritmticos.......................................... ............................11 4.3.2. Operadores de Atribuio...................................... .............................12 4.3.3. Operadores Lgicos........................................ ....................................13 4.3.4. Operadores de Comparao.................................. .............................13 4.3.5. Operador Ternrio.................................................... ...........................13 4.4. Variveis.................................................................. ..................................14 4.5. Estruturas de Controle.............................................................. .................15 4.5.1. if.......................................................................................... ................15 4.5.2. while................................................................................................ ....16 4.5.3. do...while....................................................................................... ......16 4.5.4. for...................................................................................................... ..16 4.5.5. foreach............................................................................... .................17 4.5.6. switch....................................................................................... ...........17 4.5.7. break e continue......................................................... ........................18 4.6. Funes.......................................................................................... ............19 4.6.1. Sintaxe.......................................................................... ......................19 4.6.2. Escopo............................................................................................. ....19 4.6.3. Passando por parmetro................................................... ..................19 4.6.4. Passagem de parmetro por referncia................................. .............20 4.6.5. Retornando valores......................................................... ....................20 5. Formulrios WEB......................................................................................... ......20 5.1. Definindo um Formulrio......................................... .................................20 5.2. Passando parmetros............................................ ....................................21 6. Banco de Dados..................................................................................... ...........23
3

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

6.1. Noes.............................................................................. .........................23 6.2. Criando uma Database.................................................... ..........................23 6.2.1. Criando uma Database....................................... ................................24 6.3. Manipulando Tabelas................................................................................ ..24 6.3.1. Criando T abelas......................................................................... ..........24 6.3.2. Inserindo Dados......................................................... .........................25 6.3.3. Consultando Dados.......................................................... ...................26 6.3.4. Alterando Dados............................................... ..................................27 6.3.5. Excluindo Dados............................................................................... ...28 6.3.6. Resumo e Outros Comandos teis.............................................. ........28 7. PHP e MySQL.................................................................................................... .29 7.1. Conectando-se a um banco de Dados............................... ........................29 7.1.1. Funes bsicas de Conexo.................................. ............................29 7.1.2. Programa conecta.php......................................................... ...............29 7.2. Recuperando Dados ........................................................................ ..........30 7.2.1. Funes bsicas de recuperao de dados.................................. .......30 7.2.2. Cdigo dentro de Cdigo................................ ....................................30 7.2.3. Utilizando os resultados..................................................... .................31 8. Um Sistema Completo................................................................ ......................32 8.1. O Modelo......................................................................................... ...........32 8.2. O Banco de Dados.................................................. ...................................32 8.3. As Funes................................................................................ .................32 8.4. O Controle de Login...................................................... .............................34 8.5. As Rotinas do Sistema............................................. ..................................35 8.5.1. Programa Principal........................................................... ...................35 8.5.2. Usurios Regras de Negcio.................................................... .........35 8.5.3. Usurios Interface com usurio............................................... .........36 9. Sobre o Profissional..................................................... .....................................38 10. Referncias Bibliogrficas........................................................................ ......39

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

1. INTRODUO
1.1. O
QUE

PHP

PHP combinao de linguagem de programao e servidor de aplicaes. Voc pode programar em PHP como em qualquer outra linguagem, definindo variveis, criando funes, realizando loops, enfim, tudo o que necessrio no mundo da programao. O que difere o PHP das outras linguagens de programao a sua capacidade de interagir com o mundo WEB, transformando pginas estticas em verdadeiras fontes de informao.

1.2.
1.2.1.

CARACTERSTICAS PRINCIPAIS
SERVER BASED:

O PHP roda no servidor, deixando assim , a parte do cliente leve, no causando demora no processamento das pginas e permitindo que sejam desenvolvidos sistemas WEB complexos, porm de acesso fcil e rpido.

1.2.2.

PORTVEL:
Linux, Windows , Unix,

Voc pode executar o PHP em diversos sistemas operacionais como etc.

1.2.3.

BANCOS

DE

DADOS:

O PHP possui cdigo nativo para diversos Bancos de Dados, entre eles Postgres, MySQL, Sybase, Oracle, e outros. Os banco de dados nativos possuem toda gama de funes dedicadas ao melhor aproveitamento das caractersticas de cada um deles.

1.2.4.

EMBUTIDO

NO

HTML

O PHP pode ser mesclado facilmente no HTML, permitindo a unio da funcionalidade do HTML com o poder do PHP.

1.2.5.

XML

O PHP dispes de funes especficas para tratar documentos baseados no padro XML.

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

2. INSTALAO
Para instalar e utilizar o PHP , so necessrios os seguintes softwares: Servidor WEB Linguagem de Programao Banco de Dados

-> Apache, IIS, etc -> PHP -> Mysql, Postgres, Oracle, Sybase, etc

Como o foco sempre Software Livre, vamos optar pelo conjunto: Apache + PHP + MySQL. Para a instalao no ambiente Linux , os seguintes pacotes so necessrios: apache2, php, php-mysql, mysql-server Estes pacotes podem ser obtidos diretamente atravs do instalador padro de sua distribuio (Ex: apt debian ; yum fedora) Para instalao no ambiente windows, o software XAMPP traz todos estes pacote j embutidos e pr-configurados. O XAMPP pode ser obtido em: http://www.apachefriends.org/pt_br/xampp.html. Aps instalados os softwares, necessrios inicializar o Servidor WEB (apache) e o Banco de Dados (mysql).

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

3. PRIMEIROS PASSOS
3.1. NOES
DE

PROGRAMAO

Um programa acima de tudo deve ser legvel o suficiente para que qualquer outro programador possa executar manutenes necessrias. So boas prticas de programao: 1) Sempre identifique a finalidade do programa, autor, data de criao, etc no seu incio ; 2) Use comentrios no escopo do programa sempre que julgar necessrio ou uma parte complexa de cdigo for escrita ; 3) Procure separar o Cdigo PHP do Cdigo HTML em programas distintos ; 4) Crie programas separados ou programas de funes para reaproveitar cdigo que tornamse repetitivos (Ex: cabealhos, rotinas de mensagem, etc) ; 5) D nomes a programas, funes e variveis que reflitam a sua verdadeira funcionalidade ;

3.2.

PRIMEIRO PROGRAMA

O primeiro passo para todo iniciante em uma linguagem de programao construir o primeiro programa. Mas antes , vamos considerar alguns fatores importantes: 1) Como voc est trabalhando em um servidor WEB e escrevendo programas para ele, importante saber onde salvar seus programas, para que o servidor WEB possa encontrlos quando for solicitado. 1. No Linux (debian): /var/www/ 2. No Windows (XAMMP): c:\arquivos de programas\xampp\htdocs\ 2) Use preferencialmente um editor em modo Texto ou um programa especfico para edio de cdigo html/php, pois editores grficos tendem a salvar seus programas em formatos proprietrios que no sero reconhecidos pelo interpretador do PHP. Para isso escolha um editor de textos qualquer (vi, bluefish, gedit, dreanweaver, etc) e digite a seguinte seqncia de comandos (no digite os nmeros da linhas) e salve o arquivo com o nome de programa_0.php :
1 <?php 2 // Programa: programa_0.php 3 // Autor: Fulano de Tal 4 // Data: 22/08/2007 5 echo <div align=center>Ola mundo !!!!</div> ; 6 ?>

programa_0.php

Dica:

Todas as linhas de um bloco PHP , SEMPRE terminam com ; (ponto e vrgula).


favorito e digite:

Para ver o resultado de seu programa, abra seu navegador http://localhost/programa_0.php. O resultado dever ser o seguinte:

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

Agora, se voc visualizar o cdigo fonte da pgina exibida acima, voc dever ver o seguinte:
<div align=center>Ola mundo !!!!</div>

Como voc deve ter percebido, o navegador recebeu somente cdigo HTML puro. Isto se deve ao fato de que todo cdigo PHP gerado no servidor e enviado para o navegador, somente o que interessa, em nosso caso, a frase: Ola mundo !!!. Um programa PHP pode ser salvo com qualquer nome e extenso, porm, por padro usa-se a extenso .php que j pr-configurada na instalao do servidor WEB. Agora vamos analisar cada linha de nosso programa:
Linha 1 TAG <?php Comentrio forma o servidor WEB que aqui comea um bloco de comandos PHP, que dever ser processado antes de enviar o resultado ao navegador. Todo o contedo entre entre esta tag e a tag ?> interpretado como cdigo PHP e dever obedece s regras desta linguagem. Indicam comentrios. Existem algumas maneiras de inserir comentrios dentro de um bloco de comandos PHP . As mais comuns so: // - Tudo o que digitado at o prximo <ENTER> comentrio /* ... */ - Tudo o que est entre /* e */ considerado comentrio, independente se tem quebra de linha ou no. Comando que serve para enviar dados ao browser, como frases, resultados de variveis, tags HTML, etc Informa ao servidor WEB que aqui acaba um bloco de cdigos PHP .

2a4

//

5 6

echo ?>

Resumindo: Tudo o que estiver entre as tags <?php e ?> considerado cdigo PHP e processado pelo servidor WEB antes de enviar para o navegador.

3.3.
3.3.1.

ESTRUTURA

DE UM

PROGRAMA PHP

Basicamente um programa PHP possui a seguinte estrutura:

COMANDOS HTML

So os comandos que sero enviados ao navegador sem qualquer formatao PHP. Geralmente so enviados as TAGS de inicializao HTML, como: <html>, <head>, <body>, scripts em java ou cdigos de formatao CSS.

3.3.2.

CDIGO PHP

So os blocos de cdigos com formatao especfica da linguagem. Em um programa podem existir diversos blocos de cdigos PHP intercalados com blocos de cdigo HTML. Dentro destes blocos PHP, voc pode ter declarao de variveis, acessos ao Banco de Dados, funes, loops, etc. Enfim, voc pode misturar cdigos PHP e HTML conforme for necessrio , e mais, como vimos no exemplo01.php, voc pode enviar cdigos HTML ao navegador atravs do comando echo do PHP. Para ficar mais claro, vamos ver o seguinte exemplo:
<html> <body> <?php $data = date(d/m/Y, time()) ; $hora = date(h:i, time()) ; ?> <p align=center> Hoje dia:<b><?php echo $data; ?></b> e agora so <b><?php echo $hora ;?></b> Hs </p> </body> </html>

programa_1.php

Como voc deve ter notado, existem comandos PHP e HTML combinados, tornando assim o PHP uma excelente ferramenta de autoria para WEB, pois valores declarados a variveis no inicio do programa continuam vlidos at o final do processamento deste.
8

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

3.3.3.

MOSTRANDO

OS RESULTADOS

A partir do momento que voc escreve o seu programa em PHP ele j est pronto para ser exibido na WEB. Em determinadas situaes voc ter programas em PHP que no exibiro nada no browser, porm isto no um fator que influencia sua execuo. Um programa PHP pode mostrar dados no browser , usando os comandos echo ou print. Veja o exemplo a seguir:
<html> <body> <?php $a = 10 ; $l = 20 ; $p = 15 ; // Calcula o volume $volume = $a * $l * $p ; // Define o dia/hora atuais $agora = date(d/m/Y h:i,time()); ?> </body> </html>

programa_2.php

Ao chamar este programa a partir do seu browser, nada ser exibido na tela. Apenas algumas variveis foram inicializadas e , juntamente com seu contedo, guardadas na memria. A partir do momento que o resultado foi enviado para o browser do usurio, estes valores so perdidos. Ao olhar o cdigo fonte deste programa, aps sua exibio no browser, voc ver o seguinte:
<html> <body> </body> </html>

Note que tudo o que foi escrito entre as tags <php e ?> no faz parte do cdigo fonte mostrado ao usurio, isto porque, tudo foi processado no servidor e nenhuma sada foi definida para ser exibida para o usurio. No exemplo a seguir, vamos colocar alguma exibio para o usurio no mesmo programa escrito anteriormente. Vejamos:
<html> <body> <?php $a = 10 ; $l = 20 ; $p = 15 ; // Calcula o volume $volume = $a * $l * $p ; echo O volume calculado foi de: $volume <br>; // Define o dia/hora atuais $agora = date(d/m/Y h:i,time()); echo Date e Hora atuais: $agora; ?> </body> </html>

programa_3.php

Os comandos de exibio usados ( echo ) vo surtir o seguinte efeito:

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

4. MANIPULANDO
4.1. VALORES LITERAIS

DE

DADOS

So todos os dados que voc coloca em um programa PHP para ser exibido para o usurio. Os valores literais so de 2 tipos:

4.1.1.

NUMRICOS

So quaisquer nmeros inteiros, reais, positivos, negativos, decimais, octais. Os Literais numricos so muito utilizados em quaisquer linguagens de de programao e so muito teis ara operaes matemticas e estatsticas. Exemplos: 23 -> Inteiro na base decimal (base 10 padro do PHP) 0xAB -> Inteiro na base hexadecimal. Nmeros comeando com 0x so tratados com base 16.

4.1.2.

TEXTO

So seqncias de caracteres delimitadas por aspas simples (') , aspas duplas () ou aspas invertidas (`). Aspas Simples ('): Voc poder colocar quaisquer cadeias de caracteres entre um para de aspas simples, porm, deve ter cuidado com o apostrofo . Exemplo: Escrevendo O Resultado ser 'Texto com aspas simples' -> Texto com aspas simples 'Maria Aparecida d'vila' -> ERRO: o PHP entende que o Literal termina em d, e no entende o que vem depois disso: vila'. 'Date e Hora atuais: $agora' -> Date e Hora atuais: $agora
1) Para resolver este tipo de situao, use, antes do caractere (') , uma contra-barra (\),assim o PHP desprezar o caractere seguinte contra-barra. Exemplo: 'Maria Aparecida d\'vila' -> Maria Aparecida d'vila 2) Variveis no so interpretadas quando colocadas entre aspas simples use aspas duplas ou ento concatene a variveis com o literal. Exemplos que surtem o mesmo efeito: 'Date e Hora atuais: '.$agora ou Date e Hora atuais: $agora -> Data e Hora atuais: 30/08/2007 08:54

Dica:

Aspas Duplas (): So quase idnticas s aspas simples , porm, as aspas duplas podem receber caracteres de controle ou meta caracteres , como por exemplo: \n -> salto de linha \t -> tabulao $ -> smbolo $ Aspas Invertidas (`) : Tem a funo especial de executar comandos do sistema operacional onde o programa est rodando. Exemplo:
<html> <body> <pre> <?php echo `free` ?> </pre> </body> </html>

programa_4.php

10

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

O resultado deste programa ser:

4.2.

EXPRESSES

No PHP quase tudo o que feito pode ser considerado uma expresso. A definio mais simples para uma expresso : expresso tudo o que tenha um valor. Podemos dizer ento que, $pi = 3.1415 uma expresso, porque estamos atribuindo a expresso 3.1415 (um nmero real) expresso $pi (uma varivel). Funes tambm podem ser definidas como expresses, porque elas retornam o resultado de diversas expresses. Outras formas de expresso no PHP : comparaes que retornam Verdadeiro ou Falso, como : == (igual), != (diferente), < (menor), <= (menor ou igual), > (maior) e >= (maior ou igual). incremento/decremento de variveis: ++ (incrementa 1) , -- (decrementa 1) , +=n (incrementa n) , -=n (decrementa n), *=n (multiplica n), /=n (divide n) Exemplos de expresses: $pi = 3.1415 $var = 1 $x = 5 $pi2 = 3.1415 $var = $var + 1 ou $var ++ $y = 7 ou -> Resulta: $var = 2 $z = $x > $y $pi = $pi2 = 3.1415 -> Resulta: $z = False

4.3.

OPERADORES

Operadores so elementos que dizem ao PHP quais aes devem ser executadas, como alterar o estado de um elemento, realizar testes , comparar elementos, etc. Existem os seguintes tipos de operadores:

4.3.1.
Operador + * / % ++operando --operando operando++ operando--

OPERADORES ARITMTICOS
Funo Adio Subtrao Multiplicao Diviso Mdulo Incrementa em 1 Decrementa 1 Incrementa em 1 Decrementa 1 Exemplo $a + $b, 5 + 5 $a - $b, 10 4, $total - $desconto - $impostos $a * $b, 3 * 7 * 2 $a / $b, $x / 4 $a % $b (resto da diviso de $a por $b) $b=2, $a=++$b (Resulta $a=3 e b=3) $b=2, $a=--$b (Resulta $a=1 e b=1) $b=2, $a=$b++ (Resulta $a=2 e b=3) $b=2, $a=$b-- (Resulta $a=2 e b=1)

Os Operadores Aritmticos so aqueles que executam operaes matemticas. So eles:

11

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

Exemplo:
<html> <body> <?php $saldo = 100 ; $entradas = 35; $saidas = 7.50; $saidas = -$saidas; // Troca o sinal de um operando ?> <table border=1 align=center> <tr> <td>Evento</td> <td>Saldo Anterior</td> <td>Entradas/Saidas</td> <td>Saldo Atual</td> </tr> <tr> <td>Saldo Inicial</td> <td> -x- </td> <td> -x- </td> <td> <?php echo $saldo; ?> </td> </tr> <tr> <td>Recebimento de Horas Extras</td> <td> <?php echo $saldo; ?> </td> <td> <?php echo $entradas; ?> </td> <td> <?php $saldo = $saldo + $entradas; echo $saldo ; ?> </td> </tr> <tr> <td>Pagamento do Almoo</td> <td> <?php echo $saldo; ?> </td> <td> <?php echo $saidas; ?> </td> <td> <?php $saldo = $saldo + $saidas; echo $saldo ; ?> </td> </tr> </body> </html>

programa_5.php

4.3.2.

OPERADORES

DE

ATRIBUIO

So os operadores que atribuem o valor da expresso que est direita do operador varivel que est esquerda. So operadores de atribuio:
Operador = += -= *= /= Funo Atribuir um valor Somar Subtrair Multiplicar Dividir Exemplo $a = 5 $a += 5 ( o mesmo que: $a = $a + 5) (Resulta: $a = 10) $a -= 5 ( o mesmo que: $a = $a - 3) (Resulta: $a = 7) $a *= 2 ( o mesmo que: $a = $a * 2 ) (Resulta: $a = 14) $a /= 3 ( o mesmo que: $a = $a / 3 ) (Resulta: $a = 4,66666666667)

12

Opens Centro de Treinamentos


%= .= Resto da Diviso Concatenar

PHP + MySQL Introduo Programao

Sendo: $a=14 ; $a %= 3 ( o mesmo que: $a = $a % 3 ) (Resulta: $a = 2) $x = Hoje : ; $z = $x .= Segunda (Resulta: $z = Hoje Segunda)

4.3.3.

OPERADORES LGICOS

So operadores que comparam duas expresses retornando o valor Lgico da , ou seja: Verdadeiro ou falso. So operadores Lgicos:
Operador AND OR XOR && || ! Descrio e lgico ou lgico ou exclusivo e lgico ou lgico Inverso (no) Exemplos (sendo: $a = 3 ; $b = 5 ) ( $a > 1 AND $b <10 ) ( $a < 1 OR $b > 5 ) ( $a > 1 XOR $b <10 ) ( $a > 1 AND $b > 5 ) idem ao AND idem ao OR ! ( $a > 1 ) ! ( $b > 5 ) -> Retorna Falso -> Retorna Verdadeiro -> Retorna Verdadeiro -> Retorna Falso -> Retorna Falso -> Retorna Verdadeiro

Assim, podemos construir as seguintes tabelas de comparao:


Expresso 1 V V F F Expresso 2 V F V F && (AND) V F F F || (OR) V V V F XOR F V V F

4.3.4.

OPERADORES

DE

COMPARAO

So operadores que executam testes de comparao entre duas variveis ou entre uma varivel e um literal, resultando sempre Verdadeiro ou Falso. So operadores de Comparao:
Operador == != ou <> > < >= <= Descrio igual diferente maior menor maior ou igual menor ou igual $a == $b $a != $b $a > $b $a < $b $a > $b $a < $b Exemplos (sendo: $a = 3; $b = 5 ) -> Resulta Falso -> Resulta Verdadeiro -> Resulta Falso -> Resulta Verdadeiro -> Resulta Falso -> Resulta Verdadeiro

Atente para o fato de que para comparao , usamos um DUPLO sinal de igual ( ==) . Se usarmos um sinal de igual SIMPLES (=) , estaremos atribuindo o operando da direita ao operando da esquerda. Ento: = -> atribui == -> compara Exemplo: $a = 5 (faz $a = 5 ) ; $a == 5 (verifica se $a IGUAL a 5 e retorna Verdadeiro ou Falso)

Dica:

4.3.5.

OPERADOR TERNRIO

um tipo especial de operador , que faz uma seleo dependendo de uma condio. A sua sintaxe : condio ? expresso1 : expresso2 Ou seja: se a condio for Verdadeira, retorna a expresso1, se a condio for Falsa, retorna a expresso2. Usando a lgica de programao clssica, poderamos escrever isso da seguinte forma:
13

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

SE $condio == Verdadeiro expresso1 SENO expresso2 Exemplo: $aumento = ( $salario > 1000) ? 15 : 25

Se $salario for maior que 1000, ento $aumento = 15, Se $salario <= 1000, ento $aumento = 25.

4.4.

VARIVEIS

Como a maioria das linguagens de scripts de servidor, o PHP no fortemente tipado; ou seja, as variveis no possuem tipos definidos e restritos, como ocorre em Pascal, Java, Delphi etc. Tambm no preciso fazer a declarao das variveis; assim que atribumos algum valor a uma varivel, ela passa a existir automaticamente. Por um lado isso bom, pois voc no precisa ficar se preocupando com declarar variveis e atribuir tipos a elas. Por outro lado ruim pois voc pode "perder o controle" das variveis dentro de seu script (caso elas sejam muitas); alm disso, perde-se bastante performance com linguagens no tipadas, pois o parser (ou interpretador) precisa perder tempo para "descobrir" qual o tipo da varivel. Tambm importante lembrar que o PHP case-sensitive, ou seja, ele distingue letras maisculas de letras minsculas. Portanto, $nome diferente de $Nome. Variveis podem ser :
Tipo de Varivel Numricas Strings Arrays $a = 2 ; $b = 2.1415 ; $c = -10 $a = Hoje ; $b = 'Endereo $a[] = Joo ; $a[] = 2 ; $b[1][0] = Segunda ; $x = array('ma','laranja') Exemplos

Os Arrays so os conhecidos vetores. Eles guardam vrias informaes em apenas uma varivel. Para indexar um array no PHP, usamos as chaves [ ]. No PHP existem dois tipos de arrays, os numricos e os associativos. Os numricos possuem nmeros inteiros como chaves (ndice); j os associativos possuem strings como chaves. Array numrico $frutas = array('ma','banana','abacate'); Assim: $frutas[2] tem o valor 'abacate' $frutas[0] tem o valor 'ma' Array associativo $frutas = array("a" => 'maa', "b" => 'banana', "c" => 'abacate'); Assim: $frutas['a'] tem o valor 'ma' Array numrico e associativo juntos $frutas = array('ma', "preferida" => 'banana'); Assim: $frutas[0] tem o valor 'ma' $frutas['preferida'] tem o valor 'banana' Array dentro de array $frutas = array("vermelhas" => array('morango','cereja',framboesa)); Assim: $frutas['vermelhas'][0] tem o valor 'morango' $frutas['vermelhas'][2] tem o valor 'framboesa'
14

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

4.5.

ESTRUTURAS

DE

CONTROLE

Um dos princpios fundamentais em programao envolve as decises lgicas que o programa dever realizar. Uma deciso lgica e uma deciso entre executar ou no um bloco de comandos dependendo do resultado de uma avaliao de expresso. Para controlar estas execues temos os seguintes comandos:

4.5.1.

IF

O fluxo do programa somente executa os comandos que esto dentro do if caso o resultado da $expressao seja verdadeiro (true). Sintaxe: if ($expressao) { comandos } Exemplo:
<?php $a = 3 ; $b = 3 ; if ($a == $b) { echo 'A igual a B'; } ?>

programa_6.php

Complementado o if , temos o else , que a oposio ao if. Caso o resultado de $expressao seja falso, ento o fluxo entra no else e executa os "outros comandos". Sintaxe: if ($expressao) { comandos } else { outros comandos } Exemplo:
<?php $a = 3 $b = 4 if ($a echo } else echo } ?> ; ; == $b) { 'A igual a B'; { 'A diferente de B';

programa_7.php

Tambm podemos necessitar de mais iteraes entre um if e um else. Para isso temos o elseif. Caso uma expresso de um if seja falsa, podemos fazer outra comparao antes de entrar nos comandos do else. Sintaxe: if ($expressao) { comandos } elseif ($outros_expressao) { outros comandos } else { comandos }
15

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

Exemplo:
<?php $a = 3 ; $b = 4 ; if ($a > $b) { echo "A maior que B"; } elseif ($a == $b) { echo "A igual a B"; } else { echo "A menor que B"; } ?>

programa_8.php

4.5.2.

WHILE

While, do ingls, significa "enquanto". A estrutura de controle while executa os comandos nela aninhados enquanto uma expresso for verdadeira. Sintaxe: while ($expressao) { comandos } Exemplo:
<?php $a = 1; while ($a <= 10) { echo $a; $a++; // mesma coisa que $a = $a + 1 } ?>

programa_9.php

4.5.3.

DO...WHILE

A estrutura do...while faz a mesma coisa que o while, porm a verificao da $expressao feita aps os comandos e no antes, garantindo que o fluxo de execuo entre no while ao menos uma vez, mesmo se na primeira repetio o resultado da $expressao seja falso. Sintaxe: do { comandos } while ($expressao) Exemplo:
<?php $a = 5; do { echo $a; } while ($a > 5); ?>

programa_10.php

4.5.4.

FOR

As estruturas de for so um pouco mais complicadas que as outras. A $expr1 executada apenas na primeira vez da repetio, por isso contm o primeiro valor da chave de comparao, normalmente. A $expr2 executada em toda repetio e caso o resultado seja false, o fluxo sai do for. A $expr3 executada ao final de toda repetio.

16

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

Sintaxe: for ($expr1; $expr2; expr3) { comandos } Exemplo:


<?php for ($a = 1;$a < 10; $a++) { echo $a; } ?>

programa_11.php

Observaes: Quando o fluxo de execuo entra no for acima, a varivel $a recebe o valor 1. Enquanto $a for menor que 10, o fluxo continua dentro do for (essa verificao executada sempre no comeo da repetio). Quando os comandos aninhados ao for acabam, a varivel $a recebe $a + 1, devido a terceira expresso da estrutura for ($a++).

4.5.5.

FOREACH

O foreach uma maneira fcil de andar dentro de um array. O que ele faz repetir comandos enquanto existirem elementos dentro de um array. Existem duas sintaxes para usar o foreach, cada uma gerando um resultado diferente. Sintaxe: foreach ($array as $valor) { foreach ($array as $chave => $valor) { comandos comandos } } Exemplo:
<?php $frutas = array('banana','maa','mamo','manga'); foreach($frutas as $valor) { echo $valor; } ?>

programa_12.php

Observaes: O fluxo de execuo repetir os comandos aninhados ao foreach at acabarem os valores do array $frutas. A cada repetio o valor atual atribudo a varivel $valor
<?php $frutas = array('banana','maa','mamo','manga'); foreach($frutas as $chave => $valor) { echo $chave . '-' . $valor; } ?>

programa_13.php

Observao: Essa sintaxe do foreach faz a mesma coisa que a sintaxe acima, porm ela atribui o valor da chave atual varivel $chave e do valor atual varivel $valor.

4.5.6.

SWITCH

Um switch testa vrios valores para uma mesma $expressao e executa comandos de acordo com esses valores. Substitui o uso de vrios ifs.

17

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

Sintaxe: switch ($expressao) { case x : comandos; break; case y : comandos; break; ... default: comandos ; break ; } Exemplo:
<?php switch ($a) { case 0 : echo 'a igual a zero'; break; case 1 : echo 'a igual a um'; break; default: echo 'a invlido'; break; } ?>

programa_14.php

O switch acima equivalente a essa cadeia de ifs


<?php if ($a == 0) echo 'a igual a zero'; elseif($a == 1) echo 'a igual a um'; elseif($a == 2) echo 'a igual a dois' else echo 'a invlido'; ?>

programa_15.php

Dica:

Switchs so mais rpidos que if's aninhados.


BREAK E CONTINUE

4.5.7.

O comando break para a execuo do for, foreach, while, do...while ou switch atual. O comando continue continua o loop de um for, foreach, while, do...while sem que seja necessrio o bloco de comandos ser executado at o final. Exemplo:
<?php $a = 10 ; while ($a <= 10) { $a-- ; if ($a == 0) { echo <br>Exibindo o valor de a: $a break; // Interrompe a execuo quando a for igual a 0 } if ($a < 4) continue // Continua o Fluxo do While sem executar os comandos seguintes echo '<br>Exibindo o valor de a: $a' } ?>

programa_16.php

18

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

4.6.

FUNES

Funes so agrupamentos de cdigo que realizam uma tarefa especfica. Como em qualquer outra linguagem de programao, o PHP possibilita a criao de funes. As funes so muito teis para a vida do programador, pois ajudam a diminuir a repetio desnecessria de cdigo e tambm a tornar o cdigo mais fcil de entender.

4.6.1.

SINTAXE

A sintaxe de uma funo no PHP muito simples. function nome_da_funo (parmetros da funo) { comandos ... [ return <expresso> ] }

4.6.2.

ESCOPO

Vale lembrar que uma funo Exemplo:


<?php function teste() { global $a; // chama a global $a, criada fora da funo echo $a; // retorna 'Ol Mundo !!!' } $a = 'Ol Mundo !!!'; teste(); // Executa a funo teste() ?>

programa_17.php

4.6.3.

PASSANDO

POR PARMETRO

Para evitar o uso de variveis globais, podemos passar por parmetro aquelas variveis que precisaremos usar dentro da funo. Exemplo:
<?php function teste($a) { echo $a; } $a = 'Ol Mundo !!!'; teste($a); ?> // retorna 'Ol Mundo!!!'

programa_18.php

19

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

4.6.4.

PASSAGEM

DE PARMETRO POR REFERNCIA

Para passar um parmetro por referncia, usamos o caracter & antes do recebimento do mesmo. Quando a passagem de parmetro feita por referncia, qualquer alterao que seja feita dentro da funo refletida fora da funo, na varivel original. Exemplo:
<?php function teste(&$b) { $b = 'Tchau. '; } $a = 'Ol Mundo !!!'; echo $a; // Retorna 'Ol Mundo !!!' teste($a); echo $a; // Retorna 'Tchau.' ?>

programa_19.php

4.6.5.

RETORNANDO

VALORES

Assim como uma varivel qualquer no pode ser acessada por uma funo (a no ser pelas excees citadas acima), o contrrio tambm acontece; variveis de dentro da funo s podem ser acessadas pela funo. Caso queiramos utilizar valores de uma varivel que foi criada dentro de uma funo, precisamos usar o comando return.
<?php function teste() { $a = 'Ol Mundo !!!'; } function retorna() { $a = 'Ol Mundo !!!'; return $a; } teste(); echo $a; $a = retorna(); echo $a; // No retorna nada // Retorna 'Ol Mundo !!!'

?>

programa_20.php

20

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

5. FORMULRIOS WEB
Um dos pontos fundamentais para construo de sites dinmicos so os formulrios de interao do sistema com o usurio. Os formulrios so responsveis por quase todas as informaes que devem ser manipuladas pelo sistema.

5.1.

DEFININDO

UM

FORMULRIO

Um formulrio Web uma pgina com no mnimo um campo para entrada de dados e um boto para submeter estes dados ao sistema. Exemplo:
1 <html> 2 <body> 3 <h2>Cadastro de Usurios</h2> 4 <form name=cadastro> 5 Digite seu Nome: 6 <input type="text" name="nome"> 7 <br> 8 <input type="submit" value="Confirmar Dados"> 9 </form> 10 </body> 11 </html>

programa_21.php

Mas, o que acontece quando digitamos um nome e clicamos no boto ?? A resposta simples: A pgina chamada novamente s que desta vez, temos uma pequena mudana no espao denominado Endereo ou URL do browser.

Note as seguintes mudanas: a) Aps o nome do programa, aparece um ponto de interrogao (?) - ele indica que foram passados parmetros para a pgina ; b) Aparece a palavra nome que foi definida como valor da opo name do nosso programa. (veja a linha 6 do programa_21.php) c) E finalmente, a palavra Flavio que foi o valor digitado no formulrio. Porm, o que vimos anteriormente no muito prtico, pois a cada vez que clicamos no boto, os dados se perdem. Podemos facilmente resolver isso, enviando os dados para outro programa, atravs da opo action da TAG form, e neste outro programa poderamos tratar os dados digitados pelo usurio. Assim, na linha 6 do nosso programa (programa_21.php) teramos, por exemplo, a seguinte sintaxe:
<form name=cadastro action=exibir_dados.php>

21

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

5.2.

PASSANDO PARMETROS

Aps a mudana feita anteriormente, ao executarmos novamente o programa, teremos as seguintes reaes: 1) Teremos um ERRO gerado pelo sistema, haja vista no existir o programa exibir_dados.php ; 2) Ainda teremos as mudanas na barra de endereos do nosso programa, como visto anteriormente. Isto ainda no uma situao confortvel para o programador , pois o nmero de caracteres permitidos em uma URL de aproximadamente 2000, o que limita muito o tamanho de um formulrio. Para resolver este tipo de problema, a TAG form tem uma outra opo, que se chama method. Esta opo tem dois tipos permitidos: GET Este o tipo padro quando method no est definido na TAG form. GET passa os dados na URL, limitando seu tamanho. Neste tipo, os dados do formulrio sero anexados ao cabealho da mensagem , ou seja, depois do nome do programa referenciado na opo action; POST Este tipo envia os dados no corpo da mensagem , no possuindo assim nenhuma forma de limitao quanto a tamanho e tambm fornecendo mais segurana para o sistema. Uma vez definido a opo method e, aps clicarmos no boto para submeter nosso formulrio, o PHP armazenas todas as informaes do formulrio em arrays. Para method = GET , as informaes esto no array $_GET Para method = POST , as informaes esto no array $_POST Nestes arrays, as chaves so os nomes do campos ( opo name) e os valores so as informaes de cada campo de entrada de dados. Assim, baseados em nosso exemplo, o programa_21.php, teramos a seguinte situao: 1) Como no foi definido uma opo method na TAG form, por padro, method=GET assumido; 2) O array de nosso formulrio seria: $_GET['nome'] = 'Flavio' De posse de todas exibir_dados.php: estas informaes, podemos agora escrever nosso programa

<html> <body> <h2>Dados Informados</h2> Nome: <?php echo $_GET['nome'] ?> </body> </html

exibir_dados.php

22

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

6. BANCO
6.1. NOES

DE

DADOS

O que torna um site dinmico a sua capacidade de guardar informaes e recuper-las quando necessrio. A maneira mais comum de fazermos isso utilizando Bancos de Dados. O PHP disponibiliza acesso nativo a diversos bancos de Dados: mysql, postgres, oracle, sybase, etc. Para Bancos de Dados que no possuem acesso nativo, existe o acesso via ODBC. Nosso estudo vai utilizar o mais popular Banco de Dados relacional gratuto , o MySQL. Um Banco de Dados pode ser definido como uma coleo de dados relacionados entre si. Dados podem ser definidos como fatos conhecidos que podem ser armazenados e possuem um significado explcito. Por exemplo: Uma coleo de nomes de pessoas com seus respectivos endereos e telefones. Em um Banco de Dados , estas colees so armazenadas em estruturas que denominamos de tabelas. Assim, uma tabela denominada usurios pode ter informaes dos usurios de um sistema (nome, endereo, senha, data de nascimento, etc) A um conjunto de tabelas que pertencem a um mesmo sistema comum, damos o nome de Databases ou Base de Dados (no confundir Base com Banco). Em uma notao simblica, poderamos mostrar:

Folha de Pagamento Funcionrios Impostos Proventos

Estoque Produtos Entradas

Databases Banco de Dados

Tabelas

6.2.

CRIANDO

UMA

DATABASE

Aps instalado o MySQL, existem diversas maneiras de criar uma Database, mas como o objetivo aqui mostrar o funcionamento do MySQL com o PHP, no vamos nos aprofundar muito em conceitos de Banco de Dados. A maneira mais simples de manipularmos databases e tabelas no MySQL acessarmos o seu prompt interativo. Para acessar o prompt do MySQL, usamos o seguinte comando: Sintaxe: mysql -u <usuario> [ -p <senha> ] [ -h <host> ] [ <database> ] onde: -u : nome do usuario de conexo com o Banco de Dados -p : senha do usurio -h : nome/ip do servidor onde est o Banco de Dados (para host=localhost, opcional) database: nome do Database a ser acessado

23

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

Exemplo:
mysql -u root

Acessa o banco com usurio root, que no possui senha e no seleciona nenhum Database ;

6.2.1.
Sintaxe: Exemplo:

CRIANDO

UMA

DATABASE

create database _nome_;

create database cursos ;

6.3.
6.3.1.

MANIPULANDO TABELAS
CRIANDO TABELAS

Para criarmos tabelas , primeiramente precisamos escolher em qual database esta tabela ser criada. Isto pode ser feito com o comando: use _nome_database_; Sintaxe: create table _nometabela_ (nome tipo [tamanho] [requerido] , ... ); onde: nometabela: Nome da Tabela nome: Nome do campo dentro da Tabela (Ex: endereco, cidade, codigo) tipo: Tipo do campo (Ex: numerico, caracter, data, etc) Veja tabela a seguir tamanho: Tamanho do campo Alguns tipos requerem um tamanho pr-definido requerido: Se o campo obrigatrio ou no: Tem 2 valores vlidos: NULL e NOT NULL Tipos de dados mais comuns no MySQL:
Tipo integer / int float(m,d) char(m) varchar(m) date time datetime Descrio Nmeros inteiros de -2147483648 a 2147483647 (signed) ou ento de 0 a 4294967295 (unsigned). Nmeros reais de -3.402823466E+38 a -1.175494351E-38 e de 1.175494351E-38 a 3.402823466E+38. m representa o tamanho do nmero de d representa o nmero de decimais. Uma string de tamanho fixo. m representa o tamanho da coluna. Caso o dado guardado nessa coluna seja menor que m, a diferena preenchida com espaos vazios. Caso m no seja declarado, o tamanho considerado 1. O tamanho vai de 0 a 255. Funciona da mesma maneira que o char, porm o tamanho da string no fixo (no existe o preenchimento com espaos). Datas com valor entre '1000-01-01' e '9999-12-31'. Perceba que o formato suporta 'AAAA-MM-DD'. Horas com valor entre '-838:59:59' e '838:59:59'. O formato 'HH:MM:SS'. Combinao entre date e time. O formato 'AAAA-MM-DD HH:MM:SS'. Suporta valores entre '1000-01-01 00:00:00' e '9999-12-31 23:59:59'.

24

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

Exemplo:
CREATE TABLE usuarios (codigo int NOT NULL, nome varchar(50), senha varchar(15), dt_cadastro datetime);

6.3.2.

INSERINDO DADOS

Aps criarmos a tabela em nosso Database, o passo seguinte povo-la com dados. Para isso usamos o comando insert. Sintaxe 1: INSERT INTO <nome_tabela> (campo1, campo2, ...) VALUES (valor1,valor2, ...) Sintaxe 2: INSERT INTO <nome_tabela> VALUES (valor1,valor2, ...) onde: nome_tabela: campo1,...: valor1,...: ATENO:

Nome da tabela onde os dados sero inseridos Nome do campo que receber um dado Valor do dado No caso da Sintaxe 2, fica sub-entendido que todos os campos da tabela recebero valores. Se algum valor for omitido, um erro de SQL ser gerado pelo Banco de Dados.

Exemplos:
INSERT INTO usuarios (codigo, nome, senha, dt_cadastro) VALUES (1, 'Joao da Silva', '12345', '2007-08-30 12:33:29') ; INSERT INTO usuarios VALUES (2, 'Maria Jos', 'm123', '2007-08-30 12:34:55') ; INSERT INTO usuarios VALUES (3, 'Pedro Maciel', 'pm123', now()) ;

25

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

Observaes: o MySQL tem diversas funes internas que podem facilitar a manipulao de dados. No exemplo anterior, usamos a funo now() que traz a data/hora do momento no formato datetime, que o tipo do campo dt_cadastro de nossa tabela.. Consulte uma relao completa em: http://dev.mysql.com/doc/refman/5.1/en/functions.html

6.3.3.

CONSULTANDO DADOS

As consultas do MySQL so usadas para recuperar informao do Banco de Dados a partir de critrios definidos pelo usurio. O comando utilizado para consultas o select. Sintaxe: SELECT <campos> FROM <tabela> [ WHERE <condio1> [AND/OR] <condio2> ] onde: campos: Nome dos campos que se deseja obter dados. Os campos devem estar separados por vrgula (,). Para selecionar TODOS os campos, use um asterisco (*). tabela: Nome da tabela a ser pesquisada. condio1: Condio que determinar a seleo de dados a ser obtida. Ex: codigo = 1. AND/OR: Se necessrio, vrias condies de pesquisa podem ser usadas, sempre separadas pelas clusulas AND ou OR. Exemplos:
SELECT * FROM usuarios ; select nome,dt_cadastro from usuarios where codigo = 1 ; select nome,dt_cadastro from usuarios where dt_cadastro >= '2007-09-01 00:00:00' ;

26

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

6.3.4.

ALTERANDO DADOS

Podemos tambm precisar alterar dados em uma tabela. Para isso usamos o comando SQL update. Sintaxe: UPDATE <tabela> SET campo=valor, campo=valor, ... [ WHERE <condio> ... ] onde: tabela: Nome da Tabela que ter campos a serem alterados ; campo: Nome do campo que sofrer alteraes ; valor: Novo Valor que ser determinado par ao campo condio: Condio de seleo dos registros que sofrero alterao. Se NENHUMA condio for especificada , todos os campos da tabela sero alterados. As regras para a condio so as mesmas do SELECT. Exemplos:
UPDATE usuarios SET dt_cadastro = now() WHERE codigo=1;

27

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

6.3.5.

EXCLUINDO DADOS

Para excluirmos dados de uma tabela , usamos o comando SQL delete. Sintaxe: DELETE from <tabela> [ WHERE <condio> ... ] onde: tabela: Nome da Tabela que ter campos a serem alterados ; condio: Condio de seleo dos registros que sero excludos. Se NENHUMA condio for especificada , todos os registros da tabela sero excludos. As regras para a condio so as mesmas do SELECT. Exemplos:
DELETE FROM usuarios WHERE codigo=1;

6.3.6.
Comando

RESUMO

OUTROS COMANDOS TEIS


Funo Exemplo

mysql -u <usuario> -p <senha> -h <host> Acessa a interface do prompt do mysql a mysql -u root <database> partir do shell do linux ou DOS do windows create database <nome> drop database <nome> show databases use <database> Criar um Database (Base de Dados) Apaga uma Database e suas tabelas Lista as Bases de dados existentes Seleciona uma database USE curso ; CREATE TABLE usuarios (codigo int NOT NULL, nome varchar(50), senha varchar(15), dt_cadastro datetime); DROP TABLE usuarios; INSERT INTO usuarios VALUES (2, 'Maria Jos', 'm123', '2007-08-30 12:34:55') ; UPDATE usuarios SET dt_cadastro = now() WHERE codigo=1; DELETE FROM usuarios WHERE codigo = 1; SELECT nome, dt_cadastro FROM usuarios WHERE dt_cadastro > '2007-09-01 00:00:00 ; CREATE DATABASE curso; DROP DATABASE curso;

create table <nome> (campo tipo [tamanho] Cria uma tabela na database selecionada [null/not null] ) drop table <tabela> insert into <tabela> values (campo1,...) update <tabela> set [where <condicao>] Apaga uma tabela da database Insere dados em uma tabela

<campo>=<valor> Altera dados de campos de uma tabela Apaga dados de uma tabela

delete from <tabela> [WHERE <condicao>] select <campo> from <tabela> <condicao>]

[where Seleciona dados de uma tabela

28

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

7. PHP
7.1. CONECTANDO-SE

MYSQL

A UM BANCO DE

DADOS

Para trabalhar com um Banco de Dados (Mysql, Postgres, etc) no PHP precisamos seguir os seguintes passos: 1) Abrir uma conexo com o servidor do Banco de Dados ; 2) Trabalhar com o Banco de Dados; 3) Fechar a Conexo Para executar estes passos o PHP oferece uma gama de funes que auxiliam e tornam mais fcil o desenvolvimento de scripts .

7.1.1.

FUNES

BSICAS DE

CONEXO

mysql_connect(): Esta funo cria uma conexo com o MySQL. Requisitos: Trs argumentos do tipo string: nome do host, nome do usurio do banco de dados e senha do usurio do banco de dados. Retorno: A funo retorna um identificador de vnculo quando consegue conectar ou NULL em caso de erro. Exemplo: $con = mysql_connect('localhost', 'root', '') ; mysql_close(): Esta funo FECHA uma conexo com o MySQL. Requisitos: Nome do vnculo criado na conexo. Retorno: A funo retorna True ou False. Exemplo: mysql_close($con); mysql_select_db(): Esta funo seleciona uma Database . Requisitos: Nome da Database e, opcionalmente o nome do vinculo criado pela funo mysql_connect(). Se nenhuma conexo for estabelecida antes , esta funo tentar criar um vinculo Retorno: A funo retorna True ou False . Exemplo: mysql_select_db('curso', $con) ;

7.1.2.

PROGRAMA

CONECTA.PHP

Conhecidas estas funes, podemos criar um script PHP para fazer estas tarefas.
<?php /* * Programa: conecta.php - Conectar ao Banco de Dados */ // Dados de conexo com o Banco de Dados // $dbname = 'curso' ; $user = 'root'; $passwd = '' ; $host = 'localhost'; $con=mysql_connect($host, $user, $passwd); if (!$con) echo "Erro ao conectar com o Banco de Dados."; else if ( !mysql_select_db($dbname, $con)) echo "Erro ao selecionar a Database."; ?>

29

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

7.2.

RECUPERANDO DADOS

Aps a conexo ter sida efetuada com sucesso, podemos efetuar qualquer consulta ou manipulao de dados dentro do Banco de Dados usando comandos SQL.

7.2.1.

FUNES

BSICAS DE RECUPERAO DE DADOS

mysql_query(): Esta funo envia comandos SQL para um Banco de Dados. Requisitos: Instruo SQL vlida e, opcionalmente o nome do vinculo da conexo com o banco de Dados.. Retorno: A funo retorna False ou ento um nmero diferente de 0 (zero). Exemplo: $result = mysql_query('select * from usuarios', $con) ; mysql_fetch_row(): Esta funo recupera as linhas de registros retornados pela funo mysql_query(). Requisitos: Ponteiro para o conjunto de dados retornado. Retorno: Um array correspondente s linhas recuperadas. Exemplo: while ( $linhas = mysql_fetch_row($result) ) { .... mysql_fetch_array(): Esta funo recupera as linhas de registros retornados pela funo mysql_query(), armazenando cada entrada no registro diante do nome do campo. Requisitos: Ponteiro para o conjunto de dados retornado. Retorno: Um array correspondente s linhas recuperadas. Exemplo: while ( $linhas = mysql_fetch_array($result) ) { ....

7.2.2.

CDIGO

DENTRO DE

CDIGO

Anteriormente criamos um programa chamado conecta.php que faz a conexo com o nosso Banco de Dados. Para podermos utiliz-lo , precisamos solicit-lo sempre que necessrio. para isso temos duas funes: include() / include_once(): Esta funo inclui um arquivo dentro do script atual. Devido a include() ser um construtor especial da linguagem, parentesis no so necessrios ao redor do seu argumento. Requisitos: Nome do arquivo a ser includo. Retorno: Exemplo: include ( conecta.php); ou include conecta.php ; require() / require_once(): Esta funo inclui um arquivo dentro do script atual. Devido a require() ser um construtor especial da linguagem, parentesis no so necessrios ao redor do seu argumento. Requisitos: Nome do arquivo a ser includo. Retorno: Exemplo: include ( conecta.php); ou include conecta.php ;

30

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

Diferenas: require x include : Se o arquivo passado como argumento no existir, require gera um Fatal Error e interrompe o script. require x require_once: Como require_once, o arquivo includo uma nica vez no script, no refazendo esta operao se um novo require for invocado. O mesmo vale para o include.

7.2.3.

UTILIZANDO

OS RESULTADOS

A seguir vamos construir um cdigo que mostra o uso das funes vistas at agora.
1 <?php 2 /* 3 * Programa: programa_22.php 4 */ 5 include (./conecta.php) ; 6 $sql = select codigo, nome, dt_cadastro from usuarios ; 7 $res = mysql_query($sql, $con); 8 while ($lin = mysql_fetch_row($res)) { 9 echo $lin[0] - $lin[1] : $lin[2] ; 10 } 11 mysql_close($con) ; 12 ?>

programa_22.php

Cdigo Explicado: Linha 5: Inclui o programa conecta.php que cria um vinculo chamado $con ; Linha 6: Atribui varivel $sql uma instruo SQL ; Linha 7: Atribui a varivel $res o handle (ponteiro) da execuo da funo mysql_query() ; Linha 8: Percorre todos as linhas recuperadas pela funo mysql_query() e armazena cada uma delas no array $lin. Linha 9: Exibe os dados do array $lin Linha 11: Fecha a conexo com o Banco de Dados
Se preferir usar a funo mysql_fetch_array(), a manipulao de dados fica mais simples, pois os nomes dos campos so usados com ndice do array. A linha 9, ficaria assim: echo $lin['codigo'] - $lin['nome'] : $lin['cadastro'] ;

Dica:

Resultado:

31

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

8. UM SISTEMA COMPLETO
Neste captulo vamos construir um pequeno sistema, aplicando todo o conhecimento visto at agora e, usando de modo simples, a separao do cdigo que constri a parte visual do cdigo que executa as regras de negcio.

8.1.

O MODELO

O Sistema de Cadastro de CD's dever poder controlar um acervo de CD's de diversos gneros musicais e com acesso restrito a usurios cadastrados somente.
Login Usurios Incluir Alterar Excluir Cabealho Rodap Conexo com BD Acervo Incluir Alterar Excluir Relatrios CD'S Menus Rotinas do Sistema

Programas auxiliares

8.2.

O BANCO

DE

DADOS
Tabela: Acervo

Database: cad_cds
Tabela: Usuarios Campo login nome senha dt_cadastro Tipo varchar varchar varchar datetime Tamanho 15 50 20 Requerido NOT NULL Campo codigo genero titulo artista dt_cadastro Tipo int char varchar varchar datetime 1 50 50 Tamanho Requerido NOT NULL

8.3.

AS FUNES

Para evitarmos ter que escrever vrios pequenos programas separadamente, vamos criar um nico programa de funes que agregar inicialmente as rotinas de cabealho, rodap , conexo com o Banco de Dados e mensagens de erro.
<?php /* Programa: funcoes.php * Finalidade: Reunir funoes de uso comum no Sistema * Data: 10/09/2007 */ /* ----------------------------------------------------------------------* Funcao: Cabecalho * Recebe: Titulo da Rotina * Retorna: Nada * ---------------------------------------------------------------------*/ function cabecalho($titulo) { ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

32

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

</head> <body> <table width='100%' cellpadding='0' cellspacing='0'> <tr> <td align='left' width='50%'>Curso de PHP + MySQL</td> <td align='right' width='50%'><?php echo date('d/m/Y h:i:s');?></td> </tr> <tr> <td colspan='2' align='center'> <b><?php echo $titulo;?></b> </td> </tr> </table> <?php menu() ; } // Fim da funo cabecalho /* ----------------------------------------------------------------------* Funcao: Rodap * Recebe: Nada * Retorna: Nada * ---------------------------------------------------------------------*/ function rodape() { ?> <hr> <center>Sistema de Cadastro de CD's - Vers&atilde;o 1.0</center> </body> </html> <?php } // Fim da funo rodape /* ----------------------------------------------------------------------* Funcao: Conecta * Recebe: Nada * Retorna: Identificador da Conexao * ---------------------------------------------------------------------*/ function conecta() { // Dados de conexao com o Banco de Dados // $dbname = 'cad_cds' ; $user = 'root'; $passwd = '' ; $host = 'localhost'; $con=mysql_connect($host, $user, $passwd); if (!$con) return False; else if ( !mysql_select_db($dbname, $con)) return False ; else return $con ; } // Fim da funo conecta /* ----------------------------------------------------------------------* Funcao: Mensagem * Recebe: Mensagem de Erro * Retorna: Nada * ---------------------------------------------------------------------*/ function mensagem($msg) { echo "<SCRIPT>alert(\"$msg\");history.go(-1);</SCRIPT>" ; } // Fim da funo mensagem /* ----------------------------------------------------------------------* Funcao: MENU * Recebe: Nada * Retorna: Nada * ---------------------------------------------------------------------*/ function menu() { ?> <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr bgcolor="#CCCCCC"> <td width="25%" align="center"> <a href="usuarios.php"> <b>Usu&aacute;rios</b> </a> </td> <td width="25%" align="center">Acervo</td> <td width="25%" align="center">Relat&oacute;rios</td> <td width="25%" align="center"> <a href="index.php">Sair</a> </td> </tr> </table> <br /> <?php } ?>

funcoes.php

33

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

8.4.

O CONTROLE DE LOGIN

Este programa dever solicitar um nome de usurio e senha e, aps o usurio clicar no boto, o banco de dados dever ser consultado para ver se os dados digitados so de um usurio vlido. Apenas considere que , para o programa funcionar adequadamente voc precisa ter pelo menos 1 usurio cadastrado na tabela usuarios. Para fazer isso, precisamos de 2 programas: index.php -> Ir construir o formulrio de entrada de dados ; redireciona.php -> Ir verificar se o usurio vlido e permitir ou no seu acesso ao sistema
<?php /* * Programa: login.php - Login do Sistema * Finalidade: Obter o Login do usuario vlido * Data: 10/09/2007 */ require_once("./funcoes.php"); // Inclui as funcoes do Sistema ?> <form ACTION="redireciona.php" METHOD="post"> <table width="640" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td colspan="2" height="50">&nbsp;</td> </tr> <tr> <td>Nome de Login: </td> <td><input type="TEXT" name="nome_login"></td> </tr> <tr> <td>Senha:</td> <td><input type="PASSWORD" name="senha_login"></td> <tr> <tr> <td colspan="2" align="center">&nbsp;</td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="Acessar"></td> </tr> </table> </form> <?php rodape() ; ?>

index.php
<?php /* * Programa: redirecina.php * Finalidade: Verifica login e direciona para paginas do sistema * Data: 10/09/2007 */ include_once("./funcoes.php"); $con = conecta() ; // Cria o vinculo de conexao com o BD // Autenticando o usuario // $usuario = $_POST["nome_login"]; $password = $_POST["senha_login"]; $sql = "select senha from usuarios where login = '$usuario' "; $res = mysql_query($sql,$con) ; if (!$res) { mensagem("Problemas com a conexao ao Banco de Dados") ; exit ; } $lin = mysql_fetch_row($res) ; if ( mysql_num_rows($res) == 0 || $password != $lin[0]) { mensagem("Usuario nao cadastrado ou senha invalida") ; } mysql_close($res) ; echo "<meta http-equiv='Refresh' content='0; url=principal.php'>"; exit; ?>

redireciona.php

34

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

8.5.
8.5.1.

AS ROTINAS

DO

SISTEMA

PROGRAMA PRINCIPAL

Este programa ir construir a interface principal do nosso sistema, mostrando cabecalho + menu + rodape.
<?php /* * Programa: principal.php * Finalidade: Mostrar uma tela principal do sistema * Data: 10/09/2007 */ require_once("./funcoes.php"); // Inclui as funcoes do Sistema cabecalho("Menu Principal"); // Chama a funco cabecalho rodape() ; ?>

principal.php

8.5.2.

USURIOS REGRAS

DE

NEGCIO

Este programa tem, separado em funes, as rotinas de incluso, alterao e excluso de dados cadastrais dos usurios. Atente para que todo o programa gira em torno de qual boto foi clicado no formulrio (form_usuarios.php).
<?php /* * Programa: usuarios.php * Finalidade: Mantem o cadastro de usuarios * Data: 10/09/2007 */ if ($acao == "Gravar") cadastrar() ; elseif ($acao == "Alterar" ) alterar() ; elseif ($acao == "Grava Alteracoes" ) grava_alterar() ; elseif ($acao == "Excluir" ) excluir() ; else principal() ; /*-----------------------------------------------------------------------------Funcao PRINCIPAL - Monta a tela principal da rotina ------------------------------------------------------------------------------*/ function principal() { $titulo = "Cadastro de Usuarios"; require_once("./funcoes.php"); require_once("./form_usuarios.php"); } /*-----------------------------------------------------------------------------Funcao CADASTRAR - Inclui um novo registro ------------------------------------------------------------------------------*/ function cadastrar() { $nome = $_POST['nome'] ; $login = $_POST['login'] ; $senha = $_POST['senha'] ; require_once("./funcoes.php"); $sql = "insert into usuarios "; $sql .= " (nome, login, senha, dt_cadastro)" ; $sql .= " values ('$nome','$login', '$senha',now())" ; $con = conecta() ; $res = mysql_query($sql,$con) ; if ($res) mensagem("Registro gravado com sucesso.") ; else mensagem("Erro ao gravar dados na tabela."); mysql_close() ; } /*-----------------------------------------------------------------------------Funcao ALTERAR - Altera um registro ------------------------------------------------------------------------------*/ function alterar() { global $acao ; require_once("./funcoes.php") ;

35

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

$titulo = "Alterar Cadastro de Usuarios"; $codigo = $_POST['codigo'] ; if (!($codigo)) { mensagem("Nenhum registro foi selecionado.") ; exit ; } $sql = "select nome,senha,login,dt_cadastro from usuarios "; $sql .= " where login='$codigo'" ; $con = conecta() ; $res = mysql_query($sql,$con) ; if (!$res) mensagem("Erro ao pesquisar dados na tabela."); $lin = mysql_fetch_array($res) ; $senha = $lin['senha'] ; $nome = $lin['nome'] ; $login = $lin['login'] ; $dt_cadastro = $lin['dt_cadastro'] ; mysql_close() ; require_once("./form_usuarios.php");

/*-----------------------------------------------------------------------------Funcao GRAVA_ALTERAR - Grava registro Alterado ------------------------------------------------------------------------------*/ function grava_alterar() { $nome = $_POST['nome'] ; $login = $_POST['login'] ; $senha = $_POST['senha'] ; require_once("./funcoes.php"); $sql = "update usuarios "; $sql .= " set nome='$nome', senha='$senha'" ; $sql .= " where login='$login'" ; $con = conecta() ; $res = mysql_query($sql,$con) ; if ($res) mensagem("Registro alterado com sucesso.") ; else mensagem("Erro ao alterar dados na tabela."); mysql_close() ; } /*-----------------------------------------------------------------------------Funcao EXCLUIR - Excluir registro selecionado ------------------------------------------------------------------------------*/ function excluir() { require_once("./funcoes.php") ; $codigo = $_POST['codigo'] ; if (!($codigo)) { mensagem("Nenhum registro foi selecionado.") ; exit ; } $sql = "delete from usuarios where login='$codigo'"; $con = conecta() ; $res = mysql_query($sql,$con) ; if ($res) mensagem("Registro excluido com sucesso.") ; else mensagem("Erro ao excluir o registro da tabela."); mysql_close() ;

} ?>

usuarios.php

8.5.3.

USURIOS INTERFACE

COM USURIO

Este programa constri a interface para com o usurio, contendo nele basicamente cdigo HTML e referncias variveis do sistema com informaes pertinentes sua exibio na tela.
<?php /* * Programa: form_usuarios.php * Finalidade: Form para Cadastro de usuarios * Data: 10/09/2007 */ cabecalho($titulo) ; ?> <form name="cadastrar" method="POST" enctype="multipart/form-data"> <table align="center" cellspacing="0" width="80%"> <tr> <td>Login:</td> <td>

36

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

<input name="login" type="text" size="15" maxlength="15" value="<?=$login;?>" > </td> </tr> <tr> <td>Nome do Usuario: </td> <td> <input name="nome" type="text" size="30" maxlength="50" value="<?=$nome;?>" > </td> </tr> <tr> <td>Senha:</td> <td> <input name="senha" type="password" size="20" maxlength="20" value="<?=$senha;?>" > </td> </tr> <?php if ($acao != "Alterar") { ?> <tr> <td colspan="2" align="center" height="40"> <input type="submit" name="acao" value="Gravar"> </td> </tr> <tr> <td colspan="2"><hr></td> </tr> <tr> <td colspan="2" align="center" height="40"> <b>Selecione um registro e clique na a&ccedil;&atilde;o desejada:</b><br> <select name="codigo"> <option value=""></option> <?php $con = conecta() ; $sql = "select nome, login from usuarios order by nome" ; $res = mysql_query($sql, $con) ; while ($lin = mysql_fetch_array($res)) { echo "<option value=".$lin['login'].">".$lin['nome']."</option>" ; } ?> </select> &nbsp;&nbsp;&nbsp;&nbsp; <input type="submit" name="acao" value="Alterar"> &nbsp;&nbsp;&nbsp;&nbsp; <input type="submit" name="acao" value="Excluir"> </td> </tr> <?php } else { ?> <tr> <td colspan="2" align="center" height="40"> <input type="submit" name="acao" value="Grava Alteracoes"> </td> </tr> <tr> <td colspan="2"><hr></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" name="acao" value="Voltar"> </td> </tr> <?php } ?> </table> </form> <?php rodape() ; ?>

form_usuarios.php

37

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

9. SOBRE

PROFISSIONAL

Flvio Henrique Somensi, desde 1989, trabalhou em vrios projetos para empresas pblicas e privadas e, nos ltimos 5 anos desenvolve sistemas para web e gerenciamento de servidores linux usando exclusivamente Software Livre. Responsvel pela traduo de um dos melhores softwares livres para gerenciamento financeiro - o Grisbi. Na rea de treinamentos j ministrou cursos como: Sutes Office Microsoft e OpenOffice, Desenvolvimento de Sites baseados em CMS com Joomla , PHP e MySQL, Shell Script, entre outros. Na OpenS, responsvel pelo Departamento de desenvolvimento e documentao de novos produtos da Opens Tecnologia, j implementou solues nas mais diversas reas do Software Livre, como: Sistemas de Back-up, Help-Desk, Gerenciamento de Projetos, Gerenciamento de Contedo, Interface de Estatstica e Gerenciamento do Asterisk.

Porque usar software livre no apenas ideologia, mas fonte de inspirao para tornar o mundo mais justo e humano.
Flvio Henrique Somensi www.flaviohenrique.net flavio@opens.com.br

38

Opens Centro de Treinamentos

PHP + MySQL Introduo Programao

10.

REFERNCIAS BIBLIOGRFICAS

Soares, Walace. Programando em PHP Conceitos e Aplicaes. Editora rica Ltda., 2000. Wankyu Choi, Allan Kent, Chris Lea, Ganesh Prasad, Chris Ullman. Beginning PHP 4 Programando. Makron Books, 2002.

39