Escolar Documentos
Profissional Documentos
Cultura Documentos
ndice
Introduo ...........................................................................................................
Comunicao Cliente x Servidor web ................................................................
CGI - Common Gateway Interface .....................................................
Instalao e Configurao .................................................................................
Sintaxe bsica do PHP
Variveis ..................................................................................................
Operadores .............................................................................................
Estruturas de controle .............................................................................
Projeto
Criao da base de dados e tabelas .......................................................
Criao da Home page do site ................................................................
Mdulo de Incluso .................................................................................
Mdulo de Consulta ................................................................................
Mdulo de Excluso ................................................................................
Mdulo de Alterao ...............................................................................
Mdulos Complementares
Como obter data e hora do sistema .......................................................
Listar vrias ocorrncias de uma tabela .................................................
Referncia bibliogrfica .....................................................................................
1
2
5
6
8
13
16
26
28
29
34
37
40
46
47
49
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
atravs do PHP-GTK.
Histria
O PHP foi criado por volta de 1994 por Rasmus Lerdorf, que inicialmente utilizava-o 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 Agosto de 2003,
o PHP estava sendo utilizado em aproximadamente 13.000.000 de domnios (Pode-se
acompanhar esta estatstica em http://www.php.net/usage.php ).
Vantagens
O PHP tem inmeras vantagens, como veremos a seguir:
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 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.
Linha de requisio/resposta
Cabealho
Corpo
A diferena entre as duas o contedo de cada parte descrita, as quais vamos falar
separadamente:
Linha de requisio :
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)
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.
Exemplo:
HTTP/1.1 200 OK
300-399 Redirecionamento
400-499 o cliente passou uma requisio incorreta ao servidor, no qual no pde ser
executada
Exemplo:
Corpo: Caso a requisio seja aceita e executada sem problemas pelo servidor web,
o cdigo HTML requerido ser enviado ao navegador.
Instalao e Configurao
Primeiramente precisaremos fazer o download dos pacotes de instalao do
servidor Web Apache em http://www.apache.org , e da linguagem PHP http://www.php.net
. O banco de dados que utilizaremos no curso ser o PostgreSQL, o qual j se encontra
instalado e pronto para a utilizao.
O servidor web Apache deve ser instalado primeiro. Abaixo encontra-se o
procedimentos de instalao:
$
$
$
$
$
--enable-so
LoadModule
php4_module
AddType
AddType
application/x-httpd-php .php
application/x-httpd-php-source
DirectoryIndex
modules/libphp4.so
index.html
.phps
index.php
$ /usr/local/apache/bin/apachetcl start
<?php
phpinfo();
?>
Uma pgina contendo todas as configuraes para o PHP deve aparecer, caso contrrio,
a instalao foi mal sucedida.
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:
<?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;
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;
Tipos suportados
Inteiros
Sintaxe:
$curso
$curso
$curso
$curso
=
=
=
=
1000;
-1000;
0234; (inteiro base octal)
0x34; (inteiro na base hexadecimal)
Ponto flutuante
Sintaxe:
$curso = 1.050;
$curso = 52e3; (equivale a 52000)
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
\r
\t
\\
\$
\
\
nova linha;
retorno de carro (semelhante a \n)
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:
Sintaxe:
$estilo_musical[0] = 'pagode';
$estilo_musical[1] = drum \'n\' bass;
$estilo_musical[MPB] = 'Gilberto Gil';
$estilo_musical[Rock] = 'Blind Guardian';
10
Listas : Utilizadas em PHP para realizar atribuies mltiplas, como por exemplo,
atribuir valores de um array para variveis, como mostra a seguir:
Sintaxe:
Transformaes de tipos
possvel fazer transformaes de tipos de variveis atravs das seguintes formas:
11
Exemplo de sintaxe:
$curso
$curso
$curso
$curso
$curso
$curso
1
1
1
1
1
1
+
+
+
+
+
+
$curso
$curso
$curso
$curso
=
=
=
=
=
=
=
=
=
=
20; (integer(20))
(double)$curso; (double(20.0))
3.9; (double(3.9))
(int)$curso (o valor truncado e fica como integer(3))
12
Operadores
Aritmticos:
+
*
/
%
Adio
Subtrao
Multiplicao
Diviso
Mdulo
Strings:
Concatenao
13
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;
Lgicos:
and
or
xor
!
&&
||
e lgico
ou lgico
ou exclusivo
No (inverso)
e lgico
ou lgico
==
!=
<
>
<=
>=
igual a
diferente de
menor que
maior que
menor ou igual a
maior ou igual a
Comparao:
14
Incremento e decremento:
++
--
incremento
decremento
$a = 1;
$b = ++a; ($b recebe 2, valor de $a j incrementado)
$a = 1;
$b = a++; ($b recebe 1
e $a passa a ter 2)
15
Estruturas de controle
If
$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:
16
$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 :
$a = 1;
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;
default:
echo \$a igual a $a ;
}
17
$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>;
}
18
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:
19
Quebra de fluxo
Break
$a = 20;
while ($a > 0)
{
if ($a == 3)
{
echo Nmero invlido!;
break;
}
echo Nmero .$a.<br>;
$a--;
}
for ($a=0;$a<=10;$a++)
{
if ($a == 5)
{
echo "<p>Pulou o Numero ==> $a</p>";
continue;
}
echo "Numero ==> $a<br>";
}
20
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:
21
function contador($a)
{
++$a;
}
$cont = 10;
contador($cont);
echo "A variavel <b>$cont</b> contem ==> ".$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:
function contador(&$a)
{
++$a;
}
$cont = 10;
contador($cont);
echo "A variavel <b>$cont</b> contem ==> ".$cont;
contador(&$cont);
echo $cont;
22
globais;
locais;
estticas;
constantes.
$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();
23
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>;
function contador()
{
static $i = 0;
echo $i++.<br>;
}
24
Projeto
Desenvolveremos um site dinmico utilizando a linguagem PHP e o servidor de banco de
dados PostgreSQL. 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 de publicao do servidor web Apache, que
no nosso caso, encontra-se em: /usr/local/apache/htdocs/cursophp.
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.
25
26
27
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 .
28
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.
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.
29
Dicas:
No cdigo referente ao script incluso.php, utilizaremos
algumas funes do PHP:
trim: tira espaos em branco de uma varivel.
<?php
// Tirar espao em branco das variveis recebidas atravs do formulrio
$nome = trim($_POST["nome"]);
$unidade = trim($_POST["unidade"]);
$telefone = trim($_POST["telefone"]);
$email = trim($_POST["email"]);
$cargo = trim($_POST["cargo"]);
// Consiste as variveis recebidas
if (empty($nome) || empty($unidade) || empty($telefone) || empty($cargo)) {
/*
Comentar blocos de cdigo
*/
// se os campos obrigatrios no esto 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">
');
echo ("<p><center><img src=\"topo.gif\" width=\"640\"
height=\"44\"></center></p>");
echo ("<font color=\"#FF0000\"><b>Campo(s) obrigatrio(s) no
preenchido(s)</b></font>");
echo ("
<table width=\"640\" border=\"0\" cellspacing=\"0\" align=\"center\">
<tr>
<td>
<p><b>Formulrio de incluso: <br></b></p>
<form method=\"post\" action=\"inclusao.php\">
<p>Nome completo:
30
31
32
</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>");
}
}
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>
33
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
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.
4 - Mdulo de Consulta
Vamos criar a pgina com o formulrio de consulta.
34
</table>
</body>
</html>
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 existe. Precisamos, ento, cri-lo. Notem que essa pgina no ser mais HTML e sim
PHP, pois conter blocos de cdigo em PHP.
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).
pg_num_rows: obtem o nmero de registros que retornou do
select.
pg_fetch_row: obtem os campos do registro que retornou
do select.
35
<html>
<head>
<title>Consulta.php Document</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">
<?php
// Tirar espao em branco da varivel recebida atravs do formulrio
$nome = trim($_POST["nome"]);
// Consiste Nome
if (empty($nome))
{
$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 PostgreSQL
// Parmetros: host, username, senha
pg_connect("host=localhost dbname=cursophp user=user_curso
password=cursophp") or die("Erro ao conectar ao banco de dados");
// Declarao do SQL
$declar = "SELECT nome, unidade, telefone, email, cargo from
funcionarios where nome = '$nome'";
// Roda a query e verifica se encontrou registro
$query = pg_query($declar) or die ("Erro no acesso ao banco");
$achou = pg_num_rows($query);
// Se encontrou, guarda as variveis
if ($achou > 0)
{
$row = pg_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>");
36
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.
37
5 - Mdulo de Excluso
Vamos criar a pgina com o formulrio de excluso.
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 conter blocos de cdigo em PHP.
38
<?php
// Tirar espao em branco das variveis recebidas do formulrio
$nome = trim($_POST["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 PostgreSQL
pg_connect("host=localhost dbname=cursophp user=user_curso
password=cursophp") or die("Erro ao conectar ao banco de dados");
// Declarao do SQL
$declar = "SELECT nome from funcionarios where nome = '$nome'";
// Roda a query, verifica se funcionrio cadastrado
$query = pg_query($declar) or die ("Erro no acesso ao banco");
$achou = pg_num_rows($query);
// 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 (pg_query($declar2))
{
$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");
}
}
else
{
$ok = 3;
header("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");
}
}
?>
</body></html>
39
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
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.
6 - Mdulo de Alterao
Vamos criar a pgina com o formulrio de alterao.
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
40
dados) no existe. Precisamos, ento, cri-lo. Notem que esta pgina no ser mais
HTML e sim PHP, pois conter blocos de cdigo em PHP.
<?php
include ("funcoes.php");
// Tirar espao em branco das variveis recebidas do formulrio
$nome = trim($_POST["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 PostgreSQL
// Parmetros: host, db, username, senha
pg_connect("host=localhost dbname=cursophp user=user_curso
password=cursophp") or die("Erro ao conectar ao banco de dados");
// Declarao do SQL
$declar = "SELECT nome, unidade, telefone, email, cargo from
funcionarios where nome = '$nome'";
// Roda a query e verifica se encontrou registro
$query = pg_query ($declar) or die ("Erro no acesso ao banco");
$achou = pg_num_rows($query);
// Se encontrou, guarda as variveis
if ($achou > 0)
{
$row = pg_fetch_row ($query);
$nome = $row[0];
$unidade = $row[1];
$telefone = $row[2];
$email = $row[3];
$cargo = $row[4];
$script_chamador = 'A';
41
monta_pagina($nome,$unidade,$telefone,$email,$cargo,$script_chamador);
}
else
{
echo ('
<html>
<head>
<title>Alteracao.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>
42
<?php
function
monta_pagina($nome,$unidade,$telefone,$email,$cargo,$script_chamador)
{
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">
');
echo ("<p><center><img src=\"topo.gif\" width=\"640\"
height=\"44\"></center></p>");
if ($script_chamador == 'A2')
{
echo ("<font color=\"#FF0000\"><b>Campo(s) obrigatrio(s) no
preenchido(s)</b></font>");
}
echo "
<table width=\"640\" border=\"0\" cellspacing=\"0\"
align=\"center\">
<tr>
<td>
<p><b>Formulrio de alterao: <br></b></p>
<form method=\"post\" action=\"alteracao2.php\">
<p>Nome: $nome </p>
<p>Unidade: <input type=\"text\" name=\"unidade\"
value=\"$unidade\" size=\"40\" maxlength=\"40\"> </p>
<p>Telefone: <input type=\"text\" name=\"telefone\"
value=\"$telefone\" maxlength=\"10\" size=\"10\"> </p>
<p>E-mail: <input type=\"text\" name=\"email\"
value=\"$email\" size=\"25\" maxlength=\"25\"> </p>
<p>Cargo: <input type=\"text\" name=\"cargo\"
value=\"$cargo\" size=\"40\" maxlength=\"40\"> </p>
<p> <input type=\"submit\" name=\"Submit\"
value=\"Enviar\"><p>
<p> <input type=\"hidden\" name=\"nome\"
value=\"$nome\"></p>
</form>
</td>
</tr>
</table>
<center> <b> <a href=\"alteracao.html\">Voltar</a> </b> </center>
43
";
}
?>
44
}
else
{
$ok = 2;
header("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");
}
}
?>
</body>
</html>
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.
45
7 Mdulos Complementares
7.1) 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
H: hora
i: minutos
s: segundos
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">
<?php
$data = date("j/m/Y");
$hora = date("H:i:s");
echo ("Data: $data");
echo ("<br><br>");
echo ("Hora: $hora");
?>
</body>
</html>
$data = date("Y/m/j");
46
7.2) Como listar vrias linhas de uma tabela, usando o comando while.
No exemplo a seguir listaremos todas as linhas da tabela funcionarios, permitindo
que se altere os dados de um funcionrio.
<html>
<head>
<title>Consulta.php Document</title>
</head>
<body bgcolor="#FFFFFF">
<?php
pg_connect("host=localhost dbname=cursophp user=user_curso
password=cursophp") or die("Erro ao conectar ao banco de dados");
$declar = "SELECT nome, unidade, telefone, email, cargo from
funcionarios";
$query = pg_query ('unicamp', $declar, $conec) or die ("Erro no acesso ao
banco");
$achou = pg_num_rows($query);
echo ("<BR>");
echo ("<table border=\"1\" width=\"640\" border=\"0\" cellspacing=\"0\"
align=\"center\">
<tr>
<td><b>Nome</b></td>
<td><b>Unidade</b></td>
<td><b>Telefone</b></td>
<td><b>E-mail</b></td>
<td><b>Cargo</b></td>
<td><b>Ao</b></td>
</tr>");
while($linhas = pg_fetch_row ($query))
{
$nome
= $linhas[0];
$unidade = $linhas[1];
$telefone = $linhas[2];
$email
= $linhas[3];
$cargo
= $linhas[4];
echo
echo
echo
echo
echo
echo
echo
("<tr>\n");
("
<td>$nome</td>");
("
<td>$unidade</td>");
("
<td>$telefone</td>");
("
<td>$email</td>");
("
<td>$cargo</td>");
("
<td>
<form method=\"post\" action=\"alteracao.php\">
<input type=\"hidden\" name=\"nome\" value=\"$nome\">
<input type=\"submit\" name=\"submit\"
47
value=\"Alterar\">
</form>
</td>");
echo ("</tr>\n");
}
echo ("</table>\n");
?>
</body></html>
48
Referncia Bibliogrfica
49