Programacao para WEB PHP

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 101

Programação para WEB

Igor Thiago Marques Mendonça

Florianópolis
2010
Copyright © 2010, Instituto Federal de Santa Catarina / Sistema ETEC. Nenhuma parte
deste material poderá ser reproduzida, transmitida e gravada, por qualquer meio eletrô-
nico, por fotocópia e outros, sem prévia autorização, por escrito, dos autores.

Mendonça, Igor Thiago Marques


Programação para WEB / Igor Thiago Marques Mendonça / Floria-
nópolis : Publicações do IF-SC, 2010.
101p. : il. ; 00 cm.

Inclui Bibliografia

ISBN:

1. Informática. 2. Microcomputadores. 3. Banco de dados

Sistema de Bibliotecas Integradas do IF-SC


Biblioteca Dr. Hercílio Luz – Campus Florianópolis
Catalogado por:
Organização de conteúdo:
Andrino Fernandes
Elaine Luz Barth

Comissão Editorial:
Hamilcar Boing
Andrino Fernandes
Elaine Luz Barth

Produção e design instrucional:


Elaine Luz Barth

Diagramação:
Hudson Ricardo Borges

Capa:
Lucio Baggio

Revisão ortográfica:
Marcos Pessoa
Sumário
Capítulo 1 - Fundamentos ........................................................... 9
1.1 Histórico ......................................................................................... 11
1.2 Fundamentos da programação Web ............................................... 12
1.3 PHP ............................................................................................... 14

Capítulo 2 - Sintaxe do PHP ....................................................... 17


2.1 Delimitadores de código PHP ........................................................ 19
2.2 Inclusão de comentários ................................................................. 20

Capítulo 3 - Variáveis ................................................................... 23


3.1 Tipos de variável ............................................................................. 25
3.2 Atribuição de variáveis .................................................................... 26
3.3 Concatenação de Strings ................................................................. 27
3.4 Caracteres de escape ....................................................................... 27
3.5 Arrays .............................................................................................. 28

Capítulo 4 - Operadores ............................................................... 35


4.1 Operadores Aritméticos ................................................................... 37
4.2 Operadores de Strings ..................................................................... 37
4.3 Operadores de Atribuição ................................................................ 38
4.4 Operadores Lógicos ......................................................................... 38
4.5 Operadores de Comparação ............................................................ 39
4.6 Operadores de incremento e decremento ......................................... 40

Capítulo 5 - Estruturas de Controle de Repetição ........................... 43


5.1 if (Se) ............................................................................................... 45
5.2 switch ............................................................................................... 47
5.3 while (Enquanto) .............................................................................. 48
5.4 do .. while (faça enquanto) ............................................................... 49
5.5 for (Para) .......................................................................................... 51
5.6 foreach (Para cada) .......................................................................... 52
5.7 break e continue .............................................................................. 54

Capítulo 6 - Include e Require ...................................................... 57

Capítulo 7 - Trabalhando com dados de formulário ...................... 63


7.1 Recuperando dados do formulário ................................................... 66

Capítulo 8 - Trabalhando com sessões .......................................... 71

continua...
Capítulo 9 - Funções em PHP ....................................................... 77

Capítulo 10 - Integração com o Banco de Dados .......................... 85


10.1 Configurando uma conexão com banco de dados ......................... 88
10.2 Escolhendo uma Base de Dados .................................................... 88
10.3 Realizando uma consulta ............................................................... 89
10.4 Criando novos registros ................................................................. 93
10.5 Alterando registros ........................................................................ 96
10.6 Excluindo registros ........................................................................ 98
Apresentação

Prezado (a) estudante,

Este caderno pedagógico servirá de base para o acompanhamento dos estudos


da disciplina Programação para Web. Através dele, e dos encontros semanais,
estudaremos os principais conceitos sobre este tipo de programação.

Inicialmente, abordaremos um breve histórico sobre o surgimento das lingua-


gens de programação para Web, bem como a sua arquitetura de funcionamento.
Em seguida, passaremos pelas principais características do PHP (PHP Hypertext
Preprocessor), a linguagem de programação Web que será utilizada no curso.

Vamos trabalhar com o código PHP propriamente dito, inicialmente aprenden-


do a sintaxe da linguagem, o uso de variáveis onde as primeiras funções para
manipulação de variáveis serão introduzidas. Assim como em todas as lingua-
gens, em PHP se faz necessário o uso de operadores. Veremos os principais ope-
radores aritméticos, de Strings, de atribuição entre outros. Com eles é possível a
realização de contas, união de textos etc.

Na seqüência, você será orientado a usar as estruturas de controle e repetição


da linguagem. Na continuação, você aprenderá como recuperar os dados envia-
dos pelos usuários através de formulários HTML e posteriormente será focaliza-
do um mecanismo, conhecido por sessão, que auxilia no tratamento individual
de cada usuário que acessa uma página da Internet.

Já na parte final deste material aprenderemos como modularizar nossos códigos


através do uso de funções e fazer uso de Banco de Dados junto ao PHP.

Tenho certeza que juntos podemos construir uma base sólida de conhecimento e
no decorrer da unidade curricular você estará desenvolvendo seus códigos PHP
para páginas da Internet. Estarei sempre à disposição para dirimir as dúvidas.

Bons estudos!

Prof. Igor Thiago


CAPÍTULO

1
FUNDAMENTOS
Objetivo
Nesta unidade você deverá se inteirar de
um breve histórico sobre programação para
Web, estabelecer diferenças entre este tipo
de programação e as demais, ressaltando
as características da linguagem PHP.
Fundamentos
1.1 Histórico

Como foi visto na Unidade Curricular de Desenvolvimento de Ho-


mapage, a WWW (World Wide Web) surgiu a partir da criação da lin-
guagem HTML (HyperText Markup Language) e dos servidores Web.

Através da linguagem de marcação HTML foi definido como as infor-


mações estariam disponíveis na Internet. A partir dela é possível exibir
textos, imagens, tabelas. Mas o mais importante desta linguagem foi
a incorporação do conceito de realizar ligações entre documentos da
própria Internet.

À medida em que a Internet foi se popularizando e o número de


Homepages (bem como a quantidade de informações contidas
nelas) foram ficando cada vez maiores, criou-se a necessidade de
gerenciar esse conteúdo.

A utilização de somente HTML para a criação de páginas mostra-se


ineficiente, uma vez que para cada nova página é necessário a criação
de um novo arquivo. A solução seria, então, incorporar ao desenvolvi-
mento Web as linguagens de programação.

A primeira iniciativa foi a de usar as linguagens de programação já exis-


tentes para o desenvolvimento de aplicativos. Para isso, foi desenvolvi-
do e utilizado o CGI (Commom Gateway Interface), que nada mais é do
que uma ligação entre o Servidor Web e as linguagens de programação
que a máquina que o hospedava pode executar. Com isso, tem-se a
vantagem do poder das linguagens de programação para desenvolver
sites para a Internet. Dentre os recursos disponíveis destacam-seentre
outros o acesso a banco de dados e estruturas de repetição.

Porém, existe uma desvantagem que precisa ser considerada.


Todo o site precisa ser programado, ou seja, perde-se a possibili-
dade (que seria uma vantagem) de simplesmente criar um arqui-
vo com o conteúdo e publicá-lo no Servidor Web.

Como forma de solucionar alguns destes problemas, surgiram as Lin-


guagens de Programação para Web, ou seja, desenvolvidas especifica-
mente para serem utilizadas em Servidores Web.

Neste novo tipo de linguagem, o desenvolvedor tem a possibilidade


de criar arquivos simples, misturando códigos HTML com códigos de
programação. 11
Programação para WEB
Dentre as primeiras linguagens de programação para a Web que surgiram
estão ASP (Active Server Pages) da Microsoft, PHP (PHP Hypertext Prepro-
cessor) e JSP (Java Server Pages) da SUN. Todas elas tem características
parecidas fornecendo os recursos necessários para o desenvolvimento de
páginas dinâmicas para a Internet.

Nas próximas seções iremos ver como é a interação das Linguagens de


Programação para Internet, o Servidor Web e o navegador do usuário.

1.2 Fundamentos da programação Web

As linguagens de programação, em geral, possuem alguns requisitos para


funcionar adequadamente. Em programação para a Web não é diferente,
mas devido a arquitetura diferenciada que a Internet oferece, esses requisitos
também são diferenciados.

Comumente as linguagens de programação para computadores pes-


soais criam aplicativos que são executados em somente uma máquina,
a máquina no qual ele é instalado. Na prática, os desenvolvedores
codificam um programa que quando pronto, permite a criação de um
instalador. A pessoa ou empresa que deseja utilizar tal programa pre-
cisa executar o instalador na máquina que deseja usar o programa.

Dentro os aplicativos que estão nessa classe de programas destacam-se: a


suíte de aplicativo do Broffice, os antivírus, aplicativos comerciais e outros.

As linguagens de programação para Web, que são o foco desta Uni-


dade Curricular, são também conhecidas por páginas dinâmicas de
servidor, isto porque elas são reconhecidas, interpretadas e executadas
no próprio servidor.

A figura a seguir ilustra o funcionamento


das linguagens de programação para a
Web, especialmente o PHP que será trata-
do nesta unidade curricular

Fig.1 - Funcionamento da linguagem PHP


(Adaptada de: http://www6.ufrgs.br/engcart/PDASR/lin-
guagens.html)

12
Fundamentos

Inicialmente o usuário solicita através de um navegador de Internet,


uma página ao Servidor Web. Ao identificar que a página é PHP ele
interpreta e executa os códigos contidos nela e o resultado é dado
como uma página HTML que então é devolvida ao cliente, ou seja,
quando o cliente recebe a página, ela já foi processada pelo servidor.

O cliente ou usuário que acessa uma página dinâmica (processa-


da por um Servidor Web) não percebe nenhuma diferença entre
este tipo de página e uma simples página em HTML.

Como, o HTML não é uma linguagem de programação e para suprir


a demanda por processamento em servidor, começaram a surgir as
linguagens de programação para a Web.

As páginas dinâmicas processadas no servidor são úteis em mui-


tas ocasiões. Com elas pode-se fazer todo tipo de aplicação Web.
Desde agendas a fóruns, sistemas de documentação, estatísticas,
jogos, chats, etc. São especialmente úteis em trabalhos que tem
de se acessar a informação centralizada que está situada em uma
base de dados no servidor, e também quando por razões de se-
gurança ou necessidade de velocidade de processamento os cál-
culos não podem ser realizados no computador do usuário.

Quais as vantagens deste tipo de programação? Primeiramente os


scripts não podem ser vistos pelo cliente, já que os Servidores Web
executam e transformam em HTML antes de enviá-las ao solicitante. A
seguir ressalta-se que eles são independentes do navegador do usuário,
já que o código que recebem é HTML e são facilmente interpretáveis.

A necessidade de um servidor mais potente e com mais capa-


cidades que o necessário daqueles usados apenas nas páginas
HTML percebe-se uma desvantagem, Ao momento que estes
servidores suportem menos usuários concorrentes, eles exigem
mais tempo de processamento.

A seguir, veremos algumas características da linguagem de programa-


ção para Web PHP.

13
Programação para WEB

1.3 PHP

PHP é o acrônimo recursivo para PHP: Hypertext Preprocessor. É uma lin-


guagem de programação do lado do servidor, gratuito, independente de pla-
taforma, rápido, com uma grande biblioteca de funções e muita documen-
tação.

O PHP, é uma linguagem de programação para a Web que apresenta


eficiente suporte matemático, além de dar suporte para um grande
número de banco de dados, como dBase, Interbase, mSQL, mySQL,
Oracle, Sybase, PostgreSQL e vários outros.

Construir uma página baseada em banco de dados torna-se uma tarefa ex-
tremamente simples. Também oferece suporte a outros serviços através de
protocolos como IMAP, SNMP, NNTP, POP3 e, logicamente, HTTP. Ainda é
possível abrir sockets e interagir com outros protocolos. (Fonte: http://www6.
ufrgs.br/engcart/PDASR/linguagens.html)

Uma das principais vantagens do PHP:

• é que ele pode ser executado em diversos sistemas operacionais (multi-


plataforma), como Linux, Windows, Unix, OS/2, Macintosh, NT, etc.
• permite mudanças de plataforma com nenhuma ou pouquíssimas altera-
ções em seus códigos-fonte.
• é gratuito, permitindo que seu arquivo de instalação possa ser obtido
gratuitamente no site oficial do PHP http://www.php.net.br.
• é um software com código aberto (open source).
• o código-fonte do PHP, assim como sua documentação detalhada tam-
bém está disponível no site oficial.

Para concluir, é importante compreender que a criação de páginas


usando PHP ou outra linguagem de programação para Web não é tão
simples quanto a criação de páginas HTML vista na Unidade Curricu-
lar de Desenvolvimento de Homepages. Estamos, agora, estudando
as linguagens de programação para Web precisam ser interpretadas e
executadas no servidor.

14
Fundamentos

Resumo

Neste capítulo estudamos um breve histórico da Internet até chegar a


necessidade da linguagens de programação para ela. Vimos também
que essas linguagens trabalham diferente das linguagens para desktop
(pois consideram a arquitetura da Internet) e por fim, destacamos al-
guns recursos que caracterizam a linguagem que iremos abordar a se-
guir.

Atividades de Aprendizagem

1. Explique o funcionamento das linguagens de programação para a


Web mostrando o fluxo desde a requisição de uma página até a exibi-
ção dela no navegador.

2. Cite alguns dos recursos disponíveis na linguagem PHP.

15
CAPÍTULO

2
SINTAXE DO PHP
Objetivo
Nesta unidade você deverá iniciar a es-
crever nossos primeiros códigos reconhe-
cendo como a linguagem está estrutura-
da observando a sintaxe da linguagem
PHP.
Sintaxe do PHP

Assim como no desenvolvimento de homepages com HTML,


a programação para Web com PHP pode ser feita criando-se
arquivos de texto simples, nomeados com a extensão .php. Por-
tanto, podemos usar nosso editor de textos favorito ou recorrer
aos famosos editores específicos que incluem facilidades ao de-
senvolvedor Web.

2.1 Delimitadores de código PHP Exemplos de nomes para arquivos que


conterão códigos PHP.
index.php
Já foi mencionado que os códigos da linguagem PHP se mistura pagina.php
com os códigos do HTML. Para que o servidor saiba o que ele
deve interpretar e executar, foram definidos marcadores espe-
ciais que delimitam o que é código PHP.

O marcador que indica o início do código PHP é <?php e


o marcador que indica o fim de código PHP é ?>. Outra
alternativa é a utilização dos marcadores <? e ?> para de-
limitar o código. Esta última, trata-se de um modo abrevia-
do e funciona perfeitamente.

A seguir, veja o primeiro exemplo de código PHP. Observe como,


ele está misturado ao código HTML.

Nome do arquivo: primeiroexemplo.php

<html>
<head>
<title>T&iacute;tulo da p&aacute;gina</title>
</head>
<body>
<?php
echo(“TESTE”);
?>
</body>
</html>

echo é uma função que inclui na página o texto que lhe é pas-
sado como parâmetro. É opcional usar parênteses para passar o
parâmetro. A seguir dois exemplos que surtem o mesmo efeito:
echo(“TESTE”);
echo “TESTE”;

19
Programação para WEB

2.2 Inclusão de comentários

Assim como em quase todas as linguagens, é possível incluir comentários no


código PHP. Existem duas formas:

a) Comentário de uma linha

Quando se deseja comentar somente uma linha, usa-se o caractere contra-


-barra duas vezes (\\).

b) Comentário de várias linhas

Quando o comentário possui mais de uma linha, existe a possibilidade de


marcar o início e o fim do que é comentário no código. Para isso, usa-se os
caracteres \* para indicar o início do comentário e os caracteres *\ para
indicar o fim.

A seguir, um exemplo de utilização de comentário de uma e várias linhas.

Nome do arquivo: comentarios.php


<?
/*
Nome do arquivo: comentarios.php
Criador: José Carlos da Silva
Data de criação: 27/08/2010
Última modificação: 28/08/2010
*/
?>
<html>
<head>
<title>T&iacute;tulo da p&aacute;gina</title>
</head>
<body>
<?php
//A linha abaixo insere a palavra TESTE no documento
echo(“TESTE”);
?>
</body>
</html>

20
Sintaxe do PHP

Uma diferença importante da utilização de comentários no PHP em


relação aos comentário em HTML é que eles nunca ficam expostos à
pessoa que está acessando a página através do navegador. Isto acon-
tece porque o código ao ser interpretado pelo servidor desconsidera
o que é colocado como comentário. Diferente disso, os comentários
em HTML somente são ocultos pelo navegador, mas permanecem no
código da página.

Resumo

Neste capitulo vimos a sintaxe do código PHP e como incluir comen-


tários no código PHP. Os comentários podem ser de uma linha ou de
múltiplas linhas e o comentário de única linha possui dois identificado-
res possíveis de usar.

Atividades de Aprendizagem

1. Quais são os caracteres que identificam o comentário de uma linha?

2. Dê um exemplo de comentário de mais de uma linha.

21
CAPÍTULO

3
VARIÁVEIS
Objetivo
Nesta unidade você deverá identificar e
aplicar a sintaxe de uso de variáveis, as
primeiras funções em PHP para manipu-
lação de dados e um tipo especial de va-
riável denominado Array.
Variáveis

Como já foi visto em lógica de programação, variáveis são espa-


ços reservados para armazenar valores. Comumente estes espa-
ços são utilizadas para realizar algum tipo de cálculo ou armaze-
nar informações fornecidas por uma entrada do sistema.

Variáveis são sempre identificadas por um nome e em PHP de-


vem ser precedidas pelo caractere $ (cifrão). Por exemplo:
$variavel
$valor
$texto

O nome de uma variável deve começar sempre por uma letra,


e nunca por um numero, ou pelo caractere “_”, embora estes
possam estar após o primeiro caractere da letra do nome.

É recomendado que se utilize nomes sugestivos para vari-


áveis. Por exemplo, se a variável for usada para preencher
o nome de uma pessoa, utilize $nome, caso seja a idade,
utilize $idade e assim por diante.

A linguagem PHP é sensível a caixa, isto quer dizer que uma va-
A linguagem PHP é sensível a caixa, na
riável com nome $IDADE é diferente de outra com nome $ida- declaração de uma variável ou na utiliza-
de. O mesmo vale para os comandos que veremos no decorrer ção de um comando a grafia do texto faz
da Unidade Curricular Programação para Web. diferença. Por exemplo as variáveis $VAR
e $var são diferentes.

3.1 Tipos de variável

Em PHP não é necessário declarar as variáveis antes de usá-las,


como é o caso de linguagens como C e Java. Diferente destas
linguagens, também não é necessário informar o tipo de valor
que a variável irá receber. Dependendo do valor que você atri-
buir a uma variável ela irá assumir um dos tipos primitivos do
PHP que podem ser:

Tabela 1: Tipos de variáveis em PHP


Tipo Descrição Exemplos
Este é o tipo mais simples. Um booleano expressa True ou False
Boolean
um valor verdade.
Integer Números inteiros 1 ou 10 ou 345
Números de ponto flutuante (também conheci- 0.45 ou 1.23 ou
Float
dos como “floats”, “doubles” ou “números reais”) 300.5
String Uma string é uma série de caracteres “Texto em string” 25
Programação para WEB

Agora que já vimos os tipos de variáveis, veremos como atribuir os valores


a elas.

3.2 Atribuição de variáveis

A atribuição de um valor a variável é simples. Coloca-se o nome da variável


seguida do sinal de igual (=), na sequência iclui-se no valor que deseja atri-
buir a ela. A seguir exemplos para os tipos de variável apresentados:

<?
//Atribuição do tipo booleano
$var_boolean = true;
//Atribuição de valor inteiro
$var_integer = 10;
//Atribuição de número de ponto flutuante
$var_float = 1.35;
//Atribuição de sequência de caracteres
$var_string = “sequência de caracteres”;
?>

A atribuição ao tipo String pode utilizar aspas simples ao invés das aspas
duplas. Por exemplo:

<?
//Atribuição de sequência de caracteres
$var_string = ‘sequência de caracteres’;
?>

Mas existe uma diferença entre estas duas maneiras de atribuição para Strin-
gs. Quando se utiliza aspas duplas, pode-se incluir dentro do valor uma outra
variável que será incorporada a esta. Por exemplo:

<?
$var1 = “Carlos”;
$var_string = “É $var1 o segundo nome de José”;
//O valor da variável $var_string será: É Carlos o segundo
nome de José
$var_string2 = ‘É $var1 o segundo nome de José’;
//O valor da variável $var_string2 será: É $var1 o segundo
nome de José
echo $var_string;
echo(“<br />”);
echo $var_string2;
?>

26
Variáveis

depois de estudarmos uma forma de concatenação de Strings, vamos


a seguir conhecer outras formas.

3.3 Concatenação de Strings

Muitas vezes é necessário em programação, unir dois ou mais textos.


Um exemplo prático é quando o cliente preenche seu primeiro nome
em um campo e o segundo nome em outro ao preencher um formulá-
rio. Caso a base de dados possua somente um campo para armazenar
nome será necessário concatenar os dados digitados. Esta operação
é chamada de concatenação e veremos através de exemplos como
utilizá-la.
<?
$primeiro_nome = “José”;
$segundo_nome = “ Carlos”;
$sobrenome = “ da Silva”;
$nome_completo = $primeiro_nome . $segundo_nome . $sobrenome;
echo $nome_completo;
?>

3.4 Caracteres de escape

Todos as linguagens de programação possuem caracteres reservados,


em PHP não é diferente. É fácil notar que se usamos aspas duplas para
O assunto variáveis é extrema-
atribuir Strings a variáveis, então como atribuiremos aspas duplas a mente extenso, maiores infor-
variáveis? mações podem ser obtidas no
próprio site do PHP: http://www.
php.net/manual/pt_BR/language.
Por exemplo, se eu desejar colocar na página o seguinte texto: Na lin- types.php
guagem “PHP” como usamos aspas duplas?

Será que o exemplo a seguir irá funcionar?


<?
$variavel = “Na linguagem “PHP” como usamos aspas duplas?”;
?>

Se você testou, deve ter notado que não funcionou. Para este caso e
outros utilizamos o caractere de escape, uma contra-barra (\). Para o
código acima funcionar a maneira correta de utilizar seria:
<?
$variavel = “Na linguagem \”PHP\” como usamos aspas duplas?”;
echo $variavel;
?>

27
Programação para WEB

Com certeza surge a dúvida:


Se a contra-barra é o caractere de escape, o que devo fazer quando eu
precisar utilizá-la?
A resposta é simples, ele deverá ser duplicada (\\) porque apenas uma
delas irá aparecer. Veja o exemplo:
<?
$variavel = “Uma contra-barra: \\ <br /> Duas contra-barras \\\\”;
echo $variavel;
?>

A seguir, uma tabela com alguns dos caracteres que são necessário
para a utilização do escape:
Sequência Significado
\n fim de linha (linefeed ou LF ou 0x0A (10) em ASCII)
\r retorno de carro (carriage return ou CR ou 0x0D (13) em ASCII)
\t TAB horizontal (HT ou 0x09 (9) em ASCII)
\v TAB vertical (VT ou 0x0B (11) em ASCII)
\f form feed (FF ou 0x0C (12) em ASCII)
\\ contra barra ou barra invertida
\$ sinal de cifrão
\” aspas

Veremos a seguir um tipo importante de variável conhecido por Array,


diferente dos tipos vistos até agora, este aceita receber mais do que um
valor. Pode parecer um pouco estranho uma variável receber mais de
um valor, mas com os exemplos que veremos será fácil notar a impor-
tância delas.
ASCII: Código padrão Americano
para intercâmbio de informação. 3.5 Arrays

Array é um tipo de variável que mantém uma série de elementos, ge-


ralmente que se referem a um determinado assunto. Cada elemento é
identificado por um índice.

Como veremos a seguir, algumas vezes é necessário armazenar


diversas informações sobre um determinado assunto. A utiliza-
ção de variáveis simples, que aceitam somente um valor, acaba
tornando o trabalho ineficiente e custoso.

28
Variáveis
Veja o seguinte exemplo:

Um exemplo simples é a realização de um cálculo com diversas vari-


áveis. Suponha que deseja calcular os alugueis pago durante o ano.
Como pode ser visto abaixo, utilizando variáveis simples são neces-
sárias doze variáveis, uma para cada mês, e mais uma para atribuir a
soma.

<?
$mes1 = 800;
$mes2 = 800;
$mes3 = 800;
$mes4 = 800;
$mes5 = 800;
$mes6 = 800;
$mes7 = 800;
$mes8 = 800;
$mes9 = 800;
$mes10 = 800;
$mes11 = 800;
$mes12 = 800;
$soma = $mes1+$mes2+$mes3+$mes4+$mes5+$mes6+$mes7+$mes
8+$mes9+$mes10+$mes11+$mes12;
?>

Para facilitar o cálculo, surgiu o conceito de arrays, quando é armaze-


nada em somente uma variável toda uma cadeia de valores. O exem-
plo a seguir realiza o mesmo trabalho do anterior mas de maneira mais
compacta e fácil.

<?
$meses = array(800,800,800,800,800,800,800,800,800,800,800,800);
for($i=0;$i<12;$i++) $soma = $meses[$i];
?>

a) Criação de arrays

Em PHP é possível criar arrays de diversas maneiras. Veja a seguir,


algumas delas. As diversas possibilidades permitem realizar a mesma
coisa, sendo assim, cada desenvolvedor pode escolher a forma que
mais lhe for conveniente.

• Primeira forma:
<?
$nomes = array(0 => “Alice”, 1 => “Barbara”, 2 => “Carlos”, 3 => “Diego”);
?>

29
Programação para WEB

Nesta primeira forma, a definição dos valores da array são precedidos do


seu respectivo índice. Analisando pelo código temos: 0 => “Alice”, onde
0 é o índice e Alice é o valor associado ao índice. Da mesma forma temos 1
=> “Barbara”, onde 1 é o índice e Barbara é o valor associado ao índice.

Para se utilizar um dos valores armazenados no array, é necessário indicar


qual o índice. Considerando o exemplo anterior, se desejarmos exibir na pá-
gina o nome Diego que está no índice 3, podemos utilizar a seguinte sintaxe:

<?
echo $nomes[3];
?>

• Segunda forma:

<?
$nomes = array(“Alice”, “Barbara”, “Carlos”, “Diego”);
?>

Neste caso, cujos índices não são indicados, o PHP adota por padrão nume-
rá-los a partir de zero, ou seja, se desejar acesssar o nome Diego o índice a
ser utilizado será o 3.

• Terceira forma:

<?
$nomes[] = “Alice”;
$nomes[] = “Barbara”;
$nomes[] = “Carlos”;
$nomes[] = “Diego”;
?>

Da mesma forma que o exemplo anterior, neste o PHP adota por padrão
numerá-los a partir de zero.

b) Funções para manipulação de arrays

A linguagem PHP oferece dezenas de funções para manipulação de arrays.


Uma lista completa dessas funções pode ser encontrada e explicada no site
oficial do PHP: http://www.php.net/manual/pt_BR/ref.array.php

30
Variáveis

Dentre as interessantes funções estão:

Função Descrição Exemplo de uso


array_ Procura por um valor <?
search em um array e retor- $array = array(0 => ‘blue’, 1 => ‘red’, 2 =>
‘green’, 3 => ‘red’);
na sua chave corres-
pondente caso seja $indice = array_search(‘green’, $array);
encontrado // A linha acima irá atribuir 2 a $indice;
$key = array_search(‘red’, $array);
// $key = 1;
?>
sort Ordena um array. <?
$frutas = array(“limao”, “laranja”, “bana-
na”, “melancia”);
sort($frutas);
?>
count Conta o número de <?
elementos de uma $frutas = array(“limao”, “laranja”, “bana-
na”, “melancia”);
variável, ou proprie-
echo count($frutas);
dades de um objeto. ?>

31
Programação para WEB

Resumo

Estudamos neste capítulo a utilização de variáveis, cuja sintaxe de uso para


nomes deve ser precedida pelo caractere $(cifrão). Foi possível observar que
a linguagem PHP é sensível a caixa, por isso, uma variável declarada com
nome $NOME é diferente de outra declarada com nome $Nome.

Vimos também:

a) 4 tipos básicos de variável que estão disponíveis na linguagem, são


elas boolean, integer, string e float.

b) como atribuir valores às variáveis criadas e no caso de strings até


como concatená-las bem como, estudamos as diferenças de quando se
usa aspas simples ou aspas duplas na atribuição de valores. e aprende-
mos a usar os caracteres de espace.

Na sequência aprendemos um tipo diferenciado de variável denominado


array, que ao invés de um valor, pode guardar uma série de valores. Este
novo tipo de variável tem algumas diferenças na criação e utilização e esses
aspectos foram abordados neste capítulo. Por fim vimos algumas funções
para manipularmos arrays, mas na verdade existem dezenas que auxiliam a
trabalhar com este tipo de dados.

Atividades de Aprendizagem

1. Qual é o caractere que deve preceder toda variável na linguagem PHP?

2. Se usarmos uma variável com nome $Variavel e outra com nome


$variavel quer dizer que estamos usando a mesma variável? Justifique!

3. Quais são os tipos básicos de variável disponíveis na linguagem PHP?

4. Qual a diferença entre um array e um tipo de variável simples?

5. Qual a função do PHP que ordena um array?

32
Variáveis

33
CAPÍTULO

4
OPERADORES
Objetivo

Nesta unidade você deverá reconhecer e


aplicar o uso de operador para fazer contas,
realizar comparações, concatenar strings e
outras na linguagem PHP.
Operadores

A sintaxe de operadores varia entre as linguagens de programação. A


seguir veremos como são utilizados em PHP. Observando a classifica-
ção separadamente.

4.1 Operadores Aritméticos

Leia a tabela abaixo. Nela você encontrará operadores aritméticos,


com um exemplo de uso:
Operador Nome Exemplo de uso
+ Adição $a + $b
- Subtração $a - $b
* Multiplicação $a * $b
/ Divisão $a / $b
% Módulo (resto da divisão) $a % $b
- Negação -$a

Tabela 1 - operadores aritméticos

Atenção: O operador módulo é o resto da divisão. Por exemplo, o mó-


dulo de 10 por 6 é igual a 4, pois se dividirmos 10 por 6 a parte inteira
do resultado é igual a 1 e o resto da divisão é 4.

O sinal de menos (-) quando usado à esquerda de uma variável sozi-


nha faz a negação da mesma, ou seja, age fazendo o oposto dela.

4.2 Operadores de Strings

São dois os operadores de String. O primeiro é o operador de conca-


tenação (‘.’), que retorna a concatenação dos seus argumentos direito
e esquerdo. O segundo é o operador de atribuição de concatenação
(‘.=’), que acrescenta o argumento do lado direito no argumento do
lado esquerdo. Veja os exemplos a seguir:

<?
$a = “Olá “;
$b = $a . “mundo!”; // agora $b contém “Olá mundo!”

$a = “Olá “;
$a .= “mundo!”; // agora $a contém “Olá mundo!”
?>

37
Programação para WEB

4.3 Operadores de Atribuição

O operador básico de atribuição é o sinal de igual (=). Isto quer dizer, na


verdade, que o operando da esquerda recebe o valor da expressão da direita.
Veja o exemplo:

<?
$a = “Olá”; // $a contém “Olá”
?>

Além do operador básico de atribuição, há “operadores combinados” para


todos os operadores aritméticos, de array e string que permitem que você
utilize um valor de uma expressão e então use seu próprio valor para o resul-
tado daquela expressão. Por exemplo:

<?
$a = 3;
$a += 5; // configura $a para 8, como se disséssemos: $a = $a + 5;
$b = “Bom “;
$b .= “Dia!”; // configura $b para “Bom Dia!”, como em $b = $b . “Dia!”;
?>

Como pode ser visto, os operadores combinados funcionam como uma


abreviação, deixando o código mais enxuto.

4.4 Operadores Lógicos

A tabela abaixo exibe os operadores lógicos existentes:

Operador Nome Uso Resultado


and E $a and $b Verdadeiro se tanto $a quanto $b são verdadeiros.
or OU $a or $b Verdadeiro se $a ou $b são verdadeiros.
xor XOR $a xor $b Verdadeiro se $a ou $b são verdadeiros, mas não ambos.
! NÃO ! $a Verdadeiro se $a não é verdadeiro.
&& E $a && $b Verdadeiro se tanto $a quanto $b são verdadeiros.
|| OU $a || $b Verdadeiro se $a ou $b são verdadeiros.
Tabela 2 - Operadores lógicos existentes

38
Operadores

O motivo para existir duas variantes dos operadores “E” e “OU”


é que eles operam com precedências diferentes. Em relação aos
operadores de atribuição, os operadores lógico and e or tem
menor precedência, enquanto que os operadores lógicos && e
|| tem maior.
Para mais informações, consulte a tabela
Na prática, será indiferente a utilização do um ou outro opera- de precedência do PHP em: http://www.
dor contanto, que o mesmo esteja dentro de parênteses. Veja o php.net/manual/pt_BR/language.opera-
tors.precedence.php
exemplo a seguir:

<?
$a = (true and false);
$b = (true && false);
?>

4.5 Operadores de Comparação

Operadores de comparação, como os seus nomes implicam, per-


mitem que você compare dois valores. Obseve, a tabela abaixo:
Operador Nome Uso Resultado
== Igual $a == $b Verdadeiro se $a é igual a $b.
=== Idêntico $a === $b Verdadeiro se $a é igual a $b, e eles são
do mesmo tipo.
!= Diferente $a != $b Verdadeiro se $a não é igual a $b.
<> Diferente $a <> $b Verdadeiro se $a não é igual a $b.
!== Não idêntico $a !== $b Verdadeiro de $a não é igual a $bb, ou
eles não são do mesmo tipo.
< Menor que $a < $b Verdadeiro se $a é estritamente menor
que $b.
> Maior que $a > $b Verdadeiro se $a é estritamente maior
que $b.
<= Menor igual $a <= $b Verdadeiro se $a é menor ou igual a $b.
>= Maior igual $a >= $b Verdadeiro se $a é maior ou igual a $b.
Tabela 3 - Operadores disponíveis em PHP

Atenção: Se você comparar um inteiro com uma string, a string é


convertida para um número. Se você comparar 2 strings numé-
ricas, elas serão comparadas como inteiras.

39
Programação para WEB

4.6 Operadores de incremento e decremento

O PHP suporta operadores de pré e pós-incremento e decremento no


estilo C.

Leia a tabela abaixo de operadores:


Operador Nome Uso Resultado
++ Pré-incremento ++$a Incrementa $a em um, e então retorna $a.
++ Pós-incremento $a++ Retorna $a, e então incrementa $a em um.
-- Pré-incremento --$a Decrementa $a em um, e então retorna $a.
++ Pós-incremento $a-- Retorna $a, e então decrementa $a em um.
Tabela 4 - Operadores

<?
echo “<h3>Pós-incremento</h3>”;
$a = 5;
echo “Deve ser 5: “ . $a++ . “<br />\n”;
echo “Deve ser 6: “ . $a . “<br />\n”;
É fundamental o entender o fun-
echo “<h3>Pré-incremento</h3>”;
cionamento do Pré e Pós-incre-
mento. A seguir, um exemplo $a = 5;
recuperado do próprio site oficial echo “Deve ser 6: “ . ++$a . “<br />\n”;
do PHP demonstra a diferença echo “Deve ser 6: “ . $a . “<br />\n”;
quando se utilizam os incremen-
tos nessas duas condições.
echo “<h3>Pós-decremento</h3>”;
$a = 5;
echo “Deve ser 5: “ . $a-- . “<br />\n”;
echo “Deve ser 4: “ . $a . “<br />\n”;

echo “<h3>Pré-decremento</h3>”;
$a = 5;
echo “Deve ser 4: “ . --$a . “<br />\n”;
echo “Deve ser 4: “ . $a . “<br />\n”;
?>

Agora que finalizamos os operadores em PHP, vamos iniciar os estudos


sobre controle e repetição.

40
Operadores

Resumo

Neste capítulo você foi informado que basicamente os operadores que


estão divididos em: Aritméticos, Strings, Atribuição, Lógicos, Compa-
ração e Incremento e decremento.

Através de exemplos você aprendeu a identificá-los e usá-los. Foi ex-


plicado na seção de operadores lógicos uma importante questão - a
procedência e uma questão importante de precedência foi explicada
na seção de operadores lógicos.

Atividades de Aprendizagem

1. Na linguagem PHP qual a função do operador aritmético % ?

2. Dê exemplos de utilização do operador de strings para concatena-


ção.

3. Existe diferença de se usar o operador lógico and e && ? Justifique!

4. Qual a diferença entre o uso do operador de comparação == e o


=== ?

5. Qual a diferença entre usar o operador de incremento antes e depois


da variável ? (Por exemplo: ++$a ou $a++)

41
CAPÍTULO

5
ESTRUTURAS DE CONTROLE
DE REPETIÇÃO
Objetivo

Nesta unidade você deverá aplicar o uso


de estruturas IF e FOR que permitem a de-
finição de fluxos em nossos programas.
Estruturas de controle e repetição

As estruturas de controle e repetição são obrigatórias nas linguagens de


programação. Elas incluem características que permitem a definição de
fluxos diferenciados na execução dos programas.

Como você sabe, as linguagens de programação executam sequencial-


mente as instruções contidas no código, por isso o uso de estruturas de
controle permite que exista mais de um fluxo para no mesmo código.

Observe: no código não é usado estrutura de controle ou repetição,


por isso o fluxo é único.

<?
$nome = “Igor”; //Instrução 1
$sobrenome = “ Mendonça”; //Instrução 2
echo “O nome do professor é “ . $nome . $sobrenome .
“<br />\n”; //Instrução 3
?>

A sequência de execução do código PHP acima pode ser representada


pelo fluxograma a seguir.

5.1 if (Se)

A primeira estrutura de controle, if, permite o desvio do fluxo no có-


digo a partir de uma condição.

45
Programação para WEB
A sintaxe de utilização é:

<?
instrução 0;
if (expressão) {
instrução 1;
} else {
instrução 2;
}
?>

Onde:
A Expressão é avaliada como valor booleano e caso seja verdadeiro (true)
a instrução 1 é executada, caso contrário (else) a instrução 2 é executada.
Acompanhe o fluxograma para o código PHP acima:

Comumente são utilizados Operadores de Comparação e Operadores Ló-


gicos para compor a expressão a ser usada na estrutura de controle if. A
seguir, alguns exemplos possíveis:
<?
$a = 0;
$b = 1;
$c = 2;
$d = 3;
if ($a > $b) {
echo ‘A é maior do que B<br />\n’;
} else {
echo ‘A não é maior do que B<br />\n’;
}
if (($a > $b) && ($c > $d)) {
echo ‘A é maior do que B e C é maior do que D<br />\n’;
} else {
echo ‘A não é maior do que B ou C não é maior do que D<br />\n’;
}
46 ?>
Estruturas de controle e repetição

As combinações para expressões são muitas, mas é importante lem-


brar que ao final o que vale é se o resultado da expressão é verdadeiro
ou falso.

5.2 switch

Esta estrutura de controle permite a execução de um bloco de instru-


ções caso encontre uma comparação verdadeira. A seguir, a sintaxe de
uso da estrutura de controle.

<?
switch ($i) {
case 0:
instrução 1;
break;
case 1:
instrução 2;
break;
case 2:
instrução 3;
break;
default:
instrução 4;
}
?>

Nesta estrutura, a variável $i será comparada com cada item case


até que a comparação seja válida, executando então as instruções do
item. Se nenhuma das comparações for verdadeira o bloco default
será executado. Acompanhe o fluxograma de execução desta instru-
ção.

47
Programação para WEB

O uso do switch não é restrito a números. É possível no case fazer


comparações com strings, por exemplo. A seguir um exemplo prático.

<?
switch ($i) {
case ‘maça’:
echo ‘A fruta escolhida foi maça’;
break;
case ‘banana’:
echo ‘A fruta escolhida foi banana’;
break;
case ‘pera’:
echo ‘A fruta escolhida foi pera’;
break;
default:
echo ‘Nenhuma fruta predefinida foi escolhida’;
}
?>

Importante: É necessário o uso da instrução break a cada bloco de


instruções para que as comparações subsequêntes não seja executa-
das.

5.3 while (Enquanto)


Este comando é uma estrutura de repetição, que executa um bloco de
instruções enquanto uma expressão for verdadeira. Veja a sintaxe:

<?
while (expressão) {
intrução 1;
intrução 2;
intrução 3;
}
?>
“loop infinito” é um termo usado
em computação para indicar que Esta estrutura de controle deve ser usada com muito cuidado. Isto por-
um programa ou código está
executando sem parar. que, se não manipularmos a variável usada na expressão o código fa-
talmente entrará em “loop infinito”. Neste caso, a expressão será sem-
pre verdadeira impedindo que a execução saia da estrutura do while.

O fluxograma de execução da estrutura de controle while é exibida a


seguir.

48
Estruturas de controle e repetição

Assim como na estrutura de controle if, a expressão utilizada para


while é avaliada como booleana, ou seja, terá como resposta Ver-
dadeiro ou Falso. Veja a seguir um exemplo que imprime na página a
sequência de números entre 1 e 10.

<?
$i = 1;
while ($i <= 10) {
echo $i . “ “;
$i++; //esta instrução incrementa a variável $i
}
// O resultado apresentado deverá ser como segue:
// 1 2 3 4 5 6 7 8 9 10
?>

Caso a linha que contém $i++; não existisse o código estaria em loop
infinito.

5.4 do .. while (faça enquanto)

Esta estrutura de repetição é muito semelhante a anterior, a grande


diferença é que nesta, as instruções do laço são executadas da primeira
vez (antes da validação da expressão). Veja a sintaxe a seguir:

<?
do {
intrução 1;
intrução 2;
intrução 3;
} while (expressão);
?>

49
Programação para WEB

O mesmo cuidado para não entrar em loop infinido deve ser tomado nesta
estrutura de repetição, pelo mesmo fato da expressão depender de modifi-
cações dentro do próprio loop. O fluxograma que representa esta estrutura
é exibido a seguir.

A instrução do funciona como um marcador, cuja posição é retomada no


fluxo de execução, se a expressão é verificada como verdadeira. A seguir um
exemplo de utilização para esta estrutura de repetição.

<?
$i = 1;
do {
echo $i . “ “;
$i++; //esta instrução incrementa a variável $i
} while ($i <= 10);
// O resultado apresentado deverá ser como segue:
// 1 2 3 4 5 6 7 8 9 10
?>

Analisando o exemplo acima e o exemplo dado para a estrutura while não


se nota diferença, isto porque os dois exibem na tela a sequência de números
do 1 até o 10.

Mas, e se a expressão for modificada nos dois exemplos de ($i <= 10) para
($i < 1)? Haverá diferença no que será exibido na tela?

Certamente que sim! Quando utilizamos o while e a expressão é falsa na


primeira execução o fluxo do programa nem chega a executar as instruções
contidas no nele, enquanto que com a utilização de do .. while, inde-
50 pendente da expressão ser falsa ou verdadeira as instruções são executadas
Estruturas de controle e repetição

ao menos uma vez. Observe os exemplos e seus respectivos fluxos de


execução.

<? <?
//Exemplo com while //Exemplo com do while
$i = 1; $i = 1;
while ($i < 1) { do {
echo $i . “ “; echo $i . “ “;
$i++; //esta instrução incrementa a $i++;
variável $i } while ($i < 1);
} ?>
?>

No fluxograma, os itens pintados foram executados e as setas indicam


o fluxo percorrido no programa.

5.5 for (Para)

Esta estrutura de repetição é usada, principalmente, quando se deseja


um número predeterminado de iterações, mas não fica restrita a este
propósito e pela sua sintaxe percebe-se isso.

<?
for (expressão 1; expressão 2; expressão 3) {
instrução 1;
instrução 2;
}
?>

51
Programação para WEB

Onde,
A expressão 1 é executada somente na primeira iteração.
A expressão 2 é avaliada como booleana a cada iteração e se o valor resul-
tante for verdadeiro as instruções são executadas novamente.
A expressão 3 é executada ao final de cada iteração.

Desta forma o fluxograma de execução para esta estrutura de repetição fica


como exibido a seguir.

Como mencionado antes, o principal uso se dá para um número de repeti-


ções determinado. A seguir um exemplo de uso desta estrutura de repetição.

<?
for ($i = 1; $i <= 10; $i++) {
echo $i . “ “;
}
// O resultado apresentado deverá ser como segue:
// 1 2 3 4 5 6 7 8 9 10
?>

5.6 foreach (Para cada)

Esta estrutura de repetição foi criada para trabalhar exclusivamente com ar-
rays. Apesar de ser possível usar o for comum para executar a mesma tare-
fa, esta estrutura de repetição para arrays torna os códigos mais entendíveis,
apesar de um pouco complexa para entender na primeira vez.

A seguir, a sintaxe de uso.

52
Estruturas de controle e repetição

<?
foreach ($array as $valor) {
instrução;
}
?>

A estrutura foreach irá repetir a instrução a quantidade de vezes


correspondente ao número de itens do array.

Ficou confuso? Acredito que com um exemplo será mais fácil entender.

Suponha que temos um array com 3 itens, por exemplo o array criado
pela instrução a seguir:

$meu_array = array(2, 3, 5);

Se usarmos o foreach nesta array teremos a execução da instrução


3 vezes. Veja o exemplo:

<?
$meu_array = array(2, 3, 5); //definição do array
foreach($meu_array as $valor) {
echo “OK “;
}
//O resultado será como segue:
//OK OK OK
?>

Mas a variável $valor não está incluída à toa. Como a estrutura repe-
te a quantidade de vezes do número de itens, em cada repetição esta
variável $valor receberá o valor correspondente do item. Se fizermos
uma simples modificação no exemplo acima poderemos entender me-
lhor, veja:

<?
$meu_array = array(2, 3, 5); //definição do array
foreach($meu_array as $valor) {
echo “ Valor:” . $valor;
}
//O resultado será como segue:
// Valor:2 Valor:3 Valor:5
?>

São três itens, portanto são três iterações. Na primeira iteração a va-
riável $valor recebeu o número 2, na segunda iteração recebeu o
número 3 e na última recebeu o número 5.
53
Programação para WEB

É importante entender o funcionamento desta estrutura de repetição, pois


arrays são usados constantemente.

5.7 break e continue

Estas duas instruções podem ser utilizadas dentro das estruturas de repetição
apresentadas até agora. A primeira, break, interrompe o loop e desvia o
fluxo de execução para a linha exatamente após o fim do loop. A segunda
instrução é semelhante à primeira, com a diferença de desviar o fluxo para a
condição da estrutura de repetição.

O funcionamento destas instruções será ilustrado com exemplos.

Exemplo de break.

<?
for ($i = 1; $i <= 10; $i++) {
if($i = 5) {
echo “ - Parar “;
break;
}
echo $i . “ “;
}
// O resultado apresentado deverá ser como segue:
// 1 2 3 4 - Parar
?>

Exemplo de continue.

<?
for ($i = 1; $i <= 10; $i++) {
if($i = 5) {
echo “ - Não irá exibir o cinco - “;
continue;
}
echo $i . “ “;
}
// O resultado apresentado deverá ser como segue:
// 1 2 3 4 - Não irá exibir o cinco - 6 7 8 9 10
?>

54
Estruturas de controle e repetição

Resumo

Neste capítulo, acabamos de focalizar o uso das estruturas de controle


e repetição. Estas estruturas são importantes para a definição de fluxos
em nossos programas.

Com as duas estruturas de controle if e switch pudemos ver


como é possível alterar o fluxo do nosso programa diante de
uma condição.

Através das estruturas de repetição, aprendemos como criar a execu-


ção de várias instruções diante de uma condição. Vimos também que,
apesar de parecidas, cada uma delas se encaixa melhor em certas oca-
siões. Lembre-se que são duas instruções a serem usadas dentro das
estruturas de repetição: uma que interrompe totalmente a estrutura e
outra que interrompe somente o atual ciclo.

Ao final precisamos lembrar que uma condição mal escrita pode


ocasionar um “loop infinito”, uma situação da qual devemos fu-
gir sempre!

Atividades de Aprendizagem

1. Em que situações é melhor usar a estrutura de controle if do que


usar o switch?

2. Qual a diferença entre a estrutura de repetição do..while e a


while?

3. Ilustre uma situação de uso de estrutura de repetição while onde o


uso de do..while não resolveria? Justique?

4. Mostre, através de uma situação real, o uso da estrutura de repetição


for.

5. Qual o propósito de criação da estrutura de repetição foreach?

55
CAPÍTULO

6
INCLUDE E REQUIRE
Objetivo
Nesta unidade você deverá usar uma instru-
ção do PHP que permite a inclusão de trechos
de código em diversas partes ou arquivos de
um site, bem como, reconhecer as vantagens
de não precisar reescrever trechos usados
em diversas partes do site e o uso de funções
compartilhadas por todas as páginas.
Include e Require

Veremos agora um importante recurso disponível em PHP, que auxilia


tanto na organização do código quanto nos benefícios que agrega.

Quando desenvolvemos uma homepage utilizando somente a


linguagem HTML somos obrigados a criar um arquivo para cada
página, mas é fácil perceber que em uma homepage diversas
áreas se repetem em todas as páginas, por exemplo o topo, ro-
dapé e menus.

Levando a situação acima em consideração e o fato de que até pe-


quenos projetos contém pelo menos uma dezena de páginas, como
deverei proceder para modificar um menu ou o topo que é igual em
todas as páginas?

Você acertou se a sua resposta foi: abrir cada página no seu edi-
tor preferido e modificá-las da mesma maneira.

O ideal não seria modificar apenas uma vez e todas as páginas segui-
rem o conteúdo modificado? Acredite, isto é possível com o uso de
include ou require.

Basicamente, estes comandos adicionam numa página o conteúdo de


outro arquivo. Vamos fazer um exercício prático para entender melhor.
Para isso, criaremos dois arquivos. Primeiramente vamos criar um ar-
quivo PHP com o nome inc.php e definir uma variável que desejamos
usar em várias páginas.

<?
//inc.php
$professor = ‘Igor Mendonça’;
$professorC
?>

A seguir, iremos criar o segundo arquivo, onde adicionaremos a página


anteriormente criada para usar o que há disponível nela.

<?
//pagina.php
include(‘inc.php’);
echo ‘<p>O nome do professor da disciplina de Programa-
ção para Web é ‘ . $professor . ‘</p>’;
echo ‘<p>O professor ‘ . $professorC . ‘ também ministra
a disciplina Desenvolvimento de Homepages’;
?> 59
Programação para WEB

ATENÇÃO! No último arquivo não foram atribuídos nomes nas variáveis


existentes, mas como existe um include para o arquivo inc.php e nele há
esta atribuição, em pagina.php os nomes estarão disponíveis através das va-
riáveis. Você pode analisar o exemplo e imaginar que seria mais simples se
tivéssemos incluído o nome direto na página.

Mas imagine, se ao invés do nome aparecer somente em uma página,


ele aparecesse em centenas de páginas da homepage! O que seria ne-
cessário para modificar em todas as páginas o nome do professor, por
exemplo? Resposta: Abrir todas as páginas e modificar uma a uma o
nome do professor. Com o uso do recurso acima, o procedimento se-
ria abrir somente o arquivo inc.php e modificar as variáveis atribuindo
o nome do novo professor. Mais fácil, não é mesmo?

Da mesma forma, este recurso deve ser usado para incluir partes de código
que são utilizados em várias páginas da sua homepage.

Não vimos o uso da função require, mas ela trabalha similarmente


a função include. Existe uma diferença entre elas, no caso do arqui-
vo indicado para inclusão não existir, include o fluxo de execução
continue exibido um aviso. No caso do require o aviso é exibido e o
fluxo do programa é interrompido.

60
Include e Require

Resumo

Acabamos de estudar um importante recurso da linguagem PHP que


permite: maior produtividade no desenvolvimento de aplicações. O
uso de include e require, que permite a criação de arquivos com
trechos de código para serem usados em diversos locais da aplicação.

Atividades de Aprendizagem

1. Quais os benefícios da utilização de include e require?

2. Qual é a diferença que podemos destacar entre o uso de include


e require?

61
CAPÍTULO

7
TRABALHANDO COM
DADOS DE FORMULÁRIO
Objetivo
Nesta unidade você deverá aprender a
utilizar recursos para a recuperação dos
dados submetidos pelos usuários do site
através de formulários HTML, tais como, a
submissão de cadastros e/ou um formulá-
rio de contato da página
Trabalhando com dados de formulário

Na programação para a Internet, a interação entre o programa e


o usuário ocorre de maneira diferente daquela utilizada quando
estamos programando para ambientes Desktop.

Em um programa instalado no computador (ambiente


Desktop), o programa recebe os dados do usuário direta-
mente em sua interface, sejam em cliques do mouse ou
através de campos em cadastros.

Já na programação para a Internet, normalmente a pessoa pre-


enche todos os dados necessários para execução de alguma ta-
refa, e ao final, submete esses dados através de um formulário
para a página.

Esta interação entre o usuário da página e o servidor se dá


pela integração de HTML com a linguagem de programa-
ção quando então o HTML estará fornecendo os formulá-
rios e as linguagens de programação estarão executando
alguma lógica ao utilizar os dados enviados. Por isso, é um
requisito das linguagens de programação trabalhar com da-
dos vindos de formulários.

Na figura a seguir é ilustrado como se dá o fluxo de informação


entre o usuário e o Servidor Web.

Apesar dos dados não estarem visíveis


na URL com o uso do método “POST”,
isto não significa que os dados serão
transmitidos com segurança contra a ex-
posição dos dados. Com simples uso do
HTTP, os dois métodos expõem os dados
na Internet por trafegarem os dados em
ATENÇÃO! A maneira como os dados são submetidos por texto plano.

um formulário ao servidor Web se distingue em dois méto-


dos: POST e GET.

Como já visto na disciplina de Desenvolvimento de Homepages,


ao criar um formulário em HTML podemos indicar um dos dois
métodos: “POST” ou “GET” para envio dos dados.

65
Programação para WEB
A diferença básica entre os métodos, além do limite de dados no uso
do método GET, é que neste último os dados são enviados na própria
URL da página enquanto que com o uso do método “POST” os dados
ficam ocultos para o usuário.

A seguir, um exemplo de dados submetidos com o método “GET”:

Note que o endereço da página vai até o ponto de interrogação (?), a se-
guir os dados do método “GET”. Os parâmetros são divididos aos pares
(chave=valor) e separados uns dos outros pelo caractere & (e comercial).
Descrevendo os itens da URL da figura temos:
Código Descrição
http://ead.ifsc.edu.br/etec/user/index.php Endereço da página
contextid=20 Onde a chave é contextid e o valor é 20
roleid=0 Onde a chave é roleid e o valor é 0
id=15 Onde a chave é id e o valor é 15
group= Onde a chave é group e não possui valor
perpage=20 Onde a chave é perpage e o valor é 20
search= Onde a chave é search e não possui valor
sifirst=G Onde a chave é sifirst e o valor é G
Importante: A linguagem PHP possui recursos para recuperar e utilizar
os dados enviados pelo navegador, seja pelo método “POST” ou pelo
método “GET”.

7.1 Recuperando dados do formulário

Ao receber os dados enviados por um formulário, o PHP processa e cria um


array com os dados enviados e é identificado pela variável $_GET, no caso
do envio pelo método “GET” ou pela variável $_POST, no caso do uso do
método “POST”.

Cada item do formulário é identificado neste array com o nome com o


qual foi criado. Por exemplo, se no formulário HTML, cujo método de
envio foi “POST”, você criar um campo de texto com o nome cpf, na
página PHP que receber o formulário existirá o seguinte item do array
contendo o valor preenchido neste campo: $_POST[‘cpf’].
66
Trabalhando com dados de formulário
Vamos agora utilizar um exemplo prático para o uso do formu-
lário para processamento de alguma informação? O exemplo é
uma calculadora que simplesmente soma dois números. Para
isso, vamos precisar de dois arquivos, um com o formulário
HTML e outro com a página PHP que irá executar o processa-
mento das informações.
<!-- Salvar com nome soma.html - Página HTML -->
<html>
<head><title>Somando dois n&uacute;meros</title></head>
<body>
<h1>Somando dois n&uacute;meros</h1>
<form name=”formSoma” method=”post” action=”soma.php”>
<label for=”soma”>Soma: </label>
<input type=”text” name=”num1” size=”4”>+<input type=”text”
name=”num2” size=”4”>
<input type=”submit” name=”submit” value=”Somar” />
</form>
</body>
</html>

O resultado do formulário acima deverá ser parecido com o exi-


bido na figura a seguir.

Note que no elemento form do código HTML a propriedade


Este exemplo da soma é puramente
action aponta para a página soma.php, precisamos então criar didático, num cenário real os dados
esta página para receber os dados do formulário. Note também, vindos de um formulário devem
passar por um tratamento contra
que o método que estamos utilizando é o “POST”. A seguir o injeção de código.
código para a página PHP que irá recuperar os dados do formu-
lário, fazer a soma e exibir na página o resultado.
<!-- Salvar com nome soma.php - Página PHP -->
<html>
<head><title>Resultado da soma</title></head>
<body>
<h1>Resultado da soma</h1>
<?
$resultadoSoma = $_POST[‘num1’] + $_POST[‘num2’];
echo ‘O resultado da soma &eacute;: <strong>’ .
$resultadoSoma . ‘</strong>’;
?>
</body>
</html>

67
Programação para WEB

Agora, tente duplicar o exemplo só que utilizando o método “GET”. Não


esqueça de modificar tanto o formulário quanto a página PHP para receber
o parâmetro corretamente.

Resumo

Neste capítulo vimos como o PHP recupera as informações passadas através


de um formulário ou pela URL da página. Este recurso permite o envio de
dados dos usuários do site.

É importante lembrar que é sempre necessário tratar os dados enviados pe-


los usuários, eles nunca devem ser manipulados diretamente.

Atividades de Aprendizagem

1. Qual a sintaxe para recuperar o valor preenchido em um campo do formu-


lário cujo nome seja carro e o mesmo tenha sido enviado usando o método
POST?

2. Qual a sintaxe para recuperar o valor de uma variável cujo nome seja id
e o mesmo tenha sido enviado na URL da página?

3. Porque é importante tratar os dados vindo de formulários ou URL da


página?

68
Trabalhando com dados de formulário

69
CAPÍTULO

8
TRABALHANDO
COM SESSÕES
Objetivo

Nesta unidade você deverá compreender


que com o uso de sessões é possível fazer o
tratamento individual de cada usuário que
acessa um site desenvolvido em PHP.
Trabalhando com sessões

O suporte para as sessões no PHP consiste em uma maneira


de preservar certos dados através de acessos subsequentes. Isto
permite aplicações mais personalizadas.

Um visitante acessando a sua homepage ganha um identi-


ficador único, chamado id de sessão. Este id é salvo em um
cookie do lado do usuário ou propagado via URL.

O suporte a sessão permite a você registrar um número arbitrário Um cookie é um pequeno texto que os
de variáveis que serão preservadas entre as requisições. Quando sites podem enviar aos navegadores,
um visitante acessar o seu site, o PHP irá conferir quando um id anexado a qualquer conexão. Nas visitas
posteriores o navegador reenvia os dados
de sessão específico for enviado com a requisição. Se este for o para o servidor dono do cookie.
caso, o ambiente anteriormente salvo é recriado.

Existem diversas formas de criar variáveis de sessão, vere-


mos a seguir um exemplo simples de atribuição e recupe-
ração dos dados.

Assim como em formulários, os PHP usa uma variável global,


denominada $_SESSION para armazenar os dados de sessão.
Então, para atribuir um valor a uma variável de sessão podemos
usar a seguinte sintaxe:

<?
//Iniciando a sessão
session_start();
$_SESSION[‘variavel’]=’Texto a armazenar’;
?>

Onde,

O session_start() inicia o uso de sessão na página. Este


comando é obrigatório para todas as páginas que forem utilizar
sessões;

$_SESSION é o identificador global para sessões;


variavel é o índice sob o qual será armazenado um valor e
‘Texto a armazenar’ é o valor atribuído a variável de
sessão.

Este texto armazenado pode ser usado em qualquer página da


homepage seguindo a seguinte sintaxe.

<?
//Iniciando a sessão
session_start();
echo $_SESSION[‘variavel’]; 73
?>
Programação para WEB

Veremos a seguir, um exemplo prático de utilização de sessão cuja quantida-


de de acessos do usuário a diferentes páginas é exibida. Vamos precisar de
dois arquivos, crie primeiro o arquivo pag1.php.

<?
//Salvar com nome pag1.php
//Iniciando a sessão
session_start();
$_SESSION[‘pag1’]+=1;
$_SESSION[‘pag2’]+=0;
?>
<html>
<head><title>P&aacute;gina Um</title></head>
<body>
<h1>P&aacute;gina Um</h1>
<?
echo ‘<p>Voc&ecirc; acessou a p&aacute;gina Um ‘ .
$_SESSION[‘pag1’] . ‘ vez(es)</p>’;
echo ‘<p>Voc&ecirc; acessou a p&aacute;gina Dois ‘
. $_SESSION[‘pag2’] . ‘ vez(es)</p>’;
?>
<p><a href=”pag2.php”>P&aacute;gina Dois</a></p>
</body>
</html>

Na sequência o arquivo pag2.php

<?
//Salvar com nome pag2.php
//Iniciando a sessão
session_start();
$_SESSION[‘pag1’]+=0;
$_SESSION[‘pag2’]+=1;
?>
<html>
<head><title>P&aacute;gina Dois</title></head>
<body>
<h1>P&aacute;gina Dois</h1>
<?
echo ‘<p>Voc&ecirc; acessou a p&aacute;gina Um ‘ .
$_SESSION[‘pag1’] . ‘ vez(es)</p>’;
echo ‘<p>Voc&ecirc; acessou a p&aacute;gina Dois ‘
. $_SESSION[‘pag2’] . ‘ vez(es)</p>’;
?>
<p><a href=”pag1.php”>P&aacute;gina Um</a></p>
</body>
</html>

74
Trabalhando com sessões

Ao navegar pelos dois arquivos, você verá que as informações da ses-


são estão disponíveis para as duas páginas. Também estariam dispo-
níveis para quaisquer outras página que iniciassem a sessão com a
função session_start().

Mas, atenção! Os dados de sessão não ficam armazenados para con-


sultas futuras. Quando o usuário deixa de interagir com a homepage
por um longo período, os dados que estavam armazenados na sessão
serão perdidos. Por isso, devemos tomar cuidado com a utilização do
recurso de sessão.

Resumo

Você acabou de aprender que o uso de sessões permite a criação de


aplicações mais personalizadas ao usuário, simplesmente porque atra-
vés delas podemos identificar cada usuário. Através do uso deste re-
curso é possível armazenar em variáveis do servidor dados de cada
usuário que está acessando a homepage ou a aplicação. O exemplo
visto neste capítulo auxiliou a identificação de uma aplicação prática
do uso de sessões. É importante lembrar que os dados armazenados
durante a sessão serão perdidos caso a sessão expire ou o usuário
abandone o site.

Atividades de Aprendizagem

1. Qual a instrução obrigatória para início de sessão nas páginas?

2. Qual a sintaxe para atribuir um valor a uma variável de sessão?

3. Cite exemplos onde a aplicação de sessões é desejável?

75
CAPÍTULO

9
FUNÇÕES EM PHP
Objetivo
Nesta unidade você deverá reconhecer que
o uso de funções traz inúmeras vantagens
porque permite a reutilização de código e
verificar a possibilidade do uso de funções
com e/ou sem retorno na linguagem PHP.
Funções em PHP

Como em qualquer linguagem de programação, em PHP é pos-


sível a criação e uso de funções. O uso deste recurso é espe-
cialmente interessante quando integrado ao uso de include e
require, isto porque, além de agrupar diversos tipos de fun-
ções, é possível segmentar partes do código que são usados em
todas as páginas da homepage.

É possível criar um arquivo com diversas funções que retor-


nem ou imprimam na página um trecho de código HTML.
Nas páginas que estas funções forem usadas é somente
necessário que este arquivo seja incluído com o uso de
include ou require. Da mesma forma, um arquivo
com funções para manipulação de dados com o banco de
dados ou funções de validação podem estar agrupadas e
serem usadas nas diversas páginas da homepage quando
necessárias.

Em PHP é possível criar dois tipos de funções:


1- com retorno
2- sem retorno

Os dois tipos podem ainda receber parâmetros de entrada (ou


não). A seguir, veremos exemplos desses dois tipos de funções e
como elas são invocadas no código PHP.

As funções com retorno sempre retornam com algum valor,


ao passo que as funções sem retorno não retornam dados e
são também conhecidas pelo nome de procedimento.

Inicialmente iremos criar um arquivo PHP, cujo nome será fun-


cao1.php, que conterá uma função com retorno e a invocação
da mesma. A função criada retorna “Bom dia!”, “Boa tarde!” ou
“Boa noite!” dependendo do horário do dia que a pessoa esteja
acessando a página e os dados de hora e minutos.

79
Programação para WEB

01 <?
02 //Salvar com nome funcao1.php
03 //Função de saudação
04 function saudacao() {
05 //Verifica que horas é para decidir a saudação
06 $horasdodia = date(‘H’);
07 if($horasdodia < 12) $txtsaudacao = ‘Bom dia!’;
08 if(($horasdodia >= 12) and ($horasdodia < 19)) $txtsaudacao = ‘Boa tarde!’;
09 if($horasdodia >= 19) $txtsaudacao = ‘Boa noite!’;
10 return($txtsaudacao . ‘ Agora &eacute; ‘ . date(‘H:i’));
11 }
12 ?>
13 <html>
14 <head><title>P&aacute;gina com Sauda&ccedil;&atilde;o</title></head>
15 <body>
16 <h1>P&aacute;gina com Sauda&ccedil;&atilde;o</h1>
17 Ol&aacute; usu&aacute;rio,
18 <?
19 $textosaudacao = saudacao();
20 echo $textosaudacao;
21 ?>
22 </body>
23 </html>

Como pode ser visto no código acima, na linha 04 é criada uma função
cujo nome é saudacao e não recebe parâmetros de entrada: function
saudacao(). Este é um bom exemplo de função que não necessita de pa-
râmetros, pois utiliza funções do sistema (recuperação da hora na linha 06)
para realizar algum processamento. Na linha 19 a função é invocada e o seu
retorno é incluído na variável $textosaudacao, na sequência (linha 20)
sendo impressa na página com o uso da função echo.

Nosso próximo exemplo aborda uma função sem retorno, mas recebe
um parâmetro, salve o arquivo com o nome funcao2.php e teste-o.

Este exemplo de função simplesmente imprime na tela algumas informa-


ções e assim como o exemplo anterior poderia usar funções do sistema para
aplicar algum processamento. Suas principais diferenças que na função não
existe a instrução para retorno de função (return) e a maneira como é feita
a invocação da função (linha 12), pois como não há retorno de informação,
também não é necessário a variável usada no exemplo anterior.

80
Funções em PHP

01 <?
02 //Salvar com nome funcao2.php
03 //Função para título
04 function titulo($txttitulo) {
05 echo ‘<hr /><h1>’ . $txttitulo . ‘</h1><hr />’;
06 }
07 ?>
08 <html>
09 <head><title>T&iacute;tulo da p&aacute;gina</title></head>
10 <body>
11 <?
12 titulo(‘T&iacute;tulo da p&aacute;gina’);
13 ?>
14 <p>Aqui n&atilde;o estou usando fun&ccedil;&atilde;o!</p>
15 </body>
16 </html>

Quando se faz o uso correto de funções, o código fica mais organizado


e de fácil manutenção, ainda mais quando as funções estão agrupadas
em arquivos.

Uma boa prática é agrupar as funções pelo tipo de operação e


frequência com que são executadas numa mesma página, assim,
além de facilitar a localização de determinadas funções, fica mais
fácil incluir (include ou require) somente as funções que
serão usadas, aumentando o desempenho da aplicação.

Com isso, fechamos o assunto sobre funções!

81
Programação para WEB

Resumo

Neste capítulo foi abordado que o uso de funções, aliados ao uso de


include e require, permite a modularização e o uso apropriado de re-
cursos em diversas páginas de uma homepage.

Vimos também que as funções estão divididas em dois grupos (funções com
retorno e funções sem retorno) e que elas podem receber parâmetros de en-
trada. Os exemplos mostram como fazer uso destes recursos.

Atividades de Aprendizagem
1. Crie uma função que receba um valor string como parâmetro e retorne a
mesma string concatenada com o seguinte valor ao final “ - teste”

2. Crie uma função que receba dois parâmetros de entrada de valor inteiro e
imprima na tela a soma dos dois valores. Esta função deve ser sem retorno.

3. Em seu ponto de visto, quais os benefícios do uso de funções?

82
Funções em PHP

83
CAPÍTULO

10
INTEGRAÇÃO COM
O BANCO DE DADOS
Objetivo
Nesta unidade você deverá ser capaz de
identificar como se da a integração da lin-
guagem PHP com Banco de Dados MySQL,
bem como, realizar as funções básicas, listar
os registros armazenados no Banco de Dados
com a finalidade de incluir novos, atualizar
ou deletar registros existentes.
Integração com Banco de dados

Sem sombra de dúvidas, o uso de Banco de Dados é um recur-


so indispensável para a maioria da aplicações os casos onde é
necessário criar uma base para simplesmente exibir notícias aos
usuários da sua homepage aos complexos sistemas de compras
on-line.

A linguagem PHP não fica de fora e fornece recursos para


acesso aos principais Bancos de Dados usados atualmente,
como:
• Mysql
• Interbase/Firebird
• Postgre
• Oracle
• outros utilizando ADO

Não iremos aprender a usar todos estes Bancos de Dados em


PHP, mas os conceitos que veremos se aplicam a Bancos de
Dados em geral. Por isso, vamos estudar os conceitos, e então,
abordar o uso do Banco de Dados MySQL.

Antes de iniciar os comandos é importante termos em men-


te os passos necessários para o uso de Banco de Dados na
linguagem PHP.

Antes de mais nada é necessário que se tenha dados de acesso


ao Banco de Dados que desejamos usar em nossa aplicação.
Esses dados poderão ser conseguidos com o DBA do Banco de
Dados, quando existir um, ou pelo provedor de serviço, quan- DBA - Administrador do banco de dados
(do inglês - Database Administrator)
do o Banco de Dados for contratado como um serviço ou você
mesmo deve ter criado no caso de ser o próprio administrador
do sistema cujo Banco de Dados estiver instalado.

Os passos para usar o Banco de Dados são:


1- Abrir a conexão com o Banco de Dados
2- Executar as operações na conexão aberta
3- Liberar o resultado da memória
4- Fechar a conexão

Os passos 3 e 4 não são obrigatórios, mas fazem parte das boas


práticas. A não obrigatoriedade se dá pelo fato dessas etapas
ocorrerem automaticamente ao final da execução do script.

87
Programação para WEB

10.1 Configurando uma conexão com banco de dados

A conexão com o Banco de Dados MySQL se faz com o uso da seguinte


instrução:

$conexao = mysql_connect(‘SERVIDOR’,’USUÁRIO’,’SENHA’);

Onde,

$conexao é a variável que identificará esta conexão aberta com o Banco


de Dados.

mysql_connect é a função que realiza a conexão com o Banco de Da-


dos.

SERVIDOR é o endereço onde está o servidor de Banco de Dados. Pode ser


um número IP, um host ou a própria máquina local (localhost).

USUÁRIO é o nome de usuário criado no Banco de Dados com as respecti-


vas permissões de acesso.

SENHA é a senha criada para o usuário informado no parâmetro anterior.

O próximo passo, após o estabelecimento da conexão com o Banco de Da-


dos, é selecionar qual base de dados desejamos usar.

10.2 Escolhendo uma Base de Dados

Um Banco de Dados pode possuir mais de uma Base de informações. Estas


Bases, também chamadas de Bases de Dados são identificadas por um nome
único e tem suas próprias políticas de acesso e controle.

O comando para selecionar qual Base de Dados desejamos usar na página


é exibido a seguir.

mysql_select_db(‘BASE DE DADOS’, $conexao);

Onde,

mysql_select_db é a função que executa a seleção da Base de Dados


informada pelos parâmetros.

88
Integração com Banco de dados

BASE DE DADOS é o nome, de identificação única, da base de


dados que desejamos utilizar.

$conexao é a variável que armazena a identificação da cone-


xão, deve ser a mesma usada no comando mysql_connect.

Com estes dois comandos (mysql_connect e mysql_se-


lect_db) temos então uma conexão com o Banco de Dados
aberta e a Base de Dados selecionada. O próximo passo é exe-
cutar as operações no Banco de Dados usando as tabelas, views,
procedimentos etc. Note que as operações possíveis são as permi-
tidas ao usuário informado durante a conexão com o Banco de
Dados.

10.3 Realizando uma consulta

Realizar uma consulta é uma das operações mais simples a se


executar em um Banco de Dados. Em PHP existe diversas for-
mas de se fazer. Veremos uma delas. É importante que tenhamos
aprendido bem o uso de arrays, porque o resultado das nossas
consultas estarão neste tipo de variável.

O comando PHP que faz a consulta ao Banco de Dados é o mys-


ql_query(SQL), onde SQL é a consulta que desejamos en-
viar ao Banco de Dados.

A sintaxe de utilização é:

$resultado = mysql_query(SQL);
A variável $resultado irá receber false como resposta se a con-
sulta não for bem sucedida ou receberá um resource caso seja. resourse é um objeto do PHP
Este resource precisará ainda ser transformado num tipo que seja que retém informações sobre um
determinado recurso.
possível a manipulação. Como dito antes, usaremos um comando
para que este resultado seja um array. O comando para executar
essa operação é mysql_fetch_array(resource), cujo pa-
râmetro é o recurso criado com a instrução mysql_query(). A
sintaxe ficaria como segue.
$arrayResultado = mysql_fetch_array($resultado);

Outra informação importante, que normalmente precisamos, é a

89
Programação para WEB
quantidade de registros a consulta retornou. Ela pode ser obtida pela seguin-
te instrução.

$qtdeRegistros = mysql_num_rows(resource );
Onde,
$qtdeRegistros receberá a quantidade de registros que a consulta re-
tornou.

mysql_num_rows é a instrução que retorna a quantidade de registros de


uma consulta.

resource deve ser a variável que recebeu a resposta do comando


mysql_query.

Usando as instruções apresentadas até agora, mais um estrutura de repetição


já é possível mostrar numa página o resultado de uma consulta no Banco de
Dados. É o que faremos a seguir.

Considerando que o Diagrama de Entidade-Relacionamento (DER) a seguir


tenha sido mapeado e implementado como uma tabela num Banco de Da-
dos MySQL, iremos construir uma página que liste os itens desta tabela na
tela.

Como sabemos é necessário ter em mãos algumas informações, por isso


seguem de forma tabular:
Informações Dados
Endereço do Banco de Dados localhost
Nome de usuário para o Banco de Dados user
Senha para o usuário S3nh4
Nome da Base de Dados que desejamos usar carros
Agora com estas informações em mãos já é possível criar uma página que
irá se conectar ao Banco de Dados. Precisamos então, baseados no DER
apresentado, criar a instrução SQL para consulta a tabela.

O DER apresentado mostra somente uma entidade, chamada Carro, que


90 possui alguns atributos. Iremos aplicar uma consulta para exibir todos os
Integração com Banco de dados

itens desta entidade (tabela). Veja a instrução SQL criada com este ob-
jetivo sendo exibida a seguir.

SELECT id_carro, marca, modelo, cor, ano FROM Carro

Usando essas informações criaremos a página para exibir o resultado.


01 <?
02 //Salvar com nome listCarro.php
03 ?>
04 <html>
05 <head><title>Listar Carros</title></head>
06 <body>
07 <h1>Listar Carros</h1>
08 <?
09 //Abrir conexão com Banco de Dados
10 $conexao = mysql_connect(‘localhost’,’user11’,’S3nh4’);
11 //Selecionar a Base de Dados
12 mysql_select_db(‘Carros’, $conexao);
13 //Enviar a consulta
14 $resultado = mysql_query(‘SELECT id_carro, marca, modelo, cor, ano FROM Carro’);
15 //Recuperar o número de registros encontrados
16 $qtdeRegistros = mysql_num_rows($resultado);
17 //Imprimir na tela os resultados
18 if($qtdeRegistros>0) echo ‘<p>Foram encontrados ‘ . $qtdeRegistros . ‘ registros</p>
19 <h2>Ve&iacute;culos</h2><hr />’;
20 else echo ‘Não foram encontrados registros’;
21 while($arrayResultado = mysql_fetch_array($resultado)) {
22 echo ‘<p>Identifica&ccedil;&atilde;o do ve&iacute;culo: ‘.
23 $arrayResultado[‘id_carro’] . ‘</p>’;
24 echo ‘<p>Marca: ‘ . $arrayResultado[‘marca’] . ‘</p>’;
25 echo ‘<p>Modelo: ‘ . $arrayResultado[‘modelo’] . ‘</p>’;
26 echo ‘<p>Cor: ‘ . $arrayResultado[‘cor’] . ‘</p>’;
27 echo ‘<p>Ano: ‘ . $arrayResultado[‘ano’] . ‘</p><hr />’;
28 }
29 //Liberar a consulta da memória
30 mysql_free_result($resultado);
31 //Fechar a conexão com o Banco de Dados
32 mysql_close($conexao);
33
34 ?>
35 </body>
36 </html>

91
Programação para WEB
Como mencionado antes, após abrir a conexão com o Banco de Dados, sele-
cionar a Base que desejamos usar e enviar a consulta, recebemos um recurso
como resposta. Este recurso é então usado, juntamente com uma estrutura
de repetição (linha 21), que irá criar um array (usando a função mysql_fe-
tch_array) para cada registro da consulta enviada. Esta estrutura de repe-
tição irá se repetir enquanto houver registros no recurso.

Caso desejarmos exibir somente um registro, não seria necessário o uso da


estrutura de repetição while. O exemplo a seguir exibirá na tela somente o
registro cujo id_carro seja 1.
01 <?
02 //Salvar com nome viewCarro.php
03 ?>
04 <html>
05 <head><title>Ver Carro</title></head>
06 <body>
07 <h1>Ver Carro</h1>
08 <?
09 $idCarro = 1;
10 //Abrir conexão com Banco de Dados
11 $conexao = mysql_connect(‘localhost’,’user’,’S3nh4’);
12 //Selecionar a Base de Dados
13 mysql_select_db(‘Carros’, $conexao);
14 //Enviar a consulta
15 $resultado = mysql_query(‘SELECT id_carro, marca, modelo, cor, ano
16 FROM Carro WHERE id_carro = ‘ . $idCarro);
17 //Recuperar o número de registros encontrados
18 $qtdeRegistros = mysql_num_rows($resultado);
19 //Imprimir na tela os resultados
20 if($qtdeRegistros!=1) echo ‘<p>Problema com a consulta!</p>’;
21 else {
22 $arrayResultado = mysql_fetch_array($resultado);
23 echo ‘<p>Identifica&ccedil;&atilde;o do ve&iacute;culo: ‘.
24 $arrayResultado[‘id_carro’] . ‘</p>’;
25 echo ‘<p>Marca: ‘ . $arrayResultado[‘marca’] . ‘</p>’;
26 echo ‘<p>Modelo: ‘ . $arrayResultado[‘modelo’] . ‘</p>’;
27 echo ‘<p>Cor: ‘ . $arrayResultado[‘cor’] . ‘</p>’;
28 echo ‘<p>Ano: ‘ . $arrayResultado[‘ano’] . ‘</p><hr />’;
29 }
30 //Liberar a consulta da memória
31 mysql_free_result($resultado);
32 //Fechar a conexão com o Banco de Dados
33 mysql_close($conexao);
34 ?>
92 35 </body>
36 </html>
Integração com Banco de dados

É fácil perceber que este código pode ser alterado na linha


09 para ao invés de deixar fixo o id do carro, mudarmos para
$idCarro = $_GET[‘idCarro’]. Com isso, é possível re-
cuperar da URL da página o id do carro que desejamos exi-
bir. Com esta modificação a página deverá ser chamada infor-
mando na URL o parâmetro para o id do carro (viewCarro. Nunca use um parâmetro
recuperado do $_GET ou do
php?idCarro=1). $_POST diretamente em instruções
Importante: SQL, é necessário antes verificar
se o parâmetro não contém SQL
Injection4 ou está num formato que
Assim, podemos ver quais informações e passos são neces- o Banco de Dados não permite.
sários para exibir uma lista de resultados a partir de uma
consulta ao Banco de Dados.

Veremos nos próximos exemplos que os passos iniciais se re-


petem para qualquer operação que se deseja usar o Banco de
Dados.

10.4 Criando novos registros

Veremos agora como incluir novos registros em uma tabela do


Banco de Dados. Para isso, precisaremos de duas páginas, uma
com o formulário para que a pessoa que estiver acessando possa
informar os dados e outra que irá executar o processo de inclu-
são das informações na tabela do Banco de Dados.

Iremos utilizar o mesmo DER e dados apresentados antes.

Este exemplo, assim como os outros desta apostila, é meramente


ilustrativo e não faz o tratamento de dados necessário para ga-
rantir a segurança dos dados da aplicação, por isso, não utilize
esses códigos sem aplicar as proteções necessárias para ambien-
tes de produção.

No primeiro arquivo iremos compor o formulário, não en-


trarei em detalhes deste arquivo pois a criação de formu-
lários em HTML já foi visto em outra Unidade Curricular.

93
Programação para WEB

01 <!-- Salvar esta página com o nome formAddCarro.html -->


02 <html>
03 <head><title>Incluir Carro</title>
04 <style type=”text/css”>
05 label { position:relative; float:left; clear:both }
06 input { float:left; margin:5px 10px }
07 div.bt { clear:both; padding-top:10px }
08 </style>
09 </head>
10 <body>
11 <h1>Incluir Carro</h1>
12 <form name=”formAddCarro” method=”post” action=”addCarro.php”>
13 <label for=”marca”>Marca:</label> <input type=”text” name=”marca” />
14 <label for=”modelo”>Modelo:</label> <input type=”text” name=”modelo” />
15 <label for=”cor”>Cor:</label> <input type=”text” name=”cor” size=”10” />
16 <label for=”ano”>Ano:</label> <input type=”text” name=”ano” size=”5” />
17 <div class=”bt”><input type=”submit” name=”btSubmit” value=”Cadastrar” />
18 <input type=”reset” name=”btReset” value=”Limpar Formul&aacute;rio” /></div>
19 </form>
20 </body>
21 </html>

Devemos prestar atenção ao formulário, principalmente na propriedade


action que informa para onde o ele será submetido. Na linha 12 pudemos
ver que este formulário será submetido para a página addCarro.php, por
isso, é com esse nome que deveremos criar a página para incluir os dados no
Banco de Dados.

Usaremos o que foi aprendido em “Trabalhando com dados de formu-


lário” para recuperar as informações digitadas pelo usuário.

A estrutura principal do arquivo que receberá a submissão do formulário é


parecida com a do exemplo anterior, seguindo os passos de abrir conexão,
escolher a base de dados, enviar a consulta (neste caso uma instrução SQL
para incluir registro) e por fim fechar a conexão.

94
Integração com Banco de dados

01 <?
02 //Salvar com nome addCarro.php
03 ?>
04 <html>
05 <head><title>Incluir Carro</title></head>
06 <body>
07 <h1>Incluir Carro</h1>
08 <?
09 //Variáveis com para os dados do formulário
10 $marca = $_POST[‘marca’];
11 $modelo = $_POST[‘modelo’];
12 $cor = $_POST[‘cor’];
13 $ano = $_POST[‘ano’];
14 //Abrir conexão com Banco de Dados
15 $conexao = mysql_connect(‘localhost’,’user’,’S3nh4’);
16 //Selecionar a Base de Dados
17 mysql_select_db(‘Carros’, $conexao);
18 //Enviar a consulta
19 $resultado = @mysql_query(“INSERT INTO Carro (marca, modelo, cor, ano)
20 VALUES (‘$marca’,’$modelo’,’$cor’,$ano)”);
21 //Verificar se o registro foi incluído com sucesso
22 if($resultado) echo ‘<p>Registro inclu&iacute;do com sucesso!</p>’;
23 else echo ‘<p>Problema na execu&ccedil;&atilde;o desta opera&ccedil;&atilde;o!</p>’;
24 echo ‘<p><a href=”javascript:window.history.back();”>
25 Voltar para o formul&aacute;rio</a></p>’;
26 //Fechar a conexão com o Banco de Dados
27 mysql_close($conexao);
28 ?>
29 </body>
30 </html>

Note na linha 19, que a função mysql_query é precedida pelo ca-


ractere @ (arroba). Qualquer função que estiver precedida por esse
caractere não exibirá os erros que acontecerem dentro delas. Por isso,
nas linhas 22 e 23 são criadas mensagens de sucesso ou fracasso para
o retorno da função mysql_query.

Com isso aprendemos como incluir registros em nosso Banco de Da-


dos diretamente de uma aplicação em PHP. A seguir, veremos como é
possível alterar um registro já existente.

95
Programação para WEB

10.5 Alterando registros

Assim como na seção anterior, usaremos um formulário para que o usuá-


rio dê a entrada de dados e uma página com a instrução SQL para atuali-
zar o registro da tabela. A página de formulário será muito parecida com a
apresentada no exemplo anterior, a modificação será na ação do formulário,
apontando para a página de atualização e será incluído um campo para in-
formar qual registro desejamos atualizar.

01 <!-- Salvar esta página com o nome formUpdCarro.html -->


02 <html>
03 <head><title>Atualizar Carro</title>
04 <style type=”text/css”>
05 label { position:relative; float:left; clear:both }
06 input { float:left; margin:5px 10px }
07 div.bt { clear:both; padding-top:10px }
08 </style>
09 </head>
10 <body>
11 <h1> Atualizar Carro</h1>
12 <form name=”formAddCarro” method=”post” action=”updCarro.php”>
13 <label for=”marca”>Id Carro:</label> <input type=”text” name=”idCarro” size=”2” />
14 <label for=”marca”>Marca:</label> <input type=”text” name=”marca” />
15 <label for=”modelo”>Modelo:</label> <input type=”text” name=”modelo” />
16 <label for=”cor”>Cor:</label> <input type=”text” name=”cor” size=”10” />
17 <label for=”ano”>Ano:</label> <input type=”text” name=”ano” size=”5” />
18 <div class=”bt”><input type=”submit” name=”btSubmit” value=”Atualizar” />
19 <input type=”reset” name=”btReset” value=”Limpar Formul&aacute;rio” /></div>
20 </form>
21 </body>
22 </html>

A página a seguir, será a responsável por aplicar a atualização. É ela que está
indicada no action do formulário da página formUpdCarro.html. Como
poderá ser visto, ela é também muito semelhante a do exemplo anterior.

96
Integração com Banco de dados

01 <?
02 //Salvar com nome addCarro.php
03 ?>
04 <html>
05 <head><title>Atualizar Carro</title></head>
06 <body>
07 <h1>Atualizar Carro</h1>
08 <?
09 //Variáveis com para os dados do formulário
10 $idCarro = $_POST[‘idCarro’];
11 $marca = $_POST[‘marca’];
12 $modelo = $_POST[‘modelo’];
13 $cor = $_POST[‘cor’];
14 $ano = $_POST[‘ano’];
15 //Abrir conexão com Banco de Dados
16 $conexao = mysql_connect(‘localhost’,’user’,’S3nh4’);
17 //Selecionar a Base de Dados
18 mysql_select_db(‘Carros’, $conexao);
19 //Enviar a consulta
20 $resultado = @mysql_query(“UPDATE Carro SET marca = ‘$marca’,
21 modelo = ‘$modelo’, cor = ‘$cor’, ano = $ano WHERE id_carro = $idCarro”);
22 //Verificar se o registro foi incluído com sucesso
23 if($resultado) echo ‘<p>Registro atualizado com sucesso!</p>’;
24 else echo ‘<p>Problema na execu&ccedil;&atilde;o desta opera&ccedil;&atilde;o!</p>’;
25 echo ‘<p><a href=”javascript:window.history.back();”>
26 Voltar para o formul&aacute;rio</a></p>’;
27 //Fechar a conexão com o Banco de Dados
28 mysql_close($conexao);
29 ?>
30 </body>
31 </html>

As mudanças nesta página foram a inclusão da variável $idCarro,


na linha 10, para receber a identificação do carro que desejamos atu-
alizar e ao invés de usar uma instrução INSERT, usamos a instrução
UPDATE do SQL (linha 20 e 21).

97
Programação para WEB

10.6 Excluindo registros

Para excluir registros de uma tabela, precisamos somente de uma página.


Para deixá-la dinâmica, usaremos um parâmetro passado na URL do na-
vegador para indicar qual registro desejamos excluir. A estrutura da página
será muito parecida com os dois exemplos anteriores, seguindo os passos
de abrir a conexão com o Banco de Dados, escolher a base que desejamos
usar, enviar a consulta (neste caso a instrução para excluir o registro) e por
fim fechar a conexão com o Banco de Dados. Sendo assim, a visualização
da será o seguinte:
01 <?
02 //Salvar com nome delCarro.php
03 ?>
04 <html>
05 <head><title>Excluir Carro</title></head>
06 <body>
07 <h1>Excluir Carro</h1>
08 <?
09 //Recuerar a identificação do carro que iremos excluir
10 $idCarro = $_GET[‘idCarro’];
11 //Abrir conexão com Banco de Dados
12 $conexao = mysql_connect(‘localhost’,’user’,’S3nh4’);
13 //Selecionar a Base de Dados
14 mysql_select_db(‘Carros’, $conexao);
15 //Enviar a consulta
16 $resultado = @mysql_query(“DELETE FROM Carro WHERE id_carro = $idCarro”);
17 //Verificar se o registro foi incluído com sucesso
18 if($resultado) echo ‘<p>Registro exclu&iacute;do com sucesso!</p>’;
19 else echo ‘<p>Problema na execu&ccedil;&atilde;o desta opera&ccedil;&atilde;o!</p>’;
20 echo ‘<p><a href=”listCarro.php”>Ir para a lista de Carros</a></p>’;
21 //Fechar a conexão com o Banco de Dados
22 mysql_close($conexao);
23 ?>
24 </body>
25 </html>

Do modo como a página foi desenvolvida, simplesmente acessá-la sem pas-


sar o parâmetro informando o id do carro resultará em erro. Por isso, a URL
da página deverá ser seguida do parâmetro idCarro com o id do carro
que desejamos excluir (Ex: delCarro.php?idCarro=4).

98
Integração com Banco de dados

Escrever sempre na URL os parâmetros para indicar o carro que de-


sejamos excluir, não é nada usável. Por isso, podemos modificar o ar-
quivo criado com o nome listCarro.php e incluir um link para apagar
um carro.

O processo é simples, remova o marcador <hr /> que está na linha


27 e insira a seguinte instrução logo após esta linha.

echo ‘<p><a href=”delCarro.php?idCarro=’ .


$arrayResultado[‘id_carro’] . ‘”>Excluir este
carro</a></p><hr />’;

Lembrando que esta última instrução também deverá estar dentro da


estrutura de repetição while.

Assim, quando a página listCarro.php for acessada, será exibido um


link para remover o carro.

Com isso concluímos as operações básica que podemos executar


usando Banco de Dados.

99
Programação para WEB

Resumo

Você agora já sabe que a linguagem PHP está habilitada a usar os principais
Bancos de Dados da atualidade e que para conseguir o acesso a um Banco
de Dados (a partir de uma aplicação PHP) são necessárias as informações
da localização do Servidor de Banco de Dados bem como um usuário com
permissões de acesso a Base que queremos usar.

Neste capítulo, através de exemplos práticos, aprendemos a listar ou


ver registros de uma tabela do Banco de Dados. Praticamos também,
o uso de formulários quando aprendemos a criar registros numa tabe-
la, bem como proceder com a atualização de um. Na oportunidade
você aprendeu a criar registros numa tabela e a realizar procedimentos
de atualização. Ao final, você aprendeu a remover registros de uma
tabela quando necessário.

Muita Atenção! É importante relembrar que os exemplos são meramente


ilustrativos, não fazem o tratamento adequado dos dados enviados pelos
usuários, por isso podem estar suscetíveis a ataques de segurança, por isso,
não os utilizem em ambientes de produção.

Atividades de Aprendizagem

As atividades abaixo devem ser realizadas considerando os códigos de exem-


plo deste capítulo.

1. Apesar dos exemplos deste capítulo usarem a mesma base de dados, não
há hiperlinks entre as páginas criadas. Usando o recurso de include ou
require inclua um menu em todas as páginas para que o usuário possa
navegar entre elas, criando o aspecto de um sistema único.

2. É possível notar que a conexão com o Banco de Dados é exatamente igual


em todas as páginas que o usam. Usando também o recurso de include ou
require centralize em um arquivo a conexão com o Banco de Dados e faça
a inclusão nas páginas que o usam.

100
Integração com Banco de dados

101

Você também pode gostar