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 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 4 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 PHP-GTK, 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: 5
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.ini- recommended 6 ; 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 2 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 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.
<?php $a = 10; $b = 15; 7 $c = $a + $b; echo "$a mais $b igual a $c"; ?>
</body> </html> Figura 3 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 //.
<?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 5 - Exemplo de cdigo com comentrios de uma linha
8 Palavras-chave do PHP and do for include require true break else foreach list return var case elseif function new static virtual class extends global not switch xor continue false if or this while default
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
<?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.
</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.
</body> </html> Figura 8 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) 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
</body> </html> Figura 9 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.
$texto1 = 'Esse o primeiro texto.<br>'; $texto2 = "Esse o segundo texto.";
echo $texto1; echo $texto2;
?>
</body> </html> Figura 12 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.
</body> </html> Figura 13 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.
</body> </html> Figura 14 Cdigo com constante O PHP implementa algumas constantes, a maioria so matemticas. O cdigo seguinte demonstra o uso da constante M_PI.
</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 Expresses de comparao retornam valores booleanos, sendo vazio representando verdadeiro e um representando falso. As expresses de comparao so usadas em declaraes condicionais para determinar se um bloco de cdigo ser executado ou no.
$valor = (5 < 10); echo "O valor da expresso '5 > 10' $valor";
14 ?>
</body> </html> Figura 18 Cdigo com expresso de comparao 9 Operadores
So usados para efetuarem operaes sobre as variveis e constantes. Os operadores do PHP so: + soma - subtrao * multiplicao / diviso ^ exponenciao % mdulo, resto da diviso ++ acrescenta um a uma varivel -- subtrai um de uma varivel += soma um valor a uma varivel e lhe atribui o resultado
</body> </html> Figura 19 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 <= menor ou igual a
</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
</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).
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."); } ?>
</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.
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"); } ?> 21
</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.
</body> </html> Figura 27 Cdigo com looping definido pelo comando if while estrutura de looping que no necessita de um nmero determinado de iteraes. Ele executado enquanto uma condio for verdadeira.
while ($i < 10000) { echo($i); $i *= 2; echo(" vezes 2 igual a $i <br>"); }
?>
</body> </html> Figura 28 Cdigo com declarao condicional while 22 do-while outra forma de looping que executa um bloco de cdigo, testa uma condio e repete novamente o bloco de cdigo (ou no).
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.
<?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.
$carrinho = new CarrinhoDeCompras; $carrinho->adiciona_item("Banana", 12); ?>
</body> </html> 25 Figura 33 Definio de classe e instanciao de um objeto do tipo CarrinhoDeCompras 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 ?> aqui $a e $b apontam para a mesma varivel. Nota: $a e $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 34 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.
</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).
</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.
</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).
</body> </html> Figura 41 Cdigo que recupera os dados do cookie criado anteriormente 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'])) {
30 $user = $_POST['usuario'];
setcookie("usuario", $user, time() + 3600); // Expira em uma hora
<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.
</body> </html> Figura 43 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 44.
</body> </html> Figura 44 Cdigo com passagem de mais de um parmetro 18 Formulrios
Os valores enviados atravs de um formulrio podem ser recuperados pela varivel pr- definida $_POST. Atravs dela possvel obter os dados que foram enviados atravs do 32 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 receber os valores. O mesmo documento pode conter o cdigo e o formulrio (figura 45).
</body> </html> Figura 45 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 45 e 46 e analisar o comportamento do browser.
</body> </html> Figura 46 Cdigo com formulrio enviando dados atravs do mtodo GET
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.
if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $arquivo)) { print "O arquivo foi gravado com sucesso."; 34 } else { print "Erro. O arquivo no foi enviado."; } } ?>
</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') 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.
<?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 e-mails com o PHP, usando apenas a funo mail(). Voc deve indicar como parmetros o destinatrio, o assunto, e a mensagem. Para enviar 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"; 35
</body> </html> Figura 48 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.
<?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 36 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.
echo "<b>Nome da empresa:</b> $NomeDaEmpresa<br>"; echo "<b>Nome do contato:</b> $NomeDoContato<p>"; }
?>
</body> </html> Figura 51 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.
echo "<b>Nome da empresa:</b> $NomeDaEmpresa<br>"; 38 echo "<b>Nome do contato:</b> $NomeDoContato<p>"; }
?>
</body> </html> Figura 52 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.
echo "<b>Nome da empresa:</b> $NomeDaEmpresa<br>"; echo "<b>Nome do contato:</b> $NomeDoContato<p>"; }
?>
</body> </html> Figura 53 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 39 incluso, seria necessrio adaptar o script para receber dados via formulrio e inclu-los no banco de dados.
$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 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.