Escolar Documentos
Profissional Documentos
Cultura Documentos
Sumrio
1
Introduo....................................................................................................................... 3
2
Exemplo de Script .......................................................................................................... 3
3
Configurao (php.ini) ................................................................................................... 5
4
Sintaxe Bsica ................................................................................................................ 6
5
Variveis......................................................................................................................... 8
6
Tipos de dados................................................................................................................ 9
7
Constantes..................................................................................................................... 12
8
Expresses .................................................................................................................... 13
9
Operadores.................................................................................................................... 14
10
Estruturas de Controle .............................................................................................. 18
11
Funes..................................................................................................................... 22
12
Classes e Objetos...................................................................................................... 23
13
Referncias ............................................................................................................... 24
14
Matrizes .................................................................................................................... 26
15
Incluso de Arquivos................................................................................................ 27
16
Cookies ..................................................................................................................... 28
17
Parmetros ................................................................................................................ 30
18
Formulrios............................................................................................................... 31
19
Uploads..................................................................................................................... 33
20
Envio de e-mails ....................................................................................................... 34
21
Introduo ao MySQL.............................................................................................. 35
22
Exibio.................................................................................................................... 35
23
Consulta e Ordenao............................................................................................... 37
24
Incluso e Atualizao.............................................................................................. 38
25
Excluso ................................................................................................................... 40
Referncias ........................................................................................................................... 40
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 MPS PHP
Designer em http://www.mpsoftware.dk).
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. 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.
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php echo "<p>Al Mundo</p>"; ?>
</body>
</html>
Figura 1 Primeiro script
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:
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:
4
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)
; and http://php.net/manual/en/security.php.
;;;;;;;;;;;;;;;;;;;
; About this file ;
;;;;;;;;;;;;;;;;;;;
; This file controls many aspects of PHP's behavior.
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 2 Trecho de exemplo do php.ini
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 1 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 1). 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 3 Exemplo de cdigo
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
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";
?>
</body>
</html>
Figura 6 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";
?>
</body>
</html>
Figura 7 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 8 Declarao de varivel global
Tipos de dados
<?php
$a = True;
if ($a)
{
echo "Verdadeiro";
}
else
{
echo "Falso";
}
?>
</body>
</html>
Figura 9 Cdigo com dados booleanos
10
$soma = $preco * 4;
echo "Quatro revistas W custam R$ $soma<br>";
?>
</body>
</html>
Figura 11 Cdigo com varivel de ponto flutuante
11
</body>
</html>
Figura 13 Cdigo com matriz
Constantes
12
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
$b = ($a = 5);
echo "O valor de 'b' $b";
?>
</body>
</html>
Figura 16 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 17 Variao do cdigo anterior
13
?>
</body>
</html>
Figura 18 Cdigo com expresso de comparao
Operadores
14
echo "<br>";
$x = 8;
$x = $x + 10;
echo($x);
echo "<br>";
$x = 8;
$x += 10;
echo($x);
?>
</body>
</html>
Figura 19 Cdigo com diversas operaes matemticas
15
{
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)
{
16
echo "verdadeiro";
}
else
{
echo "falso";
}
?>
</body>
</html>
Figura 20 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";
}
17
else
{
echo "falso";
}
echo "<br>";
$x = 6;
$y = 3;
$resultado = (!($x == $y));
if($resultado == 1)
{
echo "verdadeiro";
}
else
{
echo "falso";
}
?>
</body>
</html>
Figura 21 Cdigo com operadores lgicos
10 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 24). O comando if tambm pode ser usado aps a declarao else (figura 25).
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$x = 20;
if ($x > 10)
{
echo("O valor da varivel maior que 10.");
}
18
?>
</body>
</html>
Figura 22 Cdigo com declarao condicional if verdadeiro
<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 23 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 24 Cdigo com declarao condicional if e else
<html>
<head>
<title>Teste PHP</title>
</head>
19
<body>
<?php
$cor = "branco";
if ($cor == "vermelho")
{
echo("A varivel contm o
}
else if ($cor == "azul")
{
echo("A varivel contm o
}
else if ($cor == "amarelo")
{
echo("A varivel contm o
}
else
{
echo("O valor da varivel
}
?>
valor 'vermelho'.");
valor 'azul'.");
valor 'amarelo'.");
no foi identificado.");
</body>
</html>
Figura 25 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 for verdadeira (figura 26). 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("Finalmente Sexta");
break;
case 6:
echo("Super Sbado");
break;
case 0:
echo("Domingo Sonolento");
break;
default:
echo("Estou esperando pelo fim da semana");
}
?>
20
</body>
</html>
Figura 26 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 27 Cdigo com looping definido pelo comando if
21
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 29 - Cdigo com declarao condicional do-while
11 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 uma funo.
Os parmetros usados pela funo so declarados entre parnteses. Os comandos a serem
executados pela funo devem estar entre chaves (figura 30). 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);
22
echo($x);
?>
</body>
</html>
Figura 30 Exemplo de uma funo
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
function escreveTexto()
{
echo("J sei criar funes!");
}
escreveTexto();
?>
</body>
</html>
Figura 31 Segundo exemplo de declarao de funo
12 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.
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;
}
23
24
13 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 pode ser tomadas como os links fsicos dentro do sistema de
arquivos UNIX.
No PHP, pode-se 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
?>
O comando unset remove uma referncia previamente declarada, mas ela mantm o
ltimo valor recebido.
<html>
<head>
25
<title>Teste PHP</title>
</head>
<body>
<?php
$a =& $b;
$b = 100;
unset($b);
$b = 200;
echo $a;
?>
</body>
</html>
Figura 35 Cdigo de remoo de uma referncia
14 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 37).
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$funcionarios = array(0
1
2
3
4
echo
echo
echo
echo
echo
echo
echo
=>
=>
=>
=>
=>
"Jos",
"Joo",
"Maria",
"Pedro",
"Carla");
"<b>Funcionrios</b>";
"<ul>";
"<li>" . $funcionarios[0];
"<li>" . $funcionarios[1];
"<li>" . $funcionarios[3];
"</ul><p>";
"<b>Funcionrias</b>";
26
echo
echo
echo
echo
"<ul>";
"<li>" . $funcionarios[2];
"<li>" . $funcionarios[4];
"</ul>";
?>
</body>
</html>
Figura 36 Cdigo com declarao de matriz
<html>
<head>
<title>Teste PHP</title>
</head>
<body>
<?php
$siglas = array("SP" => "So Paulo",
"RJ" => "Rio de Janeiro",
"MG" => "Minas Gerais");
echo $siglas["SP"];
?>
</body>
</html>
Figura 37 Cdigo com declarao de matriz e referncia atravs de string
15 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
2
3
=> "Janeiro",
=> "Fevereiro",
=> "Maro",
27
4
5
6
7
8
9
10
11
12
=>
=>
=>
=>
=>
=>
=>
=>
=>
"Abril",
"Maio",
"Junho",
"Julho",
"Agosto",
"Setembro",
"Outubro",
"Novembro",
"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 38 Script que salvo com o nome de cabecalho.php
<html>
<head>
<title>Pgina PHP</title>
</head>
<body>
<?php
include("cabecalho.php");
?>
</body>
</html>
Figura 39 Cdigo com incluso de arquivo externo chamado cabecalho.php
16 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>";
28
}
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 40 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 41 Cdigo que recupera os dados do cookie criado anteriormente
29
$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 42 Cdigo que cria um cookie com o nome do usurio que dura uma hora
17 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"]))
30
{
$valor = $_GET["valor"];
echo "Voc clicou no link $valor <p>";
}
else
{
echo "Clique em um dos links abaixo:<p>";
}
?>
<a
<a
<a
<a
<a
href="teste.php?valor=1">link
href="teste.php?valor=2">link
href="teste.php?valor=3">link
href="teste.php?valor=4">link
href="teste.php?valor=5">link
1</a><br>
2</a><br>
3</a><br>
4</a><br>
5</a><br>
</body>
</html>
Figura 43 Cdigo com passagem de parmetro
18 Formulrios
Os valores enviados atravs de um formulrio podem ser recuperados pela varivel prdefinida $_POST. Atravs dela possvel obter os dados que foram enviados atravs do
31
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 45 e 46 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"];
32
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. No exemplo a
seguir, o usurio envia um arquivo de no mximo 30 Kb.
<html>
<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.";
33
}
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 47 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
=
localhost
;for win32 only
sendmail_from =
me@localhost.com ;for win32 only
;sendmail_path =
;for unix only, may supply
arguments as well (default is 'sendmail -t -i')
34
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>
Figura 49 Cdigo com conexo a um banco de dados MySQL, seleo de uma base teste e consulta
todos os registros da tabela Clientes
35
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 50 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");
36
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>";
37
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
38
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 54 Cdigo com incluso de um registro em uma tabela do banco de dados
39
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 56 Cdigo com remoo de registros
40
Referncias
BAKKEN, S. S. et al. PHP Manual. Disponvel em: <http://br.php.net/get/php_
manual_pt_BR.chm/from/this/mirror>. Acesso em: 21 out. 2003.
EDITORA Europa. Curso de PHP. www.com.br, So Paulo, n. 40, set. 2003. CD-ROM.
41