Vous êtes sur la page 1sur 43

Universidade da Regio da Campanha

Centro de Cincias da Economia e Informtica


Curso de Informtica
Disciplina: Tpicos Especiais em Sistemas de Informao

APACHE, PHP e
MySQL

Autor Prof. Cristiano Cachapuz e Lima

Essa apostila sofreu alteraes/correes na sua forma original, com contedos e


exemplos acrescidos, editados e corrigidos pelo Professor Jos Ce Jnior.

SUMRIO

1. INTRODUO .......................................................................................................... 4
2. EXEMPLO DE SCRIPT............................................................................................ 5
3. CONFIGURAO (PHP.INI) .................................................................................. 8
4. SINTAXE BSICA .................................................................................................... 9
5. VARIVEIS.............................................................................................................. 10
6. TIPOS DE DADOS................................................................................................... 11
7. CONSTANTES ......................................................................................................... 13
8. FUNES ................................................................................................................. 14
9. EXPRESSES .......................................................................................................... 15
10. OPERADORES ...................................................................................................... 16
OPERADORES LGICOS........................................................................................ 19
11. ESTRUTURAS DE CONTROLE......................................................................... 20
12. FORMULRIOS.................................................................................................... 23
MANIPULANDO DADOS DE FORMULRIOS COM PHP ................................. 25
INTRODUO.......................................................................................................... 25
CAMPOS HIDDEN ................................................................................................... 26
CAMPOS TEXT E TEXTAREA ............................................................................... 26
CAMPOS RADIO ...................................................................................................... 27
CAMPOS CHECKBOX............................................................................................. 27
CAMPOS SELECT .................................................................................................... 28
13. CLASSES E OBJETOS ......................................................................................... 29
14. REFERNCIAS ..................................................................................................... 31
15. MATRIZES............................................................................................................. 32
16. INCLUSO DE ARQUIVOS ................................................................................ 33
17. COOKIES ............................................................................................................... 34
18. PARMETROS...................................................................................................... 35
19. UPLOADS ............................................................................................................... 36
20. ENVIO DE E-MAILS ............................................................................................ 37
PHP E MYSQL .......................................................................................................... 38
21. INTRODUO AO MYSQL................................................................................ 38
22. EXIBIO .............................................................................................................. 39
23. CONSULTA E ORDENAO ............................................................................. 40
24. INCLUSO E ATUALIZAO .......................................................................... 41
25. EXCLUSO ............................................................................................................ 42

26. REFERNCIAS ..................................................................................................... 43

1. INTRODUO
PHP uma sigla recursiva que significa PHP HyperText Preprocessor. O PHP
uma linguagem de cdigo-fonte aberto, muito utilizada na Internet e especialmente
criada para o desenvolvimento de aplicativos Web.
Note como isso diferente de scripts CGI escritos em outras linguagens como
Perl ou C --- ao invs de escrever um programa com um monte de comandos para
imprimir HTML, voc escreve um arquivo HTML com algum cdigo inserido para
fazer alguma coisa (nesse caso, imprimir um pouco de texto). O cdigo PHP
delimitado por tags iniciais e finais que lhe permitem pular pra dentro e pra fora do
modo PHP.
A melhor coisa em usar PHP est no fato de ele ser extremamente simples para
um iniciante, mas oferece muitos recursos para o programador profissional.
Para testar scripts PHP necessrio um servidor com suporte a esta tecnologia.
Normalmente, o mais utilizado o Apache. O banco de dados mais utilizado
com os scripts PHP o MySQL. Um exemplo de pacote pronto para execuo de um
ambiente Apache + PHP + MySQL o EasyPHP (http://www.easyphp.org). Qualquer
editor de textos pode ser usado para escrever os scripts PHP (ex. bloco de notas ou a
ferramenta free PHP Editor disponvel em http://www.baixaki.com.br/download/phpeditor.htm).
As pginas PHP devem ser salvas no diretrio raiz do servidor. Para testes locais
com o EasyPHP, essa pasta c:\Arquivos de programas\EasyPHP\www. Ou ento
pode-se criar uma estrutura especfica para armazenar os arquivos, como por exemplo,
uma partio diferente da onde o sistema operacional est instalado (d:/). Veja as
modificaes essenciais para que isso ocorra na figura abaixo.
...
# If your host doesn't
address here.
#
ServerName localhost:80

have

registered

DNS

name,

enter

its

IP

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory,
but
# symbolic links and aliases may be used to point to other locations.
#
#DocumentRoot "C:/Program Files (x86)/EasyPHP5.3.0/www"
DocumentRoot "D:backup_ce/arquivos/Softwares/Php/Teste_PHP"

#
# Each directory to which Apache has access can be configured with
respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
...

Figura 1 Arquivo httpd.conf


Em todos os trechos, dentro do arquivo citado da figura acima, onde aparecer o
item DocumentRoot, modificar o caminho completo da pasta onde esto os arquivos com
a extenso .php.
Para acessar a pgina, deve-se abrir o browser Internet Explorer e digitar-se o
nome do domnio (http://127.0.0.1) e o nome da pgina com extenso .php. Quando o
EasyPHP est sendo executado, aparece um cone com uma letra e ao lado do relgio
do Windows.

2. EXEMPLO DE SCRIPT
Para criar o primeiro exemplo, digite o seguinte cdigo-fonte no seu editor e
salve com o nome de teste.php dentro do diretrio raiz do servidor (ou pasta que voc
escolher para armazenar os cdigos).
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php echo "<p>Al Mundo</p>"; ?>
</body>
</html>

Figura 2 Primeiro script


No browser, digite o endereo

http://127.0.0.1/teste.php

e veja o

resultado. Veja tambm o cdigo fonte da pgina (Exibir -> Cdigo fonte).
interessante notar que os comandos PHP no aparecem porque o servidor interpreta
todos os scripts antes de enviar a pgina para o browser.
O que PHP pode fazer?
Qualquer coisa. O PHP focado para ser uma linguagem de script do lado do
servidor, portanto, voc pode fazer qualquer coisa que outro programa CGI pode fazer,
como: coletar dados de formulrios, gerar pginas com contedo dinmico ou enviar e
receber cookies. Mas o PHP pode fazer muito mais.
Esses so os maiores campos onde os scripts PHP podem se utilizados:

Script

no lado do servidor (server-side). Este o mais tradicional e principal

campo de atuao do PHP. Voc precisa de trs coisas para seu trabalho. O
interpretador do PHP (como CGI ou mdulo), um servidor web e um browser.
Basta rodar o servidor web conectado a um PHP instalado. Voc pode acessar os
resultados de seu programa PHP com um browser, visualizando a pgina PHP
atravs do servidor web.
Script

de linha de comando. Voc pode fazer um script PHP funcionar sem um

servidor web ou browser. A nica coisa necessria o interpretador. Esse tipo de


uso ideal para script executados usando o cron ou o Agendador de Tarefas (no
Windows). Esses scripts podem ser usados tambm para rotinas de
processamento de texto.
Escrevendo

aplicaes GUI no lado do cliente (client-side). O PHP no

(provavelmente) a melhor linguagem para produo de aplicaes com


interfaces em janelas, mas o PHP faz isso muito bem, e se voc deseja usar
alguns recursos avanados do PHP em aplicaes no lado do cliente poder
utilizar o PHP-GTK para escrever esses programas. E programas escritos desta
forma ainda sero independentes de plataforma. O PHP-GTK uma extenso do
PHP, no disponvel na distribuio oficial. Se voc est interessado no PHPGTK, visite o site http://gtk.php.net.
O PHP pode ser utilizado na maioria dos sistemas operacionais, incluindo Linux,
vrias variantes Unix (incluindo HP-UX, Solaris e OpenBSD), Microsoft Windows,
Mac OS X, RISC OS, e provavelmente outros. O PHP tambm suportado pela maioria
dos servidores web atuais, incluindo Apache, Microsoft Internet Information Server,
Personal Web Server, Netscape and iPlanet Servers, Oreilly Website Pro Server,
Caudium, Xitami, OmniHTTPd, e muitos outros. O PHP pode ser configurado como
mdulo para a maioria dos servidores, e para os outros como um CGI comum.
Com o PHP, portanto, voc tem a liberdade para escolher o sistema operacional
e o servidor web. Do mesmo modo, voc pode escolher entre utilizar programao
estrutural ou programao orientada a objeto, ou ainda uma mistura deles. Mesmo no
desenvolvendo nenhum recurso padro de OOP (Object Oriented Programming,
Programao Orientada a Objetos) na verso atual do PHP, muitas bibliotecas de cdigo
e grandes aplicaes (incluindo a biblioteca PEAR) foram escritos somente utilizando
OOP.

Com PHP voc no est limitado a gerar somente HTML. As habilidades do


PHP incluem gerao de imagens, arquivos PDF e animaes Flash (utilizando libswf
ou Ming) criados dinamicamente. Voc pode facilmente criar qualquer padro texto,
como XHTML e outros arquivos XML. O PHP pode gerar esses padres e os salvar no
sistema de arquivos, em vez de imprimi-los, formando um cache dinmico de suas
informaes no lado do servidor.
Talvez a mais forte e mais significativa caracterstica do PHP seu suporte a
uma ampla variedade de banco de dados. Escrever uma pgina que consulte um banco
de dados incrivelmente simples. Os seguintes bancos de dados so atualmente
suportados:
Adabas D

Ingres

Oracle (OCI7 and OCI8)

dBase

InterBase

Ovrimos

Empress

FrontBase

PostgreSQL

FilePro (read-only)

mSQL

Solid

Hyperwave

Direct MS-SQL

Sybase

IBM DB2

MySQL

Velocis

Informix

ODBC

Unix dbm

Adicionalmente, o PHP suporta ODBC (Open Database Connection, ou Padro


Aberto de Conexo com Bancos de Dados), permitindo que voc utilize qualquer outro
banco de dados que suporte esse padro mundial.
O PHP tambm tem suporte para comunicao com outros servios utilizando
protocolos como LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (em Windows) e
incontveis outros. Voc pode abrir sockets de rede e interagir diretamente com
qualquer protocolo. O PHP tambm suporta o intercmbio de dados complexos WDDX,
utilizado em virtualmente todas as linguagens de programao para web. Falando de
comunicao, o PHP implementa a instanciao de objetos Java e os utiliza
transparentemente como objetos PHP. Voc ainda pode usar sua extenso CORBA para
acessar objetos remotos.
O PHP extremamente til em recursos de processamento de texto, do POSIX
Estendido ou expresses regulares Perl at como interpretador para documentos XML.
Para acessar e processar documentos XML, so suportados os padres SAX e DOM.
Voc ainda pode usar nossa extenso XSLT para transformar documentos XML.

Utilizando o PHP no campo do e-commerce, voc poder usar as funes


especficas para Cybescash, CyberMUT, Verysign Payflow Pro e CCVS, prticos
sistemas de pagamento online.
Por ltimo, mas longe de terminar, temos tambm outras extenses
interessantes: funes para o search engine mnoGoSearch, funes para Gateway IRC,
vrios utilitrios de compresso (gzip, bz2), calendrio e converses de datas, traduo,
etc.

3. CONFIGURAO (PHP.INI)
As configuraes do PHP ficam armazenadas em um arquivo denominado
php.ini e que carregado cada vez que o servidor iniciado. No Windows, ele fica na
pasta c:\Windows.
Exemplo:
[PHP]
;;;;;;;;;;;
; WARNING ;
;;;;;;;;;;;
; This is the default settings file for new PHP installations.
; By default, PHP installs itself with a configuration suitable for
; development purposes, and *NOT* for production purposes.
; For several security-oriented considerations that should be taken
;
before
going
online
with
your
site,
please
consult
php.inirecommended
; and http://php.net/manual/en/security.php.
;;;;;;;;;;;;;;;;;;;
; About this file ;
;;;;;;;;;;;;;;;;;;;
; This file controls many aspects of PHP's behavior. In order for PHP
to
; read it, it must be named 'php.ini'. PHP looks for it in the
current
; working directory, in the path designated by the environment
variable
; PHPRC, and in the path that was defined in compile time (in that
order).
; Under Windows, the compile-time path is the Windows directory. The
; path in which the php.ini file is looked for can be overridden using
; the -c argument in command line mode.
;
; The syntax of the file is extremely simple. Whitespace and Lines
; beginning with a semicolon are silently ignored (as you probably
guessed).
; Section headers (e.g. [Foo]) are also silently ignored, even though
; they might mean something in the future.

Figura 3 Trecho de exemplo do php.ini

Atravs de modificaes neste arquivo possvel alterar vrias opes no


comportamento do PHP. Todas as linhas iniciadas por ponto-e-vrgula so comentrios.

4. SINTAXE BSICA
Tags especiais indicam ao PHP onde esto os blocos de cdigo. A tag de
abertura formada por um sinal de menor que (<), um sinal de interrogao (?) e a
sigla php. A tag de fechamento formada por um ponto interrogao (?) e sinal de
maior que (>).
Ex:
<?php
...
?>

Exerccio: digite o cdigo da figura 2 e salve no diretrio raiz do servidor


Apache. Veja o resultado da pgina atravs de seu carregamento no browser.
O sinal de ponto-e-vrgula (;) indica o final de um comando (ver figura 2). A
prxima figura mostra outro exemplo.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$a = 10;
$b = 15;
$c = $a + $b;
echo "$a mais $b igual a $c";
?>
</body>
</html>

Figura 4 Exemplo de cdigo


Os comentrios de mais de uma linha no PHP so obtidos atravs de /* e */. Os
comentrios de apenas uma linha so obtidos atravs de //.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
/*
O cdigo abaixo soma duas variveis
e exibe o valor encontrado
*/
$a = 10;
$b = 15;
$c = $a + $b;
echo "$a mais $b igual a $c";

10

?>
</body>
</html>

Figura 5 Exemplo de cdigo com comentrios de mais de uma linha


Os comentrios no aparecem no browser.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$a = 10; //A varivel $a recebe o valor 10
$b = 15; //A varivel $b recebe o valor 15
//A varivel $c recebe o valor da soma
$c = $a + $b;
//O resultado obtido exibido
echo "$a mais $b igual a $c";
?>
</body>
</html>

Figura 6 - Exemplo de cdigo com comentrios de uma linha


Palavras-chave do PHP
and
break
case
class
continue
default

do
else
elseif
extends
false

for
foreach
function
global
if

include
list
new
not
or

require
return
static
switch
this

true
var
virtual
xor
while

5. VARIVEIS
Variveis armazenam valores. Pode-se referir a variveis para obter seu valor ou
para alterar seu contedo.
No PHP elas so representadas por um cifro ($) mais o nome da varivel. Os
nomes de variveis vlidos so iniciados por letras ou por um subscrito ( _ ). Existe
diferenciao entre nomes de variveis maisculas e minsculas.
Ex: $a, $_A, $_a
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$a = 10;
$A = 20;
echo "O valor de 'a' $a e o de 'A' $A";
?>

11

</body>
</html>

Figura 7 Exemplo de cdigo com variveis minscula e maiscula


Quando a varivel declarada dentro de uma funo, ela s estar disponvel
para o cdigo desta funo. O cdigo a seguir gera um erro devido a essa caracterstica.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
function soma($a)
{
$b = $a + 5;
}
soma(10);
echo "o valor de 'b' $b";
9
?>
</body>
</html>

Figura 8 Declarao de varivel dentro de funo


Para evitar este tipo de problema, deve-se definir a varivel como global. O
cdigo a seguir resolve o problema do cdigo anterior. Compare os resultados dos dois
scripts.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
function soma($a)
{
global $b;
$b = $a + 5;
}
soma(10);
echo "o valor de 'b' $b";
?>
</body>
</html>

Figura 9 Declarao de varivel global


6. TIPOS DE DADOS
O PHP suporta vrios tipos de dados:
Inteiro Nmeros inteiros (isto , nmeros sem ponto decimal)
Nmeros de dupla preciso Nmeros reais (isto , nmeros que contm um
ponto decimal)

12

String Texto entre aspas simples ( ) ou duplas ( )


Booleanos armazenam valores verdadeiros ou falsos, usados em testes de
condies
Array Grupo de elementos do mesmo tipo
Objeto Grupo de atributos e mtodos
Recurso Uma origem de dados externa
Nulo Nenhum valor
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$a = True;
if ($a)
{
echo "Verdadeiro";
}
else
{
echo "Falso";
}
?>
</body>
</html>

Figura 10 Cdigo com dados booleanos


Teste o cdigo anterior alterando o valor da varivel para False.
Pode-se armazenar valores inteiros, positivos ou negativos. Pode-se usar tambm
valores hexadecimais.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$a = 0x1A; //Coresponde ao decimal 26
$b = -16;
$c = $a + $b;
echo "a + b = $c";
?>
</body>
</html>

Figura 11 Cdigo com variveis hexadecimal e valor negativo


Os valores de ponto flutuante so representados atravs de ponto ( . ).
<html>
<head>
<title>Teste PHP</title>
</head>

13

<body>
<?php
$preco = 11.90;
$soma = $preco * 4;
echo "Quatro revistas W custam R$ $soma<br>";
?>
</body>
</html>

Figura 12 Cdigo com varivel de ponto flutuante


As strings so armazenadas dentro de aspas duplas ( ) ou simples ( ).
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$texto1 = 'Esse o primeiro texto.<br>';
$texto2 = "Esse o segundo texto.";
echo $texto1;
echo $texto2;
?>
</body>
</html>

Figura 13 Cdigo com strings entre aspas simples e duplas


As variveis do tipo matriz ou array permitem o armazenamento de diversos
elementos referenciados por uma mesma referncia. Maiores detalhes sero vistos na
seo 14.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$frutas = array(
1 => "Laranja",
2 => "Ma",
3 => "Uva");
echo "<li> $frutas[1]<br>";
echo "<li> $frutas[2]<br>";
echo "<li> $frutas[3]<br>";
?>
</body>
</html>

Figura 14 Cdigo com matriz


7. CONSTANTES
Constantes so identificadores para valores simples. O seu contedo no muda
durante a execuo do cdigo. Elas so criadas com a funo define e, por conveno,
so escritas com letras maisculas e no usam o cifro no incio.

14

<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
define("CONSTANTE", "Al mundo.");
echo CONSTANTE;
?>
</body>
</html>

Figura 15 Cdigo com constante


O PHP implementa algumas constantes, a maioria so matemticas. O cdigo
seguinte demonstra o uso da constante

M_PI.

O comando

return

tem a capacidade de

retornar valores de funes.


<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
function calculaAreaCirculo($meuRaio)
{
return M_PI * pow($meuRaio, 2); //pi*r2
}
$meuRaio = 5;
$area = calculaAreaCirculo($meuRaio);
echo "<b>Raio</b> = $meuRaio<br>";
echo "<b>rea</b> = $area";
?>
</body>
</html>

Figura 16 Cdigo com a constante M_PI


<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
function texto($tex){
return "<h4>" . $tex . "</h4>";
}
print texto("Ol Mundo");
?>
</body>
</html>

Figura 17 Funo return Ol Mundo


8. FUNES
Uma funo um bloco de cdigo reutilizvel que executado devido a um
evento ou pela chamada de outra funo. Deve-se usar a declarao function para criar

15

uma funo. Os parmetros usados pela funo so declarados entre parnteses. Os


comandos a serem executados pela funo devem estar entre chaves (figura 32). A
declarao return retorna um valor quando a funo chamada. Esta declarao no
necessria se a funo no retorna nenhum valor.
Para se chamar uma funo, deve-se escrever seu nome e indicar os parmetros
entre parnteses.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
function soma($valor1, $valor2)
{
$resultado = $valor1 + $valor2;
return ($resultado);
}
$x = soma(7, 8);
echo($x);
?>
</body>
</html>

Figura 18 Exemplo de uma funo


<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
function escreveTexto()
{
echo("J sei criar funes!");
}
escreveTexto();
?>
</body>
</html>

Figura 19 Segundo exemplo de declarao de funo

9. EXPRESSES
Tudo que tem um valor pode ser considerado uma expresso. O cdigo a seguir
demonstra na prtica.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php

16

$b = ($a = 5);
echo "O valor de 'b' $b";
?>
</body>
</html>

Figura 20 Cdigo com uso de expresso


<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$b = $a = 5;
echo "O valor de 'b' $b";
?>
</body>
</html>

Figura 21 Variao do cdigo anterior


Expresses de comparao retornam valores booleanos, sendo

vazio

representando falso e um representando verdadeiro. As expresses de comparao so


usadas em declaraes condicionais para determinar se um bloco de cdigo ser
executado ou no.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$valor = (5 < 10);
echo "O valor da expresso '5 < 10' $valor";
?>
</body>
</html>

Figura 22 Cdigo com expresso de comparao


10. OPERADORES
So usados para efetuarem operaes sobre as variveis e constantes. Os
operadores do PHP so:
+ soma
- subtrao
* multiplicao
/ diviso
% mdulo, resto da diviso
++ acrescenta um a uma varivel
-- subtrai um de uma varivel

17

+= soma um valor a uma varivel e lhe atribui o resultado


<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$x = 2;
echo($x + 2);
echo "<br>";
$x = 2;
echo(5 - $x);
echo "<br>";
$x = 4;
echo($x * 5);
echo "<br>";
$x = 15;
echo($x / 5);
echo "<br>";
$x = 10;
echo($x % 8);
echo "<br>";
$x = 5;
$x++;
echo($x);
echo "<br>";
$x = 5;
$x--;
echo($x);
echo "<br>";
$x = 8;
echo($x);
echo "<br>";
$x = 8;
$x = $x + 10;
echo($x);
echo "<br>";
$x = 8;
$x += 10;
echo($x);
?>
</body>
</html>

Figura 23 Cdigo com diversas operaes matemticas


H tambm os operadores de comparao. Uma comparao sempre gera um
dos dois valores possveis: vazio, que corresponde a falso, e 1, que corresponde a
verdadeiro.
= = igual a
! = no igual a
> maior que
< menor que
>= maior ou igual a

18

<= menor ou igual a


<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$x = 5;
$resultado = ($x == 8);
if($resultado == 1)
{
echo "verdadeiro";
}
else
{
echo "falso";
}
echo "<br>";
$x = 5;
$resultado = ($x != 8);
if($resultado == 1)
{
echo "verdadeiro";
}
else
{
echo "falso";
}
echo "<br>";
$x = 5;
$resultado = ($x > 8);
if($resultado == 1)
{
echo "verdadeiro";
}
else
{
echo "falso";
}
echo "<br>";
$x = 5;
$resultado = ($x < 8);
if($resultado == 1)
{
echo "verdadeiro";
}
else
{
echo "falso";
}
echo "<br>";
$x = 5;
$resultado = ($x >= 8);
if($resultado == 1)
{
echo "verdadeiro";
}
else
{
echo "falso";

19

}
echo "<br>";
$x = 5;
$resultado = ($x <= 8);
if($resultado == 1)
{
echo "verdadeiro";
}
else
{
echo "falso";
}
?>
</body>
</html>

Figura 24 Cdigo com operadores de comparao


OPERADORES LGICOS
and ou && - operador lgico e, apenas retornando verdadeiro quando as duas
condies envolvidas no teste forem verdadeiras
or ou | | operador lgico ou, retornando verdadeiro quando uma ou as duas
condies envolvidas no teste forem verdadeiras
! operador lgico no, invertendo o resultado de um teste
xor operador lgico ou exclusivo que determina se uma de duas condies
verdadeira mas no ambas. Se ambas forem verdadeiras, o teste final ser falso.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$x = 6;
$y = 3;
$resultado = ($x < 10 && $y > 1);
if($resultado == 1)
{
echo "verdadeiro";
}
else
{
echo "falso";
}
echo "<br>";
$x = 6;
$y = 3;
$resultado = ($x == 5 || $y == 5);
if($resultado == 1)
{
echo "verdadeiro";
}
else
{
echo "falso";

20

}
echo "<br>";
$x = 6;
$y = 3;
$resultado = (!($x == $y));
if($resultado == 1)
{
echo "verdadeiro";
}
else
{
echo "falso";
}
echo "<br>";
$x = 6;
$y = 3;
$resultado = ($x == 6 xor $y == 2);
if($resultado == 1)
{
echo "verdadeiro";
}
else
{
echo "falso";
}
?>
</body>
</html>

Figura 25 Cdigo com operadores lgicos


11. ESTRUTURAS DE CONTROLE
No PHP, as estruturas de controle so formadas por declaraes condicionais e
de looping:
if executa uma ao se uma condio for atendida. O bloco de comandos a ser
executado deve ser escrito entre chaves;
else pode-se colocar um conjunto de comandos alternativos caso o teste do if
seja negativo. A declarao else deve vir logo aps o bloco de cdigo relacionado ao if
(ver figura 26). O comando if tambm pode ser usado aps a declarao else (figura 27).
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$x = 20;
if ($x > 10)
{
echo("O valor da varivel maior que 10.");
}
?>
</body>
</html>

Figura 26 Cdigo com declarao condicional if verdadeiro

21

<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$x = 5;
if ($x > 10)
{
echo("O valor da varivel maior que 10.");
}
?>
</body>
</html>

Figura 27 Cdigo com declarao condicional if falso


<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$x = 5;
if ($x > 10)
{
echo("O valor da varivel maior que 10.");
}
else
{
echo("O valor da varivel menor que 10.");
}
?>
</body>
</html>

Figura 28 Cdigo com declarao condicional if e else


<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$cor = "branco";
if ($cor == "vermelho")
{
echo("A varivel contm o valor 'vermelho'.");
}
else if ($cor == "azul")
{
echo("A varivel contm o valor 'azul'.");
}
else if ($cor == "amarelo")
{
echo("A varivel contm o valor 'amarelo'.");
}
else
{
echo("O valor da varivel no foi identificado.");
}

22

?>
</body>
</html>

Figura 29 Cdigo com declarao condicional if e else if


switch / case forma de testar uma dentre vrias possibilidades. A declarao
default executa caso nenhuma das opes seja verdadeira (figura 29). A declarao
break faz com que o restante do cdigo no seja executado caso o teste seja verdadeiro.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$d = getdate();
switch ($d['wday'])
{
case 5:
echo(Sexta-feira);
break;
case 6:
echo(Sbado);
break;
case 0:
echo(Domingo);
break;
case 2:
echo(Tera-feira);
break;
default;
echo(Estou aguardando o final de semana);
}
?>
</body>
</html>

Figura 30 Cdigo com declarao condicional switch e case


for estrutura de looping que executa um bloco de cdigo quantas vezes for
indicado em uma varivel. Deve-se definir a varivel que ser testada no looping, uma
condio de teste e o incremento (ou decremento) da varivel de controle.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
for ($i = 1; $i < 10; $i++)
{
echo("Linha $i <br>");
}
?>
</body>
</html>

Figura 31 Cdigo com looping definido pelo comando if

23

while estrutura de looping que no necessita de um nmero determinado de


iteraes. Ele executado enquanto uma condio for verdadeira.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$i = 1;
while ($i < 10000)
{
echo($i);
$i *= 2;
echo(" vezes 2 igual a $i <br>");
}
?>
</body>
</html>

Figura 32 Cdigo com declarao condicional while


do-while outra forma de looping que executa um bloco de cdigo, testa uma
condio e repete novamente o bloco de cdigo (ou no).
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$i = 1;
do
{
echo ("Linha $i <br>");
$i++;
}
while ($i < 10)
?>
</body>
</html>

Figura 33 - Cdigo com declarao condicional do-while

12. FORMULRIOS
Muito importante consultar a URL: http://penta.ufrgs.br/edu/forms/tut1.html
para acompanhamento do contedo de formulrios com exerccios fornecidos pelo autor
do site.
Os valores enviados atravs de um formulrio podem ser recuperados pela
varivel predefinida $_POST. Atravs dela possvel obter os dados que foram
enviados atravs do mtodo POST do HTML, bastando indicar o nome do campo do
formulrio. No comando action do formulrio, deve-se indicar a pgina PHP que ir

24

receber os valores. O mesmo documento pode conter o cdigo e o formulrio (figura


34).
<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
if (isset($_POST["pnome"]) && isset($_POST["snome"]))
{
$pnome = $_POST["pnome"];
$snome = $_POST["snome"];
echo "Ol $pnome $snome.<p>";
}
else
{
echo "Digite o seu nome.<p>";
}
?>
<form method="post" action="teste.php">
Primeiro Nome: <input type="text" name="pnome">
<br>
Sobrenome: <input type="text" name="snome">
<br><br>
<input type="submit" value="Enviar">
</form>
</body>
</html>

Figura 34 Cdigo com formulrio enviando dados atravs do mtodo POST


Se for usado o mtodo GET, os dados podem ser visualizados na URL do
browser. Para recuperar estes dados, deve-se usar a varivel pr-definida $_GET.
Executar os cdigos das figuras 34 e 35 e analisar o comportamento do browser.
<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
if (isset($_GET["pnome"]) && isset($_GET["snome"]))
{
$pnome = $_GET["pnome"];
$snome = $_GET["snome"];
echo "Ol $pnome $snome.<p>";
}
else
{
echo "Digite o seu nome.<p>";
}
?>
<form method="get" action="teste.php">
Primeiro Nome: <input type="text" name="pnome">
<br>
Sobrenome: <input type="text" name="snome">
<br><br>
<input type="submit" value="Enviar">

25

</form>
</body>
</html>

Figura 35 Cdigo com formulrio enviando dados atravs do mtodo GET

MANIPULANDO DADOS DE FORMULRIOS COM PHP


Uma das dvidas mais freqentes entre programadores PHP iniciantes como
manipular os dados de formulrio enviados para os scripts PHP, principalmente dados
de "checkbox" e upload de arquivos. Primeiro vamos ver como receber e manipular
dados de campos comuns de formulrios.
Para facilitar, o assunto est divido nos seguintes tpicos:
1 - Introduo
2 - Campos Hidden
3 - Campos Text e Textarea
4 - Campos Radio
5 - Campos Checkbox
6 - Campos Select

INTRODUO
Um formulrio HTML apenas um "rosto bonito" para onde os usurios
podero inserir informaes que sero interpretados de alguma maneira por algum script
do lado do servidor. E no nosso caso, esse script um script PHP.
Primeiro: antes para poder enviar as informaes, seu formulrio deve conter um
boto "submit", isso se consegue atravs do comando:
<input type=submit value="Texto do Boto">

Segundo: todos os campos que sero tratados no script PHP devem conter o
parmetro "NAME", caso contrrio, os dados no sero passados para o script PHP. Ex:
<input type=text name=nome_do_campo>

Como as informaes do formulrio so passadas para esse script PHP e como


as informaes do formulrio enviado so tratadas, dependem de voc.

26

Existem dois mtodos como as informaes podem ser passadas: GET e POST.
O recomendvel, sempre para todos os formulrios, usar o mtodo POST, onde os
dados enviados no so visveis nas URLs, ocultando possveis importantes
informaes e permitindo o envio de longas informaes. O GET totalmente o
contrrio disso.
Como as informaes chegam para o script PHP?
Assuma o seguinte formulrio:
<form action="script.php" method="post">
Campo 1: <input type=text name=campo1><br>
Campo 2: <input type=text name=campo2><br>
<input type=submit value="OK">
</form>

Esse formulrio usa o mtodo POST para envio das informaes, ento em
"script.php":
<?php
echo "O valor de CAMPO 1 : " . $_POST["campo1"];
echo "<br>O valor de CAMPO 2 : " . $_POST["campo2"];
?>

CAMPOS HIDDEN
Os campos hidden so usados para passar informaes que no podem ser
alteradas pelo usurio que estar inserindo informaes no formulrio. Por exemplo:
voc tem um site com sistema de login e o usurio quer alterar as informaes de login
dele. O script que ir manipular esse formulrio precisa saber o ID do usurio para
poder alterar as informaes no banco de dados, ento esse ID um campo hidden.
Cdigos Exemplos:
hidden.html
<form action="hidden.php" method="post">
<input type=hidden name=escondido value="valor do escondido">
<input type=hidden name=id value="111">
<input type=submit>
</form>

hidden.php
<?php
echo "Campo Hidden: " . $_POST["escondido"];
echo "<br>Oi, seu ID : " . $_POST["id"];
?>

CAMPOS TEXT E TEXTAREA

27

Os campos text e textarea so os tipos mais simples, onde h somente um


possvel valor por campo. Cdigos Exemplos:
texts.html
<form action="texts.php" method="post">
Nome: <input type=text name=nome><br>
Email: <input type=text name=email><br><br>
Mensagem: <textarea name=mensagem cols=8 rows=3></textarea><br>
<input type=submit>
</form>

texts.php
<?php
echo "Ol " . $_POST["nome"] . " (email:
")<br><br>";
echo "Sua mensagem: " . $_POST["mensagem"];
?>

"

$_POST["email"]

CAMPOS RADIO
Campos Radio permitem um relacionamento de um para muitos entre
identificador e valor, ou seja, eles tm mltiplos possveis valores, mas somente um
pode ser pr-exibido ou selecionado. Por exemplo: voc tem um sistema de "quiz".
Cada pergunta possui cinco possveis respostas. Cada resposta um radio, onde os
cinco radios dessa pergunta possuem o mesmo identificador, mas cada com valores
diferentes. Cdigos Exemplos:
radio.html
<form action="radio.php" method="post">
<B>Qual seu sistema operacional?</B><br>
<input type=radio name=sistema value="Windows Seven"> Win 7
<input type=radio name=sistema value="Windows XP"> Win XP
<input type=radio name=sistema value="Linux"> Linux
<input type=radio name=sistema value="Mac"> Mac
<br><br>
<B>Qual a marca de seu monitor?</B><br>
<input type=radio name=monitor value="Samsung"> Samsung
<input type=radio name=monitor value="LG"> LG
<input type=radio name=monitor value="Desconhecido"> Desconhecido
<br><br>
<input type=submit>
</form>

radio.php
<?php
echo "Seu sistema operacional : " . $_POST["sistema"];
echo "<br>Seu monitor : " . $_POST["monitor"];
?>

CAMPOS CHECKBOX

28

O tipo Checkbox tem somente um possvel valor por entrada: on value


(marcado) ou no value (desmarcado). No script voc deve fazer a verificao para saber
se o campo foi marcado ou no.
possvel tambm utilizar grupos de checkbox com o mesmo nome. Para isso
voc deve adicionar "[]" no final do nome, para o PHP interpretar como array, veja o
cdigo exemplo. Cdigos Exemplos:
checkbox.html
<form action="checkbox.php" method="post">
<B>Escolha os numeros de sua preferncia:</B><br>
<input type=checkbox name="numeros[]" value=10> 10<br>
<input type=checkbox name="numeros[]" value=100> 100<br>
<input type=checkbox name="numeros[]" value=1000> 1000<br>
<input type=checkbox name="numeros[]" value=10000> 10000<br>
<input type=checkbox name="numeros[]" value=90> 90<br>
<input type=checkbox name="numeros[]" value=50> 50<br>
<input type=checkbox name="numeros[]" value=30> 30<br>
<input type=checkbox name="numeros[]" value=15> 15<br><BR>
<input type=checkbox name="news" value=1> <B>Receber
Newsletter?</B><br><BR>
<input type=submit>
</form>

checkbox.php
<?php
// Verifica se usurio escolheu algum nmero
if(isset($_POST["numeros"]))
{
echo "Os nmeros de sua preferncia so:<BR>";
// Faz loop pelo array dos numeros
foreach($_POST["numeros"] as $numero)
{
echo "- " . $numero . "<BR>";
}
}
else
{
echo "Voc no escolheu nmero preferido!<br>";
}
// Verifica se usurio quer receber newsletter
if(isset($_POST["news"]))
{
echo "Voc deseja receber as novidades por email!";
}
else
{
echo "Voc no quer receber novidades por email...";
}
?>

CAMPOS SELECT

29

Os campos select permitem tratar uma variedade de opes, onde o usurio pode
selecionar apenas uma opo ou mltiplas opes. Quando voc permite mltiplas
selees, deve adicionar "[]" no final do nome, para o PHP interpretar como array.
Nos exemplos, pode ser visto o funcionamento e tratamento. Cdigos exemplos:
select.html
<form action="select.php" method="post">
<B>Qual seu processador?</B><br>
<select name=processador>
<option value=Pentium>Pentium</option>
<option value=AMD>AMD</option>
<option value=Celeron>Celeron</option>
</select><BR><BR>
<B>Livros que deseja comprar?</B><br>
Obs: segure "CTRL" para selecionar mais de um.<BR>
<select name="livros[]" multiple>
<option value="Biblia do PHP 4">Biblia do PHP 4</option>
<option value="PHP Professional">PHP Professional</option>
<option value="Iniciando em PHP">Iniciando em PHP</option>
<option value="Novidades do PHP 5">Novidades do PHP 5</option>
<option value="Biblia do MySQL">Biblia do MySQL</option>
</select><BR><BR>
<input type=submit>
</form>

select.php
<?php
echo "Seu processador : " . $_POST["processador"] . "<BR>";
// Verifica se usurio escolheu algum livro
if(isset($_POST["livros"]))
{
echo "O(s) livro(s) que voc deseja comprar:<br>";
// Faz loop para os livros
foreach($_POST["livros"] as $livro)
{
echo "- " . $livro . "<br>";
}
}
else
{
echo "Voc no escolheu nenhum livro!";
}
?>

13. CLASSES E OBJETOS


Uma classe uma coleo de atributos e mtodos. O cdigo a seguir define uma
classe chamada CarrinhoDeCompras, que uma matriz associativa com os artigos do
carrinho e duas funes: uma para adicionar e outra para remover os itens.

30

Classes so tipos, isto , rascunhos para a criao de objetos. Deve-se utilizar


o operador new para criar uma varivel do tipo CarrinhoDeCompras.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
class CarrinhoDeCompras
{
var $items; // Items no carrinho de compras
// Adiciona $num artigos do $artnr ao carrinho
function adiciona_item ($artnr, $num)
{
$this->items[$artnr] = $num;
}
// Retira $num artigos do $artnr do carrinho
function remove_item ($artnr, $num)
{
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
?>
</body>
</html>

Figura 36 Cdigo de definio de uma classe


<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
class CarrinhoDeCompras
{
var $itens; // Itens no carrinho de compras
// Adiciona $num artigos do $artnr ao carrinho
function adiciona_item ($artnr, $num)
{
$this->itens[$artnr] = $num;
}
// Retira $num artigos do $artnr do carrinho
function remove_item ($artnr, $num)
{
if ($this->itens[$artnr] > $num) {
$this->itens[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
$carrinho = new CarrinhoDeCompras;
$carrinho->adiciona_item("Banana", 12);

31

?>
</body>
</html>

Figura 37 Definio de classe e instanciao de um objeto do tipo


CarrinhoDeCompras
14. REFERNCIAS
Referncias, em PHP, significa acessar o mesmo contedo de varivel atravs de
vrios nomes. Isto no parecido como os ponteiros em C: aqui temos apelidos numa
tabela simblica. Note que no PHP nomes de variveis e contedo de varivel so
tratados diferentemente, ento um mesmo contedo pode ter nomes diferentes. A
analogia mais prxima a dos arquivos e seus nomes em sistemas UNIX: nomes de
variveis so o caminho completo dos arquivos, enquanto o contedo da varivel so os
dados desse arquivo. Assim, referncias podem ser tomadas como os links fsicos
dentro do sistema de arquivos UNIX.
No PHP, se podem acessar valores de variveis atravs de diferentes nomes.
Pode-se usar o sinal de igual seguido do sinal de e comercial (&).
Referncias PHP permitem fazer duas variveis se referirem ao mesmo
contedo. Ou seja:
<?php
$a =& $b
?>

aqui $a e $b apontam para a mesma varivel.


Nota:

$a

$b

so completamente iguais aqui, mas no porque

$a

est apontando

para $b ou vice versa, mas sim que $a e $b apontam para o mesmo lugar.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$a =& $b;
$b = 100;
echo $a;
?>
</body>
</html>

Figura 38 Cdigo de exemplo de atribuio de valor a duas variveis (a e b)


O comando unset remove uma referncia previamente declarada, mas ela
mantm o ltimo valor recebido.
<html>
<head>

32

<title>Teste PHP</title>
</head>
<body>
<?php
$a =& $b;
$b = 100;
unset($b);
$b = 200;
echo $a;
?>
</body>
</html>

Figura 39 Cdigo de remoo de uma referncia


15. MATRIZES
Matrizes so variveis que armazenam mais de um valor simultaneamente. Uma
matriz no PHP atualmente um mapa ordenado. Um mapa um tipo que relaciona
valores para chaves. Este tipo otimizado de vrias maneiras, ento voc pode us-lo
como um array real, ou uma lista (vetor), hashtable (que uma implementao de
mapa), dicionrio, coleo, pilha, fila, etc.
As referncias aos elementos da matriz podem ser declaradas como valores
numricos ou strings (figura 40).
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$funcionarios = array(0 => "Jos",
1 => "Joo",
2 => "Maria",
3 => "Pedro",
4 => "Carla");
echo "<b>Funcionrios</b>";
echo "<ul>";
echo "<li>" . $funcionarios[0];
echo "<li>" . $funcionarios[1];
echo "<li>" . $funcionarios[3];
echo "</ul><p>";
echo "<b>Funcionrias</b>";
echo "<ul>";
echo "<li>" . $funcionarios[2];
echo "<li>" . $funcionarios[4];
echo "</ul>";
?>
</body>
</html>

Figura 40 Cdigo com declarao de matriz


<html>
<head>
<title>Teste PHP</title>

33

</head>
<body>
<?php
$siglas = array("SP" => "So Paulo",
"RJ" => "Rio de Janeiro",
"MG" => "Minas Gerais");
echo $siglas["SP"];
?>
</body>
</html>

Figura 41 Cdigo com declarao de matriz e referncia atravs de string


16. INCLUSO DE ARQUIVOS
O comando

include

permite a incluso de outros arquivos php dentro do script

que est sendo executado. Pode-se criar uma funo que imprime a data atual e pode-se
reus-lo sem precisar reescrever o cdigo cada vez que for necessrio. No exemplo a
seguir, pode-se chamar o primeiro script de cabecalho.php e o prximo script o inclui
atravs do comando include.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$meses = array(1 => "Janeiro",
2 => "Fevereiro",
3 => "Maro",
4 => "Abril",
5 => "Maio",
6 => "Junho",
7 => "Julho",
8 => "Agosto",
9 => "Setembro",
10 => "Outubro",
11 => "Novembro",
12 => "Dezembro");
$hoje = getdate();
$dia = $hoje["mday"];
$mes = $hoje["mon"];
$nomeMes = $meses[$mes];
$ano = $hoje["year"];
echo "Ol. Hoje dia $dia de $nomeMes de $ano."
?>
</body>
</html>

Figura 42 Script que salvo com o nome de cabecalho.php


<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
include("cabecalho.php");

34

?>
</body>
</html>

Figura 43 Cdigo com incluso de arquivo externo chamado cabecalho.php


17. COOKIES
Cookies so formas de armazenar informaes a respeito de uma sesso dentro
do disco rgido do usurio cliente. O comando setcookie armazena um cookie com as
informaes que se desejam recuperar em seguida. Quando no for declarado um tempo
de vida, o cookie se auto-destri quando a sesso encerrada (quando o browser for
fechado).
<?php
if (isset($HTTP_POST_VARS['usuario'])) {
$user = $HTTP_POST_VARS['usuario'];
setcookie("usuario", $user);
$mensagem = "Usurio $user conectado.<p>";
}
else
{
$mensagem = "Digite o seu nome de usurio<p>";
}
?>
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?
echo $mensagem;
?>
<form method="post" action="teste.php">
Nome de Usurio: <input type="text" name="usuario">
<br>
<input type="submit" value="Enviar">
</form>
</body>
</html>

Figura 44 Cdigo que cria um cookie com o nome do usurio


<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
$user = $_COOKIE["usuario"];
echo "O usurio $user est conectado.";
?>
</body>
</html>

Figura 45 Cdigo que recupera os dados do cookie criado anteriormente

35

O cdigo a seguir demonstra o uso de um cookie com tempo de vida definido


em 3600 segundos, isto , uma hora. Aps uma hora decorrida de sua criao, ele
removido.
<?php
if (isset($_POST['usuario'])) {
$user = $_POST['usuario'];
setcookie("usuario", $user, time() + 3600); // Expira em uma hora
$mensagem = "Usurio $user conectado.<p>";
}
else
{
$mensagem = "Digite o seu nome de usurio<p>";
}
?>
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?
echo $mensagem;
?>
<form method="post" action="teste.php">
Nome de Usurio: <input type="text" name="usuario">
<br>
<input type="submit" value="Enviar">
</form>
</body>
</html>

Figura 46 Cdigo que cria um cookie com o nome do usurio que dura uma hora

18. PARMETROS
O uso de parmetros facilita a programao porque permite a passagem de dados
entre o browser e o script ou entre scripts. A passagem de parmetros entre o browser e
o script feita dentro da URL, por exemplo, e manipulada pela funo $_GET.
Nesse exemplo, a seguir, cada um dos links envia um valor diferente para a
pgina que aberta (teste.php). Para enviar um parmetro, a sintaxe inclui um sinal de
interrogao, o nome da varivel, um sinal de igual e o valor da varivel.
<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
if (isset($_GET["valor"]))
{
$valor = $_GET["valor"];
echo "Voc clicou no link $valor <p>";
}

36

else
{
echo "Clique em um dos links abaixo:<p>";
}
?>
<a href="teste.php?valor=1">link 1</a><br>
<a href="teste.php?valor=2">link 2</a><br>
<a href="teste.php?valor=3">link 3</a><br>
<a href="teste.php?valor=4">link 4</a><br>
<a href="teste.php?valor=5">link 5</a><br>
</body>
</html>

Figura 47 Cdigo com passagem de parmetro


Caso exista necessidade de se passar mais de um parmetro, deve-se separ-los
atravs de e comercial (&), conforme figura 48.
<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
if (isset($_GET["nome"]) && isset($_GET["sobrenome"])) {
$nome = $_GET["nome"];
$sobrenome = $_GET["sobrenome"];
echo "O nome selecionado foi $nome $sobrenome<p>";
}
else
{
echo "Selecione um nome<p>";
}
?>
<a href="teste.php?nome=Pedro&sobrenome=Silva">Pedro Silva</a><br>
<a href="teste.php?nome=Maria&sobrenome=Santos">Maria Santos</a><br>
</body>
</html>

Figura 48 Cdigo com passagem de mais de um parmetro


19. UPLOADS
O PHP permite que sejam enviados arquivos para o servidor. Deve-se modificar
o arquivo de configurao (php.ini):
file_uploads = On
upload_tmp_dir ="C:\Arquivos de programas\EasyPHP\tmp\"
upload_max_filesize = 2M

Para o prximo exemplo, o diretrio de upload deve ser trocado para C:\temp.
necessrio reiniciar o servidor a cada modificao em algum arquivo de configurao.
Todas as informaes sobre o arquivo enviado ficam armazenadas na varivel
$_FILES. O comando que trata o envio do arquivo

move_uploaded_file.

exemplo, a seguir, o usurio envia um arquivo de no mximo 30 Kb.


<html>

No

37

<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
if (isset($_FILES['arquivo']['name'])){
$uploaddir = 'c:\\temp\\';
$arquivo = $uploaddir. $_FILES['arquivo']['name'];
if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $arquivo)) {
print "O arquivo foi gravado com sucesso.";
}
else
{
print "Erro. O arquivo no foi enviado.";
}
}
?>
<form enctype="multipart/form-data" action="teste.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
Enviar este arquivo: <input name="arquivo" type="file">
<input type="submit" value="Envia Arquivo">
</form>
</body>
</html>

Figura 49 Cdigo com upload de arquivo e armazenamento na pasta C:\temp


20. ENVIO DE E-MAILS
O PHP permite que se enviem e-mails de forma automatizada. Para isso, deve-se
ajustar o arquivo de configurao (php.ini) para se indicar o servidor SMTP:
[mail function]
SMTP
=
sendmail_from
=
;sendmail_path =
arguments as well

localhost ;for win32 only


me@localhost.com ;for win32 only
;for unix only, may supply
(default is 'sendmail -t -i')

A opo SMTP indica o endereo ou nmero IP do servidor SMTP. A opo


sendmail_from indica o endereo do remetente da mensagem. necessrio reiniciar o
servidor a cada modificao em algum arquivo de configurao. O prximo exemplo
envia uma mensagem para o destinatrio.
<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
$destinatario = "cristiano@urcamp.tche.br";
$assunto = "Como enviar e-mais via PHP";
$mensagem = "
<h2>Envio de e-mails via PHP</h2>
<p>Depois que o servidor est configurado, muito simples enviar emails
com o PHP, usando apenas a funo mail(). Voc deve indicar como
parmetros o destinatrio, o assunto, e a mensagem. Para enviar

38

cabealhos adicionais, como informaes sobre o formato da mensagem,


h
um quarto parmetro.</p>
";
$cabecalho = "
MIME-Version: 1.0\r\n
Content-type: text/html; charset=iso-8859-1\r\n";
mail($destinatario, $assunto, $mensagem, $cabecalho);
echo "e-mail enviado com sucesso";
?>
</body>
</html>

Figura 50 Cdigo com envio de e-mail


PHP E MYSQL
21. INTRODUO AO MYSQL
O MySQL o gerenciador de banco de dados mais usado com o PHP. Existem
muitas funes pr-definidas para manipulao de conexes com bancos de dados.
A funo mysql_connect tenta uma conexo com um servidor MySQL. Deve-se
passar como parmetros: o nome do servidor (ou nmero IP) onde o MySQL est sendo
executado, o nome de usurio e a senha deste usurio. O comando alternativo die trata
um possvel fracasso na conexo.
A funo mysql_selectdb seleciona qual base ser selecionada dentro do banco
de dados que foi conectado. O comando alternativo die trata um possvel fracasso na
seleo da base, podendo ser includa uma mensagem customizada.
A funo mysql_query faz consultas base previamente selecionada. Deve-se
passar, como parmetros, os comandos SQL apropriados. Novamente, o comando
alternativo die pode tratar um no sucesso na consulta.
<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
$link = mysql_connect("127.0.0.1", "root", "")
or die("No foi possvel conectar");
mysql_select_db("teste")
or die("No foi possvel selecionar o banco de dados");
$consulta = "SELECT * FROM Clientes";
$resultado = mysql_query($consulta)
or die("Falha na execuo da consulta");
echo "Consulta executada com sucesso";
?>
</body>
</html>

39

Figura 51 Cdigo com conexo a um banco de dados MySQL, seleo de uma


base teste e consulta todos os registros da tabela Clientes
22. EXIBIO
Para que os registros da consulta sejam exibidos, deve-se usar a funo
mysql_fetch_assoc, que retorna uma matriz com a linha atual e move para a prxima.
Para se imprimir todos os resultados de uma query, necessria a construo de uma
estrutura de repetio (while) at que a funo mysql_fetch_assoc no retorne nenhum
valor (vazio).
Para melhorar a apresentao dos resultados, possvel usar tags HTML que
incluam os dados dentro de tabelas, por exemplo.
<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
$link = mysql_connect("127.0.0.1", "root", "")
or die("No foi possvel conectar");
mysql_select_db("teste")
or die("No foi possvel selecionar o banco de dados");
$consulta = "SELECT * FROM Clientes";
$resultado = mysql_query($consulta)
or die("Falha na execuo da consulta");
$linha = mysql_fetch_assoc($resultado);
$NomeDaEmpresa = $linha["NomeDaEmpresa"];
$NomeDoContato = $linha["NomeDoContato"];
echo "<b>Nome da empresa:</b> $NomeDaEmpresa<br>";
echo "<b>Nome do contato:</b> $NomeDoContato";
?>
</body>
</html>

Figura 52 Cdigo com impresso de um registro a partir de uma consulta


<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
$link = mysql_connect("127.0.0.1", "root", "")
or die("No foi possvel conectar");
mysql_select_db("teste")
or die("No foi possvel selecionar o banco de dados");
$consulta = "SELECT * FROM Clientes";
$resultado = mysql_query($consulta)
or die("Falha na execuo da consulta");
while ($linha = mysql_fetch_assoc($resultado))
{
$NomeDaEmpresa = $linha["NomeDaEmpresa"];
$NomeDoContato = $linha["NomeDoContato"];

40

echo "<b>Nome da empresa:</b> $NomeDaEmpresa<br>";


echo "<b>Nome do contato:</b> $NomeDoContato<p>";
}
?>
</body>
</html>

Figura 53 Cdigo com impresso de todos registros a partir de uma consulta


23. CONSULTA E ORDENAO
Pode-se fazer consultas atendendo a certos critrios, que vo fazer com que a
consulta seja refinada. No prximo exemplo, desejamos selecionar apenas os clientes de
So Paulo. Nesse caso, a clusula que deve ser alterada a que faz a consulta SQL.
<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
$link = mysql_connect("127.0.0.1", "root", "")
or die("No foi possvel conectar");
mysql_select_db("teste")
or die("No foi possvel selecionar o banco de dados");
$consulta = "SELECT NomeDaEmpresa, NomeDoContato
FROM Clientes
WHERE Cidade = 'So Paulo'";
$resultado = mysql_query($consulta)
or die("Falha na execuo da consulta");
while ($linha = mysql_fetch_assoc($resultado))
{
$NomeDaEmpresa = $linha["NomeDaEmpresa"];
$NomeDoContato = $linha["NomeDoContato"];
echo "<b>Nome da empresa:</b> $NomeDaEmpresa<br>";
echo "<b>Nome do contato:</b> $NomeDoContato<p>";
}
?>
</body>
</html>

Figura 54 Cdigo com impresso de determinados registros que satisfazem uma


condio (select ... from ... where ...)
No caso de ordenao, a clusula order by deve ser anexada query SQL.
<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
$link = mysql_connect("127.0.0.1", "root", "")
or die("No foi possvel conectar");
mysql_select_db("teste")
or die("No foi possvel selecionar o banco de dados");
$consulta = "SELECT NomeDaEmpresa, NomeDoContato
FROM Clientes
WHERE Cidade = 'So Paulo'

41

ORDER BY NomeDoContato";
$resultado = mysql_query($consulta)
or die("Falha na execuo da consulta");
while ($linha = mysql_fetch_assoc($resultado))
{
$NomeDaEmpresa = $linha["NomeDaEmpresa"];
$NomeDoContato = $linha["NomeDoContato"];
echo "<b>Nome da empresa:</b> $NomeDaEmpresa<br>";
echo "<b>Nome do contato:</b> $NomeDoContato<p>";
}
?>
</body>
</html>

Figura 55 Cdigo com impresso de determinados registros que satisfazem uma


condio, ordenados por um dos atributos (select ... from ... where ... order by ...)
24. INCLUSO E ATUALIZAO
Para se incluir dados em uma tabela MySQL, deve-se usar o comando INSERT.
No exemplo a seguir, a incluso de dados esttica. Para se criar um aplicativo que
permita incluso, seria necessrio adaptar o script para receber dados via formulrio e
inclu-los no banco de dados.
<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
$link = mysql_connect("127.0.0.1", "root", "")
or die("No foi possvel conectar");
mysql_select_db("teste")
or die("No foi possvel selecionar o banco de dados");
$CodigoDoCliente = "EELTD";
$NomeDaEmpresa = "Editora Europa";
$NomeDoContato = "Rodolfo Melo";
$Cidade = "So Paulo";
$consulta = "INSERT INTO Clientes
(CdigoDoCliente, NomeDaEmpresa, NomeDoContato, Cidade)
VALUES
('$CodigoDoCliente', '$NomeDaEmpresa', '$NomeDoContato',
'$Cidade')";
$resultado = mysql_query($consulta)
or die("Falha na execuo da consulta");
echo "Dados adicionados com sucesso";
?>
</body>
</html>

Figura 56 Cdigo com incluso de um registro em uma tabela do banco de dados


O comando UPDATE altera um registro de uma tabela. No exemplo a seguir, o
registro cujo cdigo EELTD passa a ter o nome Robinson Melgar.
<html>
<head>

42

<title>Pgina PHP</title>
</head>
<body>
<?php
$link = mysql_connect("127.0.0.1", "root", "")
or die("No foi possvel conectar");
mysql_select_db("teste")
or die("No foi possvel selecionar o banco de dados");
$CodigoDoCliente = "EELTD";
$NomeDoContato = "Robinson Melgar";
$consulta = "UPDATE Clientes
SET NomeDoContato = '$NomeDoContato'
WHERE CdigoDoCliente = '$CodigoDoCliente'";
$resultado = mysql_query($consulta)
or die("Falha na execuo da consulta");
echo "Dados alterados com sucesso";
?>
</body>
</html>

Figura 57 Cdigo com alterao de dados via comando update


25. EXCLUSO
O comando SQL DELETE remove um registro de uma tabela. A clusula
WHERE delimita a condio para que a remoo seja executada.
<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
$link = mysql_connect("127.0.0.1", "root", "")
or die("No foi possvel conectar");
mysql_select_db("teste")
or die("No foi possvel selecionar o banco de dados");
$CodigoDoCliente = "EELTD";
$consulta = "DELETE FROM Clientes
WHERE CdigoDoCliente = '$CodigoDoCliente'";
$resultado = mysql_query($consulta)
or die("Falha na execuo da consulta");
echo "Registro excludo com sucesso";
?>
</body>
</html>

Figura 58 Cdigo com remoo de registros

43

26. REFERNCIAS
BAKKEN,

S.

S.

et

al.

PHP

Manual.

Disponvel

<http://br.php.net/get/php_manual_pt_BR.chm/from/this/mirror>.

em:
Acesso

em: 21 out. 2003.


EDITORA Europa. Curso de PHP. www.com.br, So Paulo, n. 40, set. 2003.
CD-ROM.

Vous aimerez peut-être aussi