Escolar Documentos
Profissional Documentos
Cultura Documentos
Phpbasico
Phpbasico
ndice
Introduo ...........................................................................................................
Comunicao Cliente x Servidor web ................................................................
Ambiente CGI ....................................................................................................
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
Usando If, elseif e else ...
Como obter data e hora do sistema .......................................................
Listar vrias ocorrncias de uma tabela .................................................
Referncia bibliogrfica .....................................................................................
1
2
5
6
8
13
16
25
26
28
33
36
39
45
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 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:
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.
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.
HTTP/1.1 200 OK
100-199
200-299
300-399
redirecionamento
400-499
500-599
Exemplo:
Date: Mon, 11st 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.
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:
apache-1.3.22
php4-4.1.1
mod_php4-4.1.1
php4-mysql-4.1.1
MySQL-3.23.36
php4_module modules/libphp4.so
AddModule
mod_php4.c
AddType
AddType
application/x-httpd-php .php
application/x-httpd-php-source
DirectoryIndex
index.php
index.html
.phps
index.wml
$ cds
$ ./httpd restart
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();
?>
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 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
}
elseif ($a >
{
echo
}
else
{
echo
}
a maior que b ;
$c)
a maior que c ;
a menor que b e c ;
Switch :
$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;
}
17
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>;
}
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
$a = 20;
while ($a < 0)
{
if ($a == 5)
{
echo Nmero invlido!;
break;
}
echo Nmero .$a.<br>;
$a--;
}
for ($a=0;$a<10;$a++)
{
if ($a == 5)
{
continue;
}
else
{
echo Nmero
}
}
.$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
$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;
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 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.
25
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;
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.
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.
28
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.
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.
29
30
31
32
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.
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
33
existe. Precisamos, ento, cri-lo. Notem que essa pgina no ser mais html e sim php,
pois o cdigo vai conter programao PHP.
<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
// 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)) {
34
$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>
35
5 - Mdulo de Excluso
Vamos criar a pgina com o formulrio de excluso.
36
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.
37
else {
$ok = 3;
header("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");
}
mysql_close ($conec);
}
?>
</body>
</html>
38
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 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.
39
40
<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>
41
42
43
44
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:
<html>
<head>
<title>Exibe Mensagem</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
global $ok;
$ok = trim($ok);
echo ("<p><center><img src=\"topo.gif\" width=\"640\"
height=\"44\"></center></p>");
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>");
}
45
46
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");
7.3) 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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">
<?php
$conec = mysql_connect ("localhost","usuario","senha");
$declar = "SELECT nome, unidade, telefone, email, cargo from
funcionarios";
$query = mysql_db_query ('unicamp', $declar, $conec) or die ("Erro no
acesso ao banco");
$achou = mysql_num_rows($query);
echo ("<BR>");
47
("<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\"
value=\"Alterar\">
</form>
</td>");
echo ("</tr>\n");
}
echo ("</table>\n");
?>
</body>
</html>
48
Referncia Bibliogrfica
49