Este documento propriedade intelectual 2002 do Centro de Computao da Unicamp
e distribudo sob os seguintes termos:
1. As apostilas publicadas pelo Centro de Computao da Unicamp podem ser reproduzidas e distribudas no todo ou em parte, em qualquer meio fsico ou eletrnico, desde que os termos desta licena sejam obedecidos, e que esta licena ou referncia a ela seja exibida na reproduo.
2. Qualquer publicao na forma impressa deve obrigatoriamente citar, nas pginas externas, sua origem e atribuies de direito autoral (o Centro de Computao da Unicamp e seu(s) autor(es)).
3. Todas as tradues e trabalhos derivados ou agregados incorporando qualquer informao contida neste documento devem ser regidas por estas mesmas normas de distribuio e direitos autorais. Ou seja, no permitido produzir um trabalho derivado desta obra e impor restries sua distribuio. O Centro de Computao da Unicamp deve obrigatoriamente ser notificado (treinamentos@ccuec.unicamp.br) de tais trabalhos com vista ao aperfeioamento e incorporao de melhorias aos originais.
Adicionalmente, devem ser observadas as seguintes restries: A verso modificada deve ser identificada como tal O responsvel pelas modificaes deve ser identificado e as modificaes datadas Reconhecimento da fonte original do documento A localizao do documento original deve ser citada Verses modificadas no contam com o endosso dos autores originais a menos que autorizao para tal seja fornecida por escrito.
A licena de uso e redistribuio deste material oferecida sem nenhuma garantia de qualquer tipo, expressa ou implcita, quanto a sua adequao a qualquer finalidade. O Centro de Computao da Unicamp no assume qualquer responsabilidade sobre o uso das informaes contidas neste material.
ndice
Introduo ........................................................................................................... 1 Comunicao Cliente x Servidor web ................................................................ 2 Ambiente CGI .................................................................................................... 5 Configurao ...................................................................................................... 6 Sintaxe bsica do PHP ...................................................................................... Variveis .................................................................................................. 8 Operadores ............................................................................................. 13 Estruturas de controle ............................................................................. 16 Projeto Criao da base de dados e tabelas ....................................................... 25 Criao da Home page do site ................................................................ 26 Mdulo de Incluso ................................................................................. 28 Mdulo de Consulta ................................................................................ 33 Mdulo de Excluso ................................................................................ 36 Mdulo de Alterao ............................................................................... 39 Mdulos Complementares Usando If, elseif e else ... 45 Como obter data e hora do sistema ....................................................... 46 Listar vrias ocorrncias de uma tabela ................................................. 47 Referncia bibliogrfica ..................................................................................... 49
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 4 ltima atualizao em 12/05/2003 Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 1 O que PHP?
A abreviao PHP vem de Hypertext PreProcessor, que uma linguagem de programao de cdigo aberto muito utilizada para a criao de scripts, que so executados no servidor web para a manipulao de pginas HTML. Apesar de ser mais utilizado em aplicativos para a web, o PHP tambm suporta programao na linha de comando e aplicaes grficas cliente para serem executadas em interfaces grficas com o PHP-GTK.
Histria
O PHP foi criado por volta de 1994 por Rasmus Lerdorf, que inicialmente o utilizava em sua home page pessoal (Personal Home Page). Em meados de 1995 ele passou a ser utilizado por outras pessoas e foi reescrito com novos recursos, sendo renomeado para Personal Home Page Tools/FI (Form Interpreter), e entre os novos recursos, passou a contar com suporte ao mSQL. Dois anos mais tarde o PHP deixou de ser um projeto pessoal de Rasmus Lerdorf e passou a ser desenvolvido por uma equipe de colaboradores, e neste perodo, foi lanada a verso 3 da linguagem. A partir da verso 4 o PHP passou a utilizar a engine de scripting da Zend, para melhorar a performance e suportar uma variedade maior de bibliotecas externas e extenses. At maro de 2002, o PHP estava sendo utilizado em 9.000.000 de domnios.
Vantagens
O PHP tem inmeras vantagens, como veremos a seguir:
uma linguagem de fcil aprendizado; Tem performance e estabilidade excelentes; Seu cdigo aberto, no preciso pagar por sua utilizao, e possvel alter-lo na medida da necessidade de cada usurio; Tem suporte nos principais servidores web do mercado, e suporte nativo no servidor web Apache (o mais utilizado no mundo); Suporta conexo com os bancos de dados mais utilizados do mercado, como por exemplo, MySQL, PostgreSQL, Oracle e DB2; multiplataforma, tem suporte nos sistemas operacionais mais utilizados no mercado; Suporta uma variedade grande de padres e protocolos, como o XML, DOM, IMAP, POP3, LDAP, HTTP, entre outros; No precisa ser compilado.
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 2 Comunicao cliente X servidor web
Quando digitado um endereo no navegador para acessar uma pgina na internet, o que acontece uma requisio (request) do cliente (navegador) ao servidor web. O servidor processa essa requisio e retorna uma resposta (response) ao cliente, que por sua vez interpreta o cdigo retornado e formata a pgina para a sua visualizao. Esse procedimento acontece em todas as requisies feitas pelo navegador.
TCP/IP e HTTP O procedimento anterior s possvel atravs dos protocolos TCP/IP e HTTP. O TCP/IP o protocolo bsico para a comunicao entre as mquinas conectadas internet, que gerencia toda a parte de transmisso e distribuio dos dados na rede. O HTTP (Hypertext Tranfer Protocol) o protocolo que gerencia e formaliza as requisies e as respostas trafegadas entre o cliente e o servidor web. Caso o servidor web encontre a pgina, ela ser enviada em partes ao navegador, caso contrrio, o servidor enviar uma mensagem de erro.
Formato das requisies e respostas HTTP
O formato das requisies e das respostas HTTP so idnticas, como mostramos a seguir:
Linha de requisio/resposta
Cabealho
Corpo
A diferena entre as duas o contedo de cada parte descrita, as quais vamos falar separadamente:
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 3
Formato da requisio HTTP
Linha de requisio : sempre a primeira linha da requisio, a qual precisa conter um comando HTTP vlido, o caminho da pgina requerida e a verso do protocolo HTTP:
Exemplo:
GET /artigos/artigos1.html HTTP/1.1
Os comandos HTTP mais usados so:
GET faz requisies especficas e sua funcionalidade limitada, porm o mtodo mais usado.
POST este mtodo mais abrangente que o GET, e usado para passar informaes para o servidor. Normalmente usado em formulrios, que enviam dados ao servidor para serem manipulados.
Cabealho: trecho composto por vrias linhas, que carregam informaes sobre o cliente, como por exemplo, o tipo e a verso do navegador, a data e as informaes gerais dos clientes. Seu contedo pode ser variado, contendo outros tipos de linhas, e para saber quando o cabealho termina e o corpo comea, utilizamos uma linha em branco. No mnimo, uma requisio deve conter uma linha de requisio e um cabealho HOST.
Exemplo:
Accept: */* Accept-Language: pt-br Connection: keep-alive Host: www.phpteste.com.br Referer: http://www.phpteste.com.br/index.php?id=1 User-Agent: Mozilla (X11; I ; Linux I686)
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 4
Corpo: Caso o mtodo GET seja usado na requisio, o corpo estar vazio, mas se o mtodo utilizado for o POST e a pgina em questo contiver um formulrio HTML com alguns campos, esses valores sero passados pelo corpo da requisio.
Formato da resposta HTTP
Linha de resposta : Apenas uma linha indicando a verso do HTTP e o cdigo de resposta do servidor:
Exemplo:
HTTP/1.1 200 OK
100-199
informativo, indica que a requisio est sendo processada
200-299
requisio bem-sucedida, o servidor enviar o cdigo HTML sem nenhum problema
300-399
redirecionamento
400-499
o cliente passou uma requisio incorreta ao servidor, no qual no pde ser executada
500-599
a requisio foi enviada corretamente, porm o servidor no pde execut-la por estar com problemas internos
Cabealho: Idem ao cabealho de requisio, porm este enviar as informaes sobre os aplicativos utilizados no servidor:
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 5 Exemplo:
Date: Mon, 11 st Feb. 2001, 08:02:43 GMT Server: Apache/1.3.22 (Unix) PHP/4.1.1 Last-modified: Fri, 08TH Feb 2001, 06:10:00 GMT
Corpo: Caso a requisio seja aceita e executada sem problemas pelo servidor web, o cdigo HTML requerido ser enviado ao navegador.
Ambiente CGI
Muitas pessoas tm uma viso distorcida sobre o Common Gateway Interface, pensam que uma linguagem de programao, o que no correto. CGI um interface de comunicao entre o servidor web e programas externos, que normalmente so utilizados para gerar contextos dinmicos em pginas HTML. Estes tipos de programas podem ser desenvolvidos em qualquer linguagem que o sistema operacional do servidor web usado possa executar, como por exemplo, C, Perl, Python, PHP, Delphi entre outros. Apesar de seu uso ainda ser muito utilizado, este recurso j est se tornando obsoleto, dando lugar aos mdulos embutidos nos servidores web, que na verdade, podem conter o interpretador inteiro da linguagem, ou somente parte dele. Linguagens como Perl, Python e PHP j suportam esse recurso, que tem como vantagem, a maior velocidade de processamento em relao aos programas CGI, por serem executados pelo prprio servidor web e no por processos externos, que demandam mais tempo.
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 6 Configurao
Usaremos como sistema operacional a distribuio do GNU/Linux Conectiva 7.0, e os pacotes necessrios para o andamento do curso j se encontram instalados. Os pacotes necesrios so:
Dividiremos em duas partes a configurao do PHP, a primeira referente a ligao entre o servidor web e a linguagem, e a segunda entre a linguagem e o banco de dados.
Servidor web e a linguagem PHP (Apache+mod_php4+PHP4) : Para que o servidor web Apache possa reconhecer as requisies para a execuo de scripts PHP, preciso que o mdulo mod_php4-4.1.1 esteja instalado e configurado no Apache.
Para efetuar esta configurao necessrio apenas descomentar algumas linhas no arquivo de configurao do servidor web Apache. Este arquivo se chama httpd.conf e se encontra em /etc/httpd/conf . No editor de texto, faa uma busca pelas linhas listadas abaixo e retire o caracter # no incio de cada linha encontrada:
Depois de finalizada a operao anterior necessrio reiniciar o servidor web Apache com os seguintes comandos:
$ cds $ ./httpd restart
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 7 Banco de dados e a linguagem PHP (PHP4+php4-mysql+MySQL) : Como na configurao anterior, o PHP necessita de um mdulo para conectar e executar instrues SQL no banco de dados MySQL. Para isso necessrio estar instalado o mdulo php4-mysql-4.1.1 e o banco de dados MySQL MySQL-3.23.36:
Para efetuar a configurao necessrio tirar o comentrio no arquivo de configurao php.ini , que se encontra em /etc/php4/apache , a seguinte linha:
extension=mysql.so
Teste de funcionamento
Depois de configurados os aplicativos necessrios para a execuo dos scripts PHP, precisaremos fazer um teste de funcionamento. No editor de textos, digite o cdigo a seguir e salve como teste.php em /home/httpd/html :
<?php
phpinfo();
?>
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 8 Sintaxe Bsica
O PHP tem uma sintaxe muito simples e enxuta, o que facilita muito a organizao dos scripts a serem desenvolvidos. Outro ponto interessante que veremos que os cdigos em PHP so embutidos no HTML, ao invs de ger-lo por completo, facilitando muito a anlise de possveis erros nos scripts desenvolvidos. A seguir, exemplos da sintaxe do PHP:
1 2 3 4
<?php ... ... .. ?>
<? .... .... .... ?>
<% .... .... .... %>
<script language=PHP> .... ..... ... </script>
Variveis
Manipular variveis em PHP uma atividade simples, como veremos a seguir:
no necessrio declarar as variveis, isto feito quando atribumos algum valor para elas;
para declar-las, necessrio apenas colocar como primeiro caracter o '$' , juntamente com a string referente ao nome da varivel, e esta string deve comear com uma letra ou o caracter '_';
PHP case sensitive, isto , '$a' diferente de '$A'. aconselhvel utilizar os nomes de variveis com letras minsculas, por causa das variveis pr-definidas da linguagem, que so declaradas com maisculas;
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 9 PHP suporta os seguintes tipos de variveis:
inteiros (integer ou long); ponto flutuante (double ou float); strings arrays objetos *
* Como se trata de um curso bsico, no entraremos em detalhes sobre este tipo
Tipos suportados
Inteiros
Sintaxe:
$curso = 1000; $curso = -1000; $curso = 0234; (inteiro base octal) $curso = 0x34; (inteiro na base hexadecimal)
Ponto flutuante
Sintaxe:
$curso = 1.050; $curso = 52e3; (equivale a 52000)
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 10 Strings
Sintaxe:
$curso = 'PHP';
# desta maneira, o valor da varivel ser exatamente o texto contido entre as aspas
$curso= PHP;
# desta maneira, qualquer varivel ou caracter de escape ser expandido antes de ser atribudo
Caracteres de Escape
\n nova linha; \r retorno de carro (semelhante a \n) \t tabulao horizontal \\ a prpria barra (\) \$ o smbolo $ \ aspas simples \ aspas duplas
Arrays : Array um tipo de varivel que possui seu contedo agrupado por ndices, como um vetor ou um dicionrio. Estes ndices podem ser de qualquer tipo suportado pelo PHP, como mostrado a seguir:
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 11
Listas : Utilizadas em PHP para realizar atribuies mltiplas, como por exemplo, atribuir valores de um array para variveis, como mostra a seguir:
Sintaxe:
list($a,$b,$c) = array(0=>a, 1=>b, 2=>c);
O trecho de cdigo acima atribuir simultnea e respectivamente os valores do array s variveis passadas como parmetros para o comando list. muito importante lembrar que s sero passadas ao comando list os elementos do array que possurem os ndices com valores inteiros e no negativos.
Booleans : Em PHP, no existe um tipo especfico para as variveis do tipo boolean, ele trata este tipo com valores inteiros: 0 para false e valores diferentes deste como true.
Transformaes de tipos
possvel fazer transformaes de tipos de variveis atravs das seguintes formas:
Coeres : quando ocorrem determinadas operaes matemticas entre dois valores de tipos diferentes, como por exemplo a adio, o PHP converte um deles automaticamente. Um exemplo disso seria a converso de uma string para um valor numrico (inteiro ou ponto flutuante), que segue as seguintes regras:
analisado o nicio da string, se contiver um nmero, ele ser analisado, caso contrrio, o valor ser 0 (zero);
O nmero pode conter o sinal no incio (+ ou -);
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 12 Se a string contiver um ponto em sua parte numrica a ser analisada, ele ser considerado, e o valor obtido ser um ponto flutuante;
Se a string contiver as letras ''e'' ou ''E'' em sua parte numrica a ser analisada, o valor seguinte ser considerado como expoente da base 10, e o valor obtido ser um ponto flutuante.
Transformaes explcitas de tipos : desta forma precisaremos utilizar a sintaxe de typecast do PHP, como os exemplos a seguir:
$curso = 20; (integer(20)) $curso = (double)$curso; (double(20.0)) $curso = 3.9; (double(3.9)) $curso = (int)$curso (o valor truncado e fica como integer(3))
Tipos suportados nas transformaes explcitas:
(int), (integer) = muda para inteiro; (real), (double), (float) = muda para ponto flutuante; (string) = muda para string (array) = muda para array (object) = muda para objeto
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 13 Funo settype : trabalha igualmente as tranformaes explcitas, porm com sintaxe diferente, como o exemplo a seguir:
$curso = 20; (integer) settype($curso, double);
# o valor da varivel $curso foi transformada em ponto flutuante
Operadores
Aritmticos:
+ Adio - Subtrao * Multiplicao / Diviso % Mdulo
Strings:
.
Concatenao
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 14 Atribuio:
= Atribuio simples += Atribuio com adio -= Atribuio com subtrao *= Atribuio com Multiplicao /= Atribuio com diviso %= Atribuio com mdulo .= Atribuio com concatenao
Exemplo:
$curso = 7; $curso += 2; ($curso fica com o valor 9)
Lgicos:
and e lgico or ou lgico xor ou exclusivo ! No (inverso) && e lgico || ou lgico
Comparao:
== igual a != diferente de < menor que > maior que <= menor ou igual a >= maior ou igual a
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 15 Incremento e decremento:
++ incremento -- decremento
Estes podem receber o valor antes ou depois da varivel:
Antes: retorna o valor da varivel antes de increment-la ou decrement-la:
Exemplo:
$a = 1; $b = ++a; ($b recebe 2, valor de $a j incrementado)
Depois: retorna o valor da varivel j incrementada ou decrementada:
Exemplo:
$a = 1; $b = a++; ($b recebe 1 e $a passa a ter 2)
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 16 Estruturas de controle
If : O comando if testa a condio passada e executa o bloco de cdigo caso o valor retornado da condio seja verdadeiro:
$a = 1;
if ($a == 1) { .... .... ... }
Caso a condio passada retorne um valor falso, e seja necessrio executar um bloco de cdigo diferente, utiliza-se a instruo else:
$a = 1; $b = 2;
if ($a > $b) { .... ... } else { ..... .... }
Ainda existe a instruo elseif, para situaes onde precisa-se verificar mais que uma condio:
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 17
$a = 1; $b = 2; $c = 3;
if ($a > $b) { echo a maior que b ; } elseif ($a > $c) { echo a maior que c ; } else { echo a menor que b e c ; }
Switch : Comando utilizado para fazer mltiplos testes de condio. A idia deste comando igual ao do elseif , porm com algumas diferenas:
$a = 2;
switch ($a) { case 0: echo a igual a 0 ; break; case 1: echo a igual a 1 ; break; case 2: echo a igual a 2 ; break; }
A idia do comando switch achar a condio verdadeira e executar qualquer bloco de cdigo que esteja abaixo dela, inclusive os que no forem do seu trecho, por esse motivo, utilizamos o comando break logo abaixo da ltima linha do bloco de cdigo, como o Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 18 exemplo anterior. O comando switch tambm aceita testes de condio em qualquer tipo de varivel suportado pelo PHP:
$a = curso;
switch ($a) { case PHP: echo a igual a PHP ; break; case curso: echo a igual a Curso ; break; case CCUEC: echo a igual a CCUEC ; break; }
While : Este comando utilizado para realizar laos condicionais. Ele executa o bloco de cdigo enquanto a condio passada for verdadeira, e caso a condio inicial que foi passada se torne falsa, o bloco no ser executado:
$a = 1;
while ($a <= 10) { echo Nmero.$a++.<br>; }
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 19
Do ... while : Este comando tem a mesma idia que o comando while, porm, seu teste de condio feito no final do bloco de cdigo:
$c = 0; do { echo Nmero.++$c. <br>; } while ($c < 10);
For : Como nos outros comando que realizam laos condicionais, o comando for tambm precisa de uma condio para ser testada a cada lao realizado, porm, este comando necessita de mais dois parmetros, que seriam a declarao da varivel contadora e a instruo de incremento:
for ($a=0; $a<=10; $a++) { echo Nmero.$a.<br>; }
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 20 Quebra de fluxo
Break : O comando break pode ser utilizado em comandos de laos condicionais e no comando switch, e sua funo parar imediatamente o fluxo do bloco de cdigo:
$a = 20;
while ($a < 0) { if ($a == 5) { echo Nmero invlido!; break; } echo Nmero .$a.<br>; $a--; }
Continue : O comando continue tambm funciona dentro dos laos condicionais, porm, no pra o fluxo do bloco de cdigo, e sim, volta para o incio dele:
for ($a=0;$a<10;$a++) { if ($a == 5) { continue; } else { echo Nmero .$a.<br>; } }
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 21 Funes
Funes so pequenas sees independentes de cdigo que podem ser chamadas a qualquer momento e em qualquer ordem, que servem para desempenhar tarefas especficas dentro dos scripts. O exemplo a seguir mostra a sua sintaxe bsica:
A instruo return opcional, j que no obrigatrio retornar algum valor em funes no PHP, outra regra a de no permitir que sejam retornados mltiplos valores atravs desta instruo. Para resolver essa necessidade, pode-se retornar listas e arrays, como mostra o exemplo a seguir:
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 22 Passagem de parmetros por referncia : Normalmente, a passagem de parmetros em PHP feita atravs dos valores das variveis, no permitindo assim, a alterao do valor na varivel original, como mostra o exemplo a seguir:
$cont = 10;
function contador ($a) { $a++; }
contador($cont); echo $cont;
No exemplo acima, a varivel original permanecer com o mesmo valor porque no foi definida a passagem de parmetros por referncia, o que alteraria tambm o valor da varivel original. Uma das maneiras de se utilizar esse recurso colocar o caracter ''&'' antes do nome da varivel na declarao da funo, como mostra o exemplo a seguir:
$cont = 10;
function contador(&$a) { $a++; }
contador($cont); echo $cont;
Poderamos tambm utilizar a passagem de parmetros por referncia apenas quando fossemos chamar a funo, e no em sua declarao:
contador(&$cont); echo $cont;
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 23 Escopo das variveis
Discutimos anteriormente sobre variveis e os tipos suportados pelo PHP. Agora, discutiremos sobre os escopos destas variveis, que podem ser dos seguintes tipos:
globais; locais; estticas; constantes.
Globais: As variveis globais so por definio, as variveis que podem ser acessadas dentro de todo o script. Porm, quando cria-se escopos locais como nas funes, precisaremos utilizar um tipo de chamada especial, como no exemplo a seguir:
$curso = 'PHP';
function mostra() { global $curso; echo $curso; }
mostra();
O mesmo recurso pode ser acessado atravs da array GLOBALS, que nos permite acessar todas as variveis globais do script. O exemplo acima pode ser reescrito da seguinte maneira:
$curso = 'PHP';
function mostra() { echo $GLOBALS[curso]; echo $curso; }
mostra();
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 24 Locais: As variveis locais so o tipo mais restrito dentro do PHP. Elas funcionam apenas dentro deste escopo, como mostra o exemplo a seguir:
$curso = 'PHP';
function mostra() { $var_local = 'varivel local'; echo $var_local; }
echo <b>$var_local</b>;
Estticas: As variveis estticas so variveis que possuem o mesmo tempo de vida das variveis globais, com a diferena de funcionarem apenas em escopos locais e serem inicializadas uma s vez. A seguir, um exemplo deste recurso:
function contador() { static $i = 0; echo $i++.<br>; }
for ($a=0; $a<=5; $a++) { contador(); }
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 25 Projeto
Desenvolveremos um site dinmico utilizando a linguagem PHP e o servidor de banco de dados MySQL. O objetivo desse site ser a localizao de funcionrios na Unicamp. Fazendo-se uma busca pelo nome do funcionrio, sero disponibilizadas informaes (unidade, telefone, fax, e-mail e cargo) que permitam localiz-lo na universidade. O site permitir incluso, consulta, alterao e excluso de dados. Todas as pginas e programas ficaro armazenados no diretrio diretrio de publicao/cursophp.
1 - Criao da base de dados e tabelas
Utilizando o servidor de banco de dados MySQL, o primeiro passo ser definir a base de dados e as tabelas em que guardaremos as informaes. Podemos criar nossa estrutura de dados diretamente no MySQL, da seguinte forma:
1. Abra uma janela de terminal 2. Digite o comando mysql u root p (ser solicitada a senha do administrador) 3. Crie uma base de dados no MySQL, que conter as tabelas a serem utilizadas no projeto. O comando create database unicamp; Em que unicamp o nome da base de dados. 4. Depois de criada, acesse a base de dados com o seguinte comando: use unicamp;
Agora j podemos pensar nas tabelas que sero necessrias para esse projeto. Para facilitar, vamos utilizar uma nica tabela, chamada funcionarios.
Dicas:
Tipos de campos:
varchar(N) : um campo caractere varivel de no mximo N caracteres;
integer : um inteiro padro;
char(N) : um campo caractere com exatamente N caracteres;
text : um campo com um comprimento mximo de 65535 caracteres;
date : uma data no formato AAAA-MM-DD.
Not null: significa que o campo no pode ser nulo.
Primary key: significa que campo chave.
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 26 Para criar essa tabela, utilizaremos a seguinte sintaxe:
create table funcionarios ( nome varchar(50) not null primary key, unidade varchar(40) not null, telefone varchar(10) not null, email varchar(40), cargo varchar(40) not null );
Dicas:
Para adicionar ou excluir campos da tabela, depois que ela foi criada:
Supondo que quisssemos excluir o campo cargo da tabela funcionarios: alter table funcionarios drop column cargo;
Supondo que quisssemos adicionar novamente o campo cargo na tabela funcionarios: alter table funcionarios add column cargo varchar(40) not null;
Para visualizar as bases de dados existentes: show databases;
Para visualizar as tabelas pertencentes a uma base de dados: use base de dados; show tables;
Para visualizar os campos de uma tabela: desc tabela;
Para visualizar todos os registros de uma tabela: select * from tabela;
2 - Criao da home page do site
A pgina principal (homepage) do site ser bastante simples e trar um menu com as opes de incluso, consulta, alterao e excluso. As opes tero links para seus respectivos mdulos. Essa pgina inicial ter a extenso html e ser criada utilizando-se um editor de pginas (Netscape Composer, etc).
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 27 Criar uma nova pgina, em branco. Definir as propriedades da pgina Centralizar o cursor Inserir a imagem topo.gif (que est em /cursophp) Digite os tens do menu (em negrito): Incluso de funcionrios, Consulta de funcionrios, Alterao dos dados de funcionrios e Excluso de funcionrios. Pule uma linha entre um item e outro. Transforme os tens do menu em links e direcione para seus respectivos endereos: inclusao.html consulta.html alteracao.html exclusao.html Salve a pgina como index.html e teste-a digitando o endereo http://localhost/cursophp/index.html
<center><img SRC="topo.gif" height=44 width=640> <p><b><a href="inclusao.html">Incluso de funcionrios</a></b> <p><b><a href="consulta.html">Consulta de funcionrios</a></b> <p><b><a href="alteracao.html">Alterao dos dados dos funcionrios</a></b> <p><b><a href="exclusao.html">Excluso de funcionrios</a></b></center>
</body> </html>
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 28 3 - Mdulo de Incluso
Vamos criar a pgina para o formulrio de incluso. Os recursos do Netscape Composer so muito limitados para a confeco de formulrios, sendo assim digitaremos o cdigo utilizando um editor de texto. Esse arquivo ter extenso html.
Aps digitar o cdigo, salve-o e teste-o. Quando o formulrio for submetido, dar um erro, alertando que o script "inclusao.php" (para o qual estamos encaminhando os dados) no existe. Precisamos, ento, cri-lo. Notem que a prxima pgina no ter mais a extenso html e sim php, pois o cdigo vai conter programao PHP. Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 29
Relembrando:
Quando o servidor recebe a requisio de uma pgina HTML, ele apenas envia a pgina requisitada. Por outro lado, quando a requisio de uma pgina com extenso PHP, o servidor processa o cdigo antes de envi-la. Pode-se combinar os cdigos HTML e PHP.
3.2) Script incluso.php
O script inclusao.php vai tratar os dados recebidos atravs do formulrio, incluindo-os no banco de dados.
Relembrando:
As tags que identificam o incio e o fim da programao PHP so: <?php
Variveis: as variveis devem ser precedidas pelo caractere $.
Dicas:
No cdigo referente ao script incluso.php, utilizaremos algumas funes do PHP:
Trim: tira espaos em branco de uma varivel.
Header: chama outro script, passando parmetros e no retorna ao script chamador. Obs: Nenhum comando de exibio (echo, include, tags html) pode ser usado antes dessa rotina. Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 30 A expresso or die pode ser usada como uma alternativa para o if/else.
O script inclusao.php vai tratar os dados recebidos atravs do formulrio, incluindo-os no banco de dados.
<?php
// Recebe variveis globais do formulrio global $nome; global $unidade; global $telefone; global $email; global $cargo;
// Tirar espao em branco das variveis recebidas atravs do formulrio $nome = trim($nome); $unidade = trim($unidade); $telefone = trim($telefone); $email = trim($email); $cargo = trim($cargo);
// Consiste as variveis recebidas if (empty($nome) || empty($unidade) || empty($telefone) || empty($cargo)) {
/* Comentar blocos de cdigo */
// se campos obrigatrios no preenchidos, recria o formulrio e exibe mensagem de erro echo (' <html> <head> <title>Inclusao.php</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body bgcolor="#FFFFFF" text="#000000" link="#333399" vlink="#CC0000" alink="#663399"> ');
// Cria uma conexo com o servidor MySQL passando host, username e senha $conec = mysql_connect ("localhost","usuario","senha") or die ("Falha na conexo com o banco de dados");
// Roda a query e trata o resultado $tipo_msg = 'I'; if (mysql_db_query ("unicamp", $declar, $conec)) { $ok = 1; header("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg"); } else { $ok = 2; header("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg"); // header("Location: exibe_mensagem.php?variavel1=$variavel1&variavel2=$variavel2"); }
// Fecha a conexo com o servidor MySQL (Opcional) mysql_close ($conec); } ?> </body> </html>
3.3) Criando o script que exibe mensagens: exibe_mensagem.php No devemos exibir as mensagens finais em um script que acessa banco de dados, pois, se o usurio clicar no boto atualizar do navegador, o script ser Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 32 processado novamente. Por isso, criaremos um script s para exibir as mensagens finais. Esse script foi chamado em incluso.php atravs da funo header.
if ($tipo_msg == 'I') { //se incluso OK if ($ok == 1) { echo ("<BR><BR>"); echo ("<center><b><font size = 4> Incluso Efetuada </font></b></center>"); echo ("<BR>"); echo ("<center><b> <a href=\"inclusao.html\">Voltar</a> </b></center>"); } // se deu erro na incluso if ($ok == 2) { echo ("<BR><BR>"); echo ("<center><b><font size = 4> Erro - Incluso no Efetuada </font></b></center>"); echo ("<BR>"); echo ("<center><b> <a href=\"inclusao.html\">Voltar</a> </b></center>"); } }
?>
</body> </html>
3.4) Testando o mdulo de incluso
Abra o navegador (Netscape) e digite o endereo do site: http://localhost/cursophp/index.html No menu da pgina principal, clique na opo incluso. Deixe os campos do formulrio em branco. Clique em enviar. Dever mostrar uma Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 33 mensagem de erro. O nico campo que no obrigatrio o e-mail. Preencha o formulrio com os dados do funcionrio: nome completo, unidade, telefone, e-mail e cargo. Clique em enviar. Dever mostrar a mensagem Incluso Efetuada. Volte para a pgina do formulrio e entre com outros dados, s que desta vez entre com um nome que j existe no banco de dados. Clique em enviar. Dever mostrar a mensagem Incluso no efetuada, pois o campo nome chave e no aceita valores duplicados. Insira pelo menos 5 funcionrios.
Aps digitar o cdigo, salve-o e teste-o. Quando o formulrio for submetido, dar um erro, alertando que o script "consulta.php" (para o qual estamos encaminhando os dados) no Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 34 existe. Precisamos, ento, cri-lo. Notem que essa pgina no ser mais html e sim php, pois o cdigo vai conter programao PHP.
4.2) Script consulta.php
O script consulta.php vai receber o dado do formulrio, pesquisar no banco de dados e mostrar as informaes referentes ao dado.
Dicas:
No cdigo referente ao programa consulta.php utilizaremos mais algumas funes do PHP:
File: l um arquivo, retornando o seu contedo como um array; cada linha do arquivo ser representada por um elemento do array. Implode: armazena todo o contedo de um array como uma string, concatena os contedos de cada elemento do array em uma string, utilizando ou no um delimitador entre eles. Str_replace: vai ler uma string e substituir um determinado valor por outro. No nosso caso, essa funo substituir a expresso <!mensagem>, contida no cdigo do consulta.html, por uma mensagem de erro. Portanto, no se esquea de colocar no html a expresso a ser substituda (como comentrio). mysql_num_rows: obtem o nmero de registros que retornou do select. mysql_fetch_row: obtem os campos do registro que retornou do select.
// Recebe varivel global do formulrio global $nome;
// Tirar espao em branco da varivel recebida atravs do formulrio $nome = trim($nome);
// Consiste Nome if (empty($nome)) {
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 35 $html = file("consulta.html"); $html = implode(" ",$html); $erro = "<center><font color=\"#FF0000\"> Preencha o campo <b>Nome</b> </font></center>"; $html = str_replace("<!mensagem>",$erro,$html); echo ($html); } else { echo ("<p><center><img src=\"topo.gif\" width=\"640\" height=\"44\"></center></p>");
// Cria uma conexo com o servidor MySQL // Parmetros: host, username, senha $conec = mysql_connect ("localhost","usuario","senha");
// Declarao do SQL $declar = "SELECT nome, unidade, telefone, email, cargo from funcionarios where nome = '$nome'";
// Roda a query e verifica se encontrou registro $query = mysql_db_query ('unicamp', $declar, $conec) or die ("Erro no acesso ao banco"); $achou = mysql_num_rows($query); // echo ($achou); // Se encontrou, guarda as variveis if ($achou > 0) { $row = mysql_fetch_row ($query); $nome = $row[0]; $unidade = $row[1]; $telefone = $row[2]; $email = $row[3]; $cargo = $row[4]; echo ("<BR>"); echo ("<table width=\"640\" border=\"0\" cellspacing=\"0\" align=\"center\"> <tr> <td>"); echo ("<b> Resultado da Consulta </b>"); echo ("<BR><BR>"); echo ("<b> Nome: </b> $nome <BR>"); echo ("<b> Unidade: </b> $unidade <BR>"); echo ("<b> Telefone: </b> $telefone <BR>"); echo ("<b> E-mail: </b> $email <BR>"); echo ("<b> Cargo: </b> $cargo <BR>"); echo ("</td> </tr> </table>"); echo ("<center> <b> <a href=\"consulta.html\">Voltar</a> </b> </center>"); } else { echo ("<BR>"); echo ("<center> <b> Funcionrio no cadastrado </b> </center>"); echo ("<BR>"); echo ("<center> <b> <a href=\"consulta.html\">Voltar</a> </b> </center>"); } } ?> </body> </html> Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 36
4.3) Testando o mdulo de consulta
Abra o navegador (Netscape) e digite o endereo do site: http://localhost/cursophp/index.html No menu da pgina principal, clique na opo consulta. Deixe o campo nome do funcionrio em branco e clique em enviar. Dever mostrar uma mensagem de erro. Preencha o formulrio com um nome de funcionrio inexistente e clique em enviar. Dever mostrar a mensagem Funcionrio no cadastrado. Preencha o formulrio com um nome de funcionrio vlido e clique em enviar. Dever mostrar os dados do funcionrio.
<body bgcolor="#FFFFFF"> <table width="640" border="0" cellspacing="0" align="center"> <tr valign="top"> <td> <p><img src="topo.gif" width="640" height="44"></p> <!mensagem> <p><b>Formulrio de excluso: <br> </b></p> <form method="get" action="exclusao.php"> <p>Nome Completo: <input type="text" name="nome" size="25" maxlength="50"> </p> <p> <input type="submit" name="Submit" value="Enviar"> </p> </form> <center> <b> <a href="index.html">Home</a> </b> </center> </td> </tr> <tr> <td> </td> </tr> </table> </body> </html> Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 37 Aps digitar o cdigo, salve-o e teste-o. Quando o formulrio for submetido, dar um erro, alertando que o script "exclusao.php" (para o qual estamos encaminhando os dados) no existe. Precisamos, ento, cri-lo. Notem que esta pgina no ser mais html e sim php, pois o cdigo vai conter programao PHP.
5.2) Script exclusao.php
O script exclusao.php vai receber o dado do formulrio, confirmar atravs de consulta ao banco de dados se o funcionrio est cadastrado, e excluir o registro.
<?php
// Recebe variveis globais do formulrio global $nome;
// Tirar espao em branco das variveis recebidas do formulrio $nome = trim($nome);
// Consiste Nome if (empty($nome)) { $html = file("exclusao.html"); $html = implode(" ",$html); $erro = "<center><font color=\"#FF0000\"> Preencha o campo <b>Nome</b></font></center>"; $html = str_replace("<!mensagem>",$erro,$html); echo ($html); } else { // Cria uma conexo com o servidor MySQL $conec = mysql_connect ("localhost","usuario","senha");
// Declarao do SQL $declar = "SELECT nome from funcionarios where nome = '$nome'";
// Roda a query, verifica se funcionrio cadastrado $query = mysql_db_query ('unicamp', $declar, $conec) or die ("Erro no acesso ao banco"); $achou = mysql_num_rows($query); //echo ($achou); // Se encontrou exclui, seno mostra mensagem $tipo_msg = 'E'; if ($achou > 0) { // Exclui registro na tabela funcionarios $declar2 = "DELETE from funcionarios where nome = '$nome'"; if (mysql_db_query ('unicamp', $declar2, $conec)) { $ok = 1; header("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg"); } else { $ok = 2; header("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg"); } } Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 38 else { $ok = 3; header("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg"); }
mysql_close ($conec); } ?> </body> </html>
5.3) Adicionando o cdigo referente as mensagens da excluso no script exibe_mensagem.php
Para exibir as mensagens finais da excluso vamos aproveitar o mesmo script utilizado na incluso. Abra o script exibe_mensagem.php e adicione o seguinte cdigo entre o bloco de cdigo referente a incluso e o comando que fecha a programao PHP (?> ):
if ($tipo_msg == 'E') { //se excluso OK if ($ok == 1) { echo ("<BR><BR>"); echo ("<center><b><font size = 4> Excluso Efetuada </font></b></center>"); echo ("<BR>"); echo ("<center><b> <a href=\"exclusao.html\">Voltar</a> </b></center>"); } // se deu erro na excluso if ($ok == 2) { echo ("<BR><BR>"); echo ("<center><b><font size = 4> Erro - Excluso no Efetuada </font></b></center>"); echo ("<BR>"); echo ("<center><b> <a href=\"exclusao.html\">Voltar</a> </b></center>"); } // se funcionrio no cadastrado if ($ok == 3) { echo ("<BR><BR>"); echo ("<center><b> Funcionrio no cadastrado </b></center>"); echo ("<BR><BR>"); echo ("<center><b> <a href=\"exclusao.html\">Voltar</a> </b></center>"); } }
5.4) Testando o mdulo de excluso
Abra o navegador (Netscape) e digite o endereo do site: http://localhost/cursophp/index.html No menu da pgina principal, clique em excluso. Deixe o campo nome do funcionrio em branco e clique em enviar. Dever mostrar uma Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 39 mensagem de erro. Preencha o formulrio com o nome completo do funcionrio e clique em enviar. Dever mostrar a mensagem Excluso efetuada. Preencha o formulrio com o nome do funcionrio que voc acabou de excluir e clique em enviar. Dever mostrar a mensagem Funcionrio no cadastrado.
Aps digitar o cdigo, salve-o e teste-o. Quando o formulrio for submetido, dar um erro, alertando que o script "alteracao.php" (para o qual estamos encaminhando os dados) no existe. Precisamos, ento, cri-lo. Notem que esta pgina no ser mais html e sim php, pois o cdigo vai conter programao PHP.
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 40 6.2) Script alteracao.php
O script alteracao.php vai receber o dado do formulrio, recuperar as informaes do banco de dados e mostr-las num formulrio para que elas sejam alteradas. Para montar o formulrio, criaremos uma funo php.
<?php
include ("funcoes.php");
// Recebe variveis globais do formulrio global $nome;
// Tirar espao em branco das variveis recebidas do formulrio $nome = trim($nome);
// Consiste Nome if (empty($nome)) { $html = file("alteracao.html"); $html = implode(" ",$html); $erro = "<center><font color=\"#FF0000\"> Preencha o campo <b>Nome</b></font></center>"; $html = str_replace("<!mensagem>",$erro,$html); echo ($html); } else {
// Cria uma conexo com o servidor MySQL // Parmetros: host, username, senha $conec = mysql_connect ("localhost","usuario","senha");
// Declarao do SQL $declar = "SELECT nome, unidade, telefone, email, cargo from funcionarios where nome = '$nome'";
// Roda a query e verifica se encontrou registro $query = mysql_db_query ('unicamp', $declar, $conec) or die ("Erro no acesso ao banco"); $achou = mysql_num_rows($query); // echo ($achou);
monta_pagina($nome,$unidade,$telefone,$email,$cargo,$script_chamador); } else { echo (' <html> Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 41 <head> <title>Inclusao.php</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body bgcolor="#FFFFFF" text="#000000" link="#333399" vlink="#CC0000" alink="#663399"> '); echo ("<p><center><img src=\"topo.gif\" width=\"640\" height=\"44\"></center></p>"); echo ("<BR><BR>"); echo ("<center> <b> Funcionrio no cadastrado </b> </center>"); echo ("<BR>"); echo ("<center> <b> <a href=\"alteracao.html\">Voltar</a> </b> </center>"); } } ?>
</body> </html>
Notem que, no cdigo que acabamos de digitar, estamos chamando a funo monta_pagina, passando como parmetros as variveis nome, unidade, telefone, email e cargo. As funes so teis porque podem ser reutilizadas em vrios programas, alm disso, o tamanho do cdigo do programa chamador diminui consideravelmente. Podemos criar um nico script (exemplo: funcoes.php) que conter todas as funes. Um detalhe importante que no podemos esquecer que precisamos incluir esse programa de funes em nosso programa chamador. No cdigo visto anteriormente temos o comando include ("funcoes.php") logo no incio do cdigo php.
6.3) Script funcoes.php
O script funcoes.php pode armazenar todas as funes que sero utilizadas no site. Neste curso usaremos apenas a funo monta_pagina. Essa funo serve para montar o formulrio j preenchido, com as informaes que foram passadas como parmetros no programa anterior. Observao: essa funo tambm chamada pelo script alteracao2.php, e com algumas alteraes, poderia ser usada para recriar o formulrio do mdulo de incluso.
<?php function monta_pagina($nome,$unidade,$telefone,$email,$cargo,$script_chamador) {
// Recebe variveis globais global $nome; global $unidade; global $telefone; global $email; global $cargo; global $script_chamador;
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 42 // Tirar espao em branco das variveis recebidas atravs do formulrio $nome = trim($nome); $unidade = trim($unidade); $telefone = trim($telefone); $email = trim($email); $cargo = trim($cargo); $script_chamador = trim($script_chamador);
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 43 Notem que o formulrio criado pela funo monta_pagina chama o programa alteracao2.php. Isso porque, para completarmos o mdulo de alterao precisamos de mais um script que pegue as informaes que foram alteradas e as inclua no banco de dados. Observao: como o campo nome no passado para o script alteracao2.php, por no se tratar de uma varivel do formulrio, temos que pass-lo como um campo escondido input type="hidden".
6.4) Script alteracao2.php
O script alteracao2.php vai pegar as informaes alteradas, consist-las e fazer um update no banco de dados.
<?php
// Recebe variveis globais do formulrio global $nome; global $unidade; global $telefone; global $email; global $cargo;
// Tirar espao em branco das variveis recebidas do formulrio $nome = trim($nome); $unidade = trim($unidade); $telefone = trim($telefone); $email = trim($email); $cargo = trim($cargo);
if (empty($nome) || empty($unidade) || empty($telefone) || empty($cargo)) { include ("funcoes.php"); $script_chamador = 'A2'; monta_pagina($nome, $unidade, $telefone, $email, $cargo, $script_chamador); } else { // Cria uma conexo com o servidor MySQL $conec = mysql_connect ("localhost","usuario","senha") or die ("Falha na conexo com o banco de dados");
$declar = "UPDATE funcionarios SET unidade='$unidade', telefone='$telefone', email='$email', cargo='$cargo' WHERE nome='$nome'";
// Roda a query e trata o resultado $tipo_msg = 'A'; if (mysql_db_query ("unicamp", $declar, $conec)) { $ok = 1; header("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg"); } else { $ok = 2; header("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg"); } Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 44
// Fecha a conexo com o servidor MySQL (Opcional) mysql_close ($conec); } ?> </body> </html>
6.5) Adicionando o cdigo referente as mensagens da alterao no script exibe_mensagem.php
Para exibir as mensagens finais da alterao vamos aproveitar o mesmo script utilizado anteriormente na incluso e na excluso. Abra o script exibe_mensagem.php e adicione o seguinte cdigo entre o trmino do bloco de cdigo referente a excluso e o comando que fecha a programao PHP (?> ):
if ($tipo_msg == 'A') { //se alterao OK if ($ok == 1) { echo ("<BR><BR>"); echo ("<center><b><font size = 4> Alterao Efetuada </font></b></center>"); echo ("<BR>"); echo ("<center><b> <a href=\"alteracao.html\">Voltar</a> </b></center>"); } // se deu erro na alterao if ($ok == 2) { echo ("<BR><BR>"); echo ("<center><b><font size = 4> Erro - Alterao no Efetuada </font></b></center>"); echo ("<BR>"); echo ("<center><b> <a href=\"alteracao.html\">Voltar</a> </b></center>"); } }
6.6) Testando o mdulo de alterao
Abra o navegador (Netscape) e digite o endereo do site: http://localhost/cursophp/index.html No menu da pgina principal, clique em alterao. Deixe o campo nome do funcionrio em branco e clique em enviar. Dever mostrar uma mensagem de erro. Preencha o formulrio com um nome de funcionrio que no existe e clique em enviar. Dever mostrar a mensagem Funcionrio no cadastrado. Preencha o formulrio com um nome de funcionrio vlido e clique em enviar. Ser mostrado um formulrio com os dados desse funcionrio. Altere alguns campos e clique em enviar. Dever mostrar a mensagem Alterao efetuada. Entre no mdulo de consulta e confira se os dados foram realmente alterados. Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 45 7 Mdulos Complementares
7.1) Usando If, elseif e else
Altere o script exibe_mensagem.php, ao invs de usar o comando If 3 vezes, mude para If, elseif e else. O cdigo ficar assim:
if ($tipo_msg == 'I') { //se incluso OK if ($ok == 1) { echo ("<BR><BR>"); echo ("<center><b><font size = 4> Incluso Efetuada </font></b></center>"); echo ("<BR>"); echo ("<center><b> <a href=\"inclusao.html\">Voltar</a> </b></center>"); } // se deu erro na incluso if ($ok == 2) { echo ("<BR><BR>"); echo ("<center><b><font size = 4> Erro - Incluso no Efetuada </font></b></center>"); echo ("<BR>"); echo ("<center><b> <a href=\"inclusao.html\">Voltar</a> </b></center>"); } }
elseif ($tipo_msg == 'E') { //se excluso OK if ($ok == 1) { echo ("<BR><BR>"); echo ("<center><b><font size = 4> Excluso Efetuada </font></b></center>"); echo ("<BR>"); echo ("<center><b> <a href=\"exclusao.html\">Voltar</a> </b></center>"); } Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 46 // se deu erro na excluso if ($ok == 2) { echo ("<BR><BR>"); echo ("<center><b><font size = 4> Erro - Excluso no Efetuada </font></b></center>"); echo ("<BR>"); echo ("<center><b> <a href=\"exclusao.html\">Voltar</a> </b></center>"); } // se funcionrio no cadastrado if ($ok == 3) { echo ("<BR><BR>"); echo ("<center><b> Funcionrio no cadastrado </b></center>"); echo ("<BR><BR>"); echo ("<center><b> <a href=\"exclusao.html\">Voltar</a> </b></center>"); } } else { //se alterao OK if ($ok == 1) { echo ("<BR><BR>"); echo ("<center><b><font size = 4> Alterao Efetuada </font></b></center>"); echo ("<BR>"); echo ("<center><b> <a href=\"alteracao.html\">Voltar</a> </b></center>"); } // se deu erro na alterao if ($ok == 2) { echo ("<BR><BR>"); echo ("<center><b><font size = 4> Erro - Alterao no Efetuada </font></b></center>"); echo ("<BR>"); echo ("<center><b> <a href=\"alteracao.html\">Voltar</a> </b></center>"); } }
?>
</body> </html>
7.2) Como obter data e hora do sistema
No exemplo a seguir obtemos data e hora usando a funo date, jogamos o contedo em variveis e mostramos essas variveis na tela.
Parmetros utilizados na funo date: j: dia m: ms Y: ano Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 47 H: hora i: minutos s: segundos
Programao para a Web utilizando PHP Diviso de Servios Comunidade Centro de Computao Unicamp 49 Referncia Bibliogrfica
Beginning PHP4 - Programando Autores: Wankyu Choi, Allan Kent, Chris Lea, ganesh Prasad, Chris Ullman, Jon Blank e Sea Cazzell Editora: Makron Books
Curso de Aplicacoes Web em PHP Autor: Mauricio Vivas ( mauricio@cipsga.org.br )
Colaboradores: Carlos Froldi e Marcelo G. Malheiros
Onde obter ajuda
Para ajud-lo a solucionar dvidas de informtica, utilize o sistema Rau-Tu de perguntas e respostas, que foi desenvolvido pelo Centro de Computao da Unicamp em conjunto com o Instituto Vale do Futuro. Tem por objetivo possibilitar que um time de colaboradores possa responder a perguntas colocadas por qualquer pessoa no site, cobrindo diversas reas de conhecimento. Acesse: www.rau-tu.unicamp.br