Curso de Programação Web Com PHP
Curso de Programação Web Com PHP
Curso de Programação Web Com PHP
1-
- O PHP ..............................................................................................................................................2
- O que voc vai precisar para acompanhar o curso.....................................................................3
2 - Curso de PHP Instalando o XAMPP no Windows Apache, MySQL, PHP e Perl................4
3 - Sintaxe e Marcadores de Comandos no PHP ...........................................................................17
4 - Tipos de Dados no PHP .............................................................................................................19
5 - Convertendo tipos no PHP ........................................................................................................26
6 - Declarando e usando Variveis em PHP ...............................................................................28
7 - Operadores Aritmticos e de Atribuio de valores em PHP ..............................................34
9 - Estruturas de Controle Condicional ..........................................................................................41
10 - Estrutura de Controle Switch ..................................................................................................45
11 - Estruturas de Repetio ..........................................................................................................47
12 - Estrutura de Repetio For .................................................................................................49
Estrutura de Repetio Foreach .................................................................................................51
13 - Instruo break ...................................................................................................................53
Instruo continue ......................................................................................................................54
14 - Declarando e Manipulando Arrays no PHP ............................................................................56
Criando um array ........................................................................................................................56
Manipulando os elementos de um Array ...................................................................................57
Removendo um array ou seus elementos ..................................................................................58
15 - Formulrios HTML ...................................................................................................................59
Mtodos GET e POST ..................................................................................................................59
Controles de Formulrios HTML ................................................................................................60
16 - Processando os dados recebidos de um formulrio HTML....................................................64
Arrays $_POST e $_GET ..............................................................................................................64
17 - Conexo a um Banco de Dados MySQL ..................................................................................69
Efetuando conexo ao banco de dados.....................................................................................70
Funo die() ................................................................................................................................73
18 - Efetuando uma consulta SQL no banco de dados e retornando dados pgina..................74
Criando e executando a consulta: consulta.php .........................................................................75
19 - Inserindo dados no Banco de Dados MySQL ..........................................................................76
Cdigo do script PHP ..................................................................................................................78
Pgina |2
- O PHP
O PHP uma linguagem de script server-side, ou seja, que executada no lado do servidor Web,
criada em 1995. O cdigo PHP comumente incorporado no HTML de uma pgina Web, de modo a
permitir o gerenciamento de contedo dinmico e rastreamento de sesses, entre muitas outras
coisas. Tambm muito utilizado em conjunto com diversos frameworks Web, como o WordPress.
Trata-se de uma linguagem que agrega segurana, eficincia e simplicidade ao desenvolvimento
Web, alm de ser muito flexvel e relativamente fcil de aprender. O PHP utiliza uma sintaxe em
seus cdigo similar da linguagem C.
Pgina |3
possvel trabalhar com vrios sistemas gerenciadores de bancos de dados diferentes no PHP,
incluindo o popular MySQL (que utilizaremos neste curso), PostgreSQL, Oracle Database, e at o
Microsoft SQL Server.
Pgina |4
Se voc tiver acesso a um web host que rode esses softwares, excelente! Caso contrrio, voc
deve instalar os programas necessrios em seu PC localmente. Recomendo fortemente usar
pacotes como o LAMP, WAMP, XAMPP ou MAMP, que trazem em uma instalao simplificada
todos os programas necessrios para comear a estudar PHP. Nos prximos artigos vou mostrar
como instalar esses pacotes no Linux, Windows e Mac OS X. A escolha de qual usar sua
qualquer um deles servir perfeitamente.
Pgina |5
Clique no link de Download para poder baixar o programa, e na pgina de download, escolha a
verso desejada. recomendamos baixar a verso mais recente, que a 5.6.8. Clique no boto
Download da verso desejada, e espere o programa ser baixado:
Aps baixar o XAMPP, abra o arquivo para iniciar o processo de instalao. Clique em Sim na janela
do Controle de Conta de Usurio:
Aparecer a caixa de dilogo a seguir, que fala justamente do UAC. O instalador recomenda instalar
o XAMPP em uma pasta que no seja a C:\Program Files, por conta de permisses. Clique em OK
para fech-la.
Pgina |6
Na prxima tela poderemos selecionar os componentes que sero instalados. Vou deixar todos
selecionados. Clique em Next para prosseguir:
Pgina |7
Na prxima janela, selecione a pasta onde o XAMPP ser instalado. Vou instalar o programa na
pasta c:\xampp:
Pgina |8
A janela seguinte fala a respeito do Bitnami, que um sistema que permite a instalao dos
sistemas de gerenciamento de contedo (CMS) Drupa, Joomla, WordPress e outros com muita
facilidade. No iremos trabalhar com isso nesse curso, portanto desmarque a caixa Learn more
about Bitnami for XAMPP e clique no boto Next.
Pgina |9
P g i n a | 10
Aps alguns minutos a instalao ser finalizada. Deixe marcada a caixa Do you want to start the
Control Panel now? para abrir o Painel de Controle do XAMPP imediatamente, e clique no
boto Finish para sair do instalador.
P g i n a | 11
Excelente! XAMPP instalado com sucesso. Veja a tela do Painel de Controle que se abriu
automaticamente. Com ele podemos iniciar, parar e administrar os diversos servios disponveis,
tais como o servidor Web Apache, banco de dados MySQL, servio de FTP Filezilla, Tomcat e
Mercury.
P g i n a | 12
Cliuqe no boto Start do servio do Apache. Note que o Alerta de Segurana do Windows poder
ser aberto perguntando se voc quer permitir acesso ao Apache HTTP a parir do Firewall do
Windows. Clique no boto Permitir Acesso:
P g i n a | 13
Faa o mesmo com o servio do MySQL para inici-lo. Veja os servios ativos no Painel de Controle
do XAMPP:
P g i n a | 14
P g i n a | 15
Ser aberta a pgina inicial de configuraes do XAMPP. Leia as informaes mostradas na pgina
para obter mais informaes:
Agora vamos rodar uma funo do PHP. No painel do lado esquerdo localize o link phpinfo() e
clique nele. Sero mostradas na pgina as configuraes atuais do PHP que o XAMPP est
utilizando:
P g i n a | 16
isso a! XAMPP instalado e configurado com sucesso! Para comear a us-lo, abra o Windows
Explorer e navegue at a pasta da instalao do XAMPP (em nosso exemplo, c:\xampp). L dentro
voc encontrar uma pasta de nome htdocs, que onde colocamos os arquivos que iremos criar ao
longo dos estudos. Recomendo que voc crie uma pasta para cada projeto que executar, dentro
dessa pasta htdocs. Por exemplo, voc pode criar uma pasta chamadaprojeto1 dentro de htdocs, e
criar nesta pasta um arquivo index.php para estudo. Para carregar esse arquivo em um navegador,
basta digitar na barra de endereos:
http://localhost/projeto1/index.php
E o arquivo dever ser carregado no browser.
Na prxima aula vamos iniciar nossos estudos de Programao em PHP. At l!
Incio Programao em PHP Curso de PHP Sintaxe e Marcadores de comandos
P g i n a | 17
Scripts PHP
Um script em PHP (conjunto de comandos e cdigos) pode ser escrito usando a sintaxe
a seguir:
<?php
Cdigos PHP;
?>
Os cdigos PHP so inseridos entre as tags <?php e ?>. Por exemplo, crie um novo
documento de texto em um editor, insira o cdigo a seguir e salve-o como aula01.php.
Recomendo criar um diretrio especfico para salvar o arquivo, de modo a separar as
diversas lies de nosso curso. Vou usar um diretrio de nome aula01 que dever estar
localizado na pasta adequada, dependendo do pacote de software que voc vai utilizar
para realizar os testes (WAMP, LAMP, XAMPP, etc.):
<?php
echo Ol Mundo!;
?>
P g i n a | 18
Para usarmos essas formas simplificadas e estilo ASP precisaremos alterar alguns
parmetros no arquivo de configurao php.ini presente no servidor. A localizao
desse arquivo vai depender um pouco da plataforma utilizada em seu sistema, e
trabalharemos com arquivos de configurao na parte avanada do curso. Os
parmetros a modificar so short_open_tagse asp_tags, trocando seus valores
de off para on. Em nosso curso, vamos usar o padro da sintaxe de marcadores PHP,
portanto no necessrio alterar o php.ini agora.
Comentrios no PHP
Podemos adicionar comentrios ao cdigo em PHP, como na maioria das linguagens. O
texto que vem aps os comentrios sempre ignorado pelo interpretador, e tambm
no aparecer no navegador ao carregar a pgina.
Usamos os comentrios para que outros programadores possam entender nossa
codificao, ou para lembrar a ns mesmos o que fizemos no cdigo, ao edit-lo
tempos depois de criado.
Podemos inserir comentrios de trs formas em um script:
// Comentrio de linha nica.
# Outra forma de escrever comentrios de linha nica
/* Bloco de comentrios
P g i n a | 19
Maisculas e Minsculas
No PHP, os nomes de variveis so case-sensitive, ou seja, diferenciam maisculas de
minsculas. Portanto, as variveis NOME e Nome so diferentes. Tome muito cuidado
com isso. Vamos estudar variveis em breve.
J os nomes de classes, funes e palavras-chave em geral (if, else, while, etc) no
diferenciam maisculas de minsculas. mas, de qualquer forma, recomendo criar um
padro para voc usar fica a seu critrio.
P g i n a | 20
Tipo Inteiro
Um nmero inteiro um nmero que no apresenta as casas decimais, podendo ser positivo ou
negativo, e ainda ser representado em bases diferentes, como decimal, octal ou hexadecimal. O
formato padro o decimal, e o formato octal representado precedendo o nmero com um 0, ao
passo que o hexadecimal possui os caracteres 0x precedendo o nmero. Os inteiros so o tipo mais
simples em PHP.
O maior inteiro que podemos representar o valor 2.147.483.647, e o menor (mais negativo) o
nmero -2.147.483.647, pois os inteiros em PHP so representados por valores de 32 bits.
Veja alguns exemplos de atribuio de valores inteiros a variveis (estudaremos variveis afundo
na prxima aula):
<?php
$a = 15;
$b = -465;
$c = 019;
$d = 0xAF;
var_dump($a);
echo <br>;
var_dump($b);
echo <br>;
var_dump($c);
echo <br>;
var_dump($d);
?>
A funo var_dump() usada no exemplo acima retorna o tipo de uma varivel e seu respectivo
valor. J o cdigo echo <br>; usado para enviar o comando HTML <br> (quebra de linha) ao
navegador, para que os resultados apaream um em cada linha.
P g i n a | 21
P g i n a | 22
O tipo booleano no leva em considerao o caso, portanto voc pode escrever TRUE, true ou True
que no haver diferenas.
Caso o valor a ser analisado em uma expresso seja numrico, ser falso se for igual a zer e
verdadeiro se for outro nmero qualquer.
No caso de uma string, ser falso se a string estiver vazia (ou for o caractere 0), e verdadeiro nos
demais casos. O mesmo vale para arrays.
E os valores do tipo NULL so sempre falsos.
Veja exemplos de declarao e atribuio de valores lgicos no PHP:
<?php
$x = True;
$y = False;
if ($x==TRUE) {
echo Valor verdadeiro <br>;
}
if ($y==TRUE) {
echo Valor verdadeiro;
}
else {
echo Valor falso;
}
?>
No exemplo acima criamos duas variveis, x e y, e atribumos a elas os valores True e False,
respectivamente. Depois, realizamos um teste condicional lgico com o comando if para testar as
variveis e imprimir os resultados na tela com o comando echo. No se preocupe com esses
comandos, iremos estud-los a fundo em breve.
Tipo String
P g i n a | 23
Uma string uma sequncia (cadeia) de caracteres, como uma frase. No h limites para a
quantidade de caracteres que podemos colocar em uma varivel do tipo string, a no ser a prpria
memria RAM presente no computador.
Para definirmos uma string, colocamos os caracteres que a compe entre aspas, que podem ser
aspas simples ou duplas. H diferena na interpretao entre strings com aspas simples ou com
aspas duplas, como explicamos a seguir.
P g i n a | 24
Na tabela a seguir temos os caracteres de escape (especiais) mais comuns que podem ser usado
em PHP:
Caractere
Significado
\n
Linefeed
\r
Carriage Return
\t
Tabulao (tab)
\\
Barra invertida
Aspas duplas
\$
Cifro
P g i n a | 25
Note que o delimitador, para finalizar a string, deve estar em uma linha sozinho e sem espaos nem
antes nem depois. Podemos tambm inserir caracteres especiais e comandos HTML na string,
como o <b></b> que usamos no exemplo para destacar a palavra heredoc.
Funo GetType()
A funo gettype() um comando que no permite saber o tipo de uma varivel qualquer,
retornando uma string com o tipo. Para us-la, siga a sintaxe abaixo:
gettype(varivel)
Exemplo:
<?php
$num = 10;
$preco = 23.89;
$nome = Fbio;
$resultado = True;
P g i n a | 26
Note que usamos um ponto (.) entre as strings. Este ponto um operador de concatenao, que
permite juntar duas ou mais strings e formar uma nova.
Na prxima aula vamos aprender a declarar e usar Variveis no PHP.
P g i n a | 27
Para que faamos a converso de tipos explicitamente usaremos os comandos de cast, de acordo
com a tabela a seguir:
Operador
Tipo
int ou integer
inteiro
string
array
vetor
object
objeto
Veja o exemplo a seguir, onde declaramos uma varivel do tipo ponto flutuante de nome var1 e
depois atribumos seu contedo a uma varivel de nome var2, do tipo inteiro. Vamos converter
explicitamente o tipo do dado:
$var1 = 40.55;
echo Ponto flutuante: $var1 <br />;
$var2 = (int)$var1;
echo Inteiro: $var2;
Podemos tambm usar a funo settype() para efetuar a converso de tipos no PHP. Essa funo
permite converter valores nos tipos integer, double, string, array ou object. Sua sintaxe a
seguinte:
settype(varivel,novo_tipo);
No exemplo a seguir declaramos uma varivel do tipo ponto flutuante e a convertemos para inteiro
com a funo settype():
$num = 2.5;
settype($num,integer);
echo Valor inteiro: $num;
TESTANDO O TIPO DE UMA VARIVEL
Podemos testar o tipo de uma varivel usando as funes a seguir:
is_int()
is_integer()
is_real()
P g i n a | 28
is_long()
is_float()
is_string()
is_array()
is_object()
Sintaxe:
is_TIPO($varivel)
Essas funes retornam o valor verdadeiro se a varivel testada for do tipo indicado, e falso em
caso contrrio.
Vejamos um exemplo. Vamos criar uma varivel de nome $num e atribuir-lhe um valor de ponto
flutuante. Depois, testaremos para ver se o valor contido na varivel do tipo inteiro com a
funo is_int():
$num = 23.8;
if(is_int($num)) {
echo Nmero inteiro;
}
else {
echo O valor da varivel no um nmero inteiro!;
}
Usamos um condicional if para realizar o teste. Se a varivel $num for do tipo inteiro a funo
is_int() retornar verdadeiro e ento a mensagem Nmero inteiro ser exibida; caso contrrio, a
funo retornar falso e a mensagem O valor da varivel no um nmero inteiro ser exibida.
Resultado:
P g i n a | 29
$nome_da_varivel = valor_da_variavel;
O sinal $ sempre precede o nome escolhido para a varivel, tanto na declarao quanto ao
atribuirmos valores ou lermos o contedo da varivel. Logo aps esse caractere podemos usar
apenas letras ou o sinal de undescore (_). Os demais caracteres devem seguir as regras abaixo:
Podem ser caracteres alfanumricos (letras e nmeros, alm do subscrito / underscore).
O primeiro caractere deve obrigatoriamente ser uma letra ou o smbolo de underscore.
No pode haver espaos em nomes de variveis compostos use um underline para ligar
as palavras ou use a notao CamelCase (palavras unidas, sem espaos, iniciadas com
letras maisculas)
As variveis no PHP so case-sensitive, ou seja, fazem distino entre letras maisculas e
minsculas. Fique atento a esse detalhe, pois isso fonte constante de erros!
Sempre crie nomes de variveis significativos, que permitam transmitir uma idia precisa
sobre o contedo que a varivel armazena.
Vamos declarar uma varivel e atribuir um valor a ela. Criaremos a varivel nome e atribuiremos a
ela a string Fbio. Com o comando echo podemos visualizar no browser o valor contido na varivel:
<?php
$nome = Fbio;
echo $nome;
?>
A varivel $nome foi criada e recebeu uma string como valor. Portanto, ela ser do tipo string. No
necessrio especificar o tipo da varivel no PHP, pois se trata de uma linguagem fracamente
tipada. O PHP seleciona o tipo da varivel baseado no tipo do dado atribudo a ela. Alm disso, uma
varivel pode receber um valor diretamente, como no exemplo anterior, receber uma cpia do
contedo de outra varivel, ou ainda referenciar outra varivel (atribuio por referncia).
P g i n a | 30
So as variveis criadas dentro de funes e que s podem ser referenciadas por comandos que se
encontram dentro dessa mesma funo. No so vlidas fora da funo onde foram criadas, e so
destrudas assim que a funo encerrada.
Variveis Globais
Uma varivel global pode ser acessada em qualquer parte do programa, dentro e fora das funes.
Para criar uma varivel global usamos a palavra reservada global antes do nome da varivel
durante sua declarao.
Veja o exemplo a seguir, onde criamos uma varivel global dentro de uma funo e a utilizamos
fora da funo:
<?php
function quadrado() {
global $numero;
$numero = $numero * $numero;
}
$numero = 3;
quadrado();
echo O nmero ao quadrado $numero;
?>
Variveis estticas
Uma varivel esttica somente existe dentro do escopo de uma funo, e no destruda quando a
funo encerrada seu valor no perdido. Podemos utiliz-la novamente ao chamar a mesma
funo, e ela ainda possuir o valor que tinha anteriormente. As variveis estticas so visveis
apenas no escopo onde foram criadas.
Para criar uma varivel esttica usamos a palavra chave static antes do nome da varivel em sua
declarao.
Vejamos um exemplo.
P g i n a | 31
<?php
function incremento() {
static $num = 0;
$num= $num + 1;
echo o valor $num <br />;
}
incremento();
incremento();
incremento();
?>
Note que cada vez que chamamos a funo incremento(), o valor mostrado no navegador
incrementado em 1. Veja a sada abaixo:
Variveis Superglobais
O PHP possui algumas variveis especiais chamadas de variveis superglobais que permitem
fornecer informaes sobre o ambiente do script. Essas variveis no precisam ser declaradas, pois
esto disponveis automaticamente.
As variveis super globais so definidas em arrays, que so colees especiais de valores, os quais
estudaremos em uma aula posterior. A tabela a seguir mostra as principais variveis super globais
do PHP:
Nome da varivel super
global
Contedo da varivel
$_SERVER
$_GET
$_POST
$_COOKIE
P g i n a | 32
$_ENV
$_REQUEST
$_SESSION
$GLOBALS
PHP_SELF
DOCUMENT_ROOT
Variveis Dinmicas
a linguagem PHP nos oferece uma categoria muito interessante de variveis, chamadas de
Variveis Dinmicas, que so variveis cujos nomes podem mudar, dependendo do contedo de
outra varivel.. Para declararmos uma varivel dinmica devemos preceder seu nome com dois
cifres ($$), e o PHP ir referenciar o contedo dessa varivel como sendo uma nova varivel.
Exemplo:
<?php
// Declaramos uma varivel chamada $var e atribumos a string nome a ela
$var = nome;
/* Usando $$ criamos uma varivel dinmica, de modo que o contedo de $var seja o nome da
varivel (ser $nome), e seja atribudo a essa varivel a string Fbio.*/
$$var = Fbio;
P g i n a | 33
Referenciando variveis
Podemos criar uma referncia entre variveis, ou seja, fazer com que duas variveis distintas
apontem para a mesma rea de memria onde dados so armazenados. Isso diferente de copiar
o contedo de uma varivel para outro, pois realizarmos essa atribuio por referncia, ao
alterarmos o contedo de uma das variveis automaticamente teremos o contedo alterado
aparecendo na outra tambm.
Para atribuir um valor por referncia a uma varivel, devemos preceder o nome da varivel com o
smbolo &. Veja o exemplo a seguir:
Exemplo:
<?php
$x = 50;
$y = $x;
$z = &$x;
// Alterando o valor de x:
$x = 80;
// Verificando o contedo das variveis:
echo x vale $x <br/>;
echo y vale $y <br/>;
echo z vale $z <br/>;
?>
Atribumos o valor 50 varivel $x, e depois atribumos $X s variveis $y e $z, porm de duas
formas distintas: atribuio comum a $y (cpia de valores) e atribuio por referncia a $z
(referncia de endereos).
Aps alterarmos o valor de $x para 80, o valor de $y permanece o mesmo (50), e o valor de $z
tambm passa a ser 80, pois aponta para a mesma rea de memria que $x. Veja o resultado
abaixo:
P g i n a | 34
Significado
+=
-=
*=
/=
%=
.=
P g i n a | 35
=&
Significado
soma
multiplicao
diviso comum
O operador de diviso (/) retorna sempre um valor de ponto flutuante, mesmo que os nmeros
envolvidos na operao no o sejam.
Alm desses operadores temos tambm os operadores aritmticos unrios de incremento e
decremento, que podem ser vistos na tabela a seguir:
P g i n a | 36
Operador
Significado
++
incremento
decremento
Estes dois operadores podem ser usados antes ou depois das variveis. Se forem utilizados depois,
retornam o valor da varivel antes de realizar o incremento ou decremento. Mas se forem usados
antes das variveis, retornam o valor da varivel j com o incremento (ou decremento).
Vamos a alguns exemplos:
<?php
$x = 30; // atribui o valor 30 varivel $x
$y = $x * 3;
$z = $y % $x;
echo $x <br/>;
echo $y <br/>;
echo $z <br/>;
$k = $z++; // atribui a $k o valor de $z e ento incrementa $z.
echo $k <br/>;
$k = $z; // atribui a $k o valor de $z, agora j incrementado.
echo $k;
?>
Veja o resultado dessas operaes:
P g i n a | 37
Na tabela abaixo vemos a ordem de precedncia dos operadores aritmticos, da mais alta para a
mais baixa:
++,
(sinal de negativo)
*, /, %
+,
Podemos subverter a ordem de precedncia dos operadores com o uso de parnteses, sendo que
as expresses dentro dos parnteses sempre sero avaliadas antes, mesmo que os operadores
envolvidos tenham menor prioridade do que os operadores fora dos parnteses.
Vejamos um exemplo:
<?php
$a = 3 + 5 * 4;
$b = (3 + 5) * 4;
echo Valor da expresso sem parnteses: $a <br/>;
echo Valor da expresso com parnteses: $b <br/>;
?>
Sem o uso de parnteses a expresso retorna o valor 23 e com parnteses, 32. O valor correto
depende da frmula que se quer avaliar.
P g i n a | 38
Significado
& ou AND
| ou OR
OU
NO
Vejamos alguns exemplos de aplicao desses operadores. Vamos usar o operador AND (&) para
calcular o resultado da operao bit a bit entre os nmeros 172 e 248. Esse clculo empregado
para determinar o endereo de uma rede, onde uma mscara de subrede aplicada sobre os
octetos de um endereo IP, um a um, com a operao E :
<?php
$octeto = 172;
$mascara = 248;
$valor = $octeto & $mascara;
echo Aplicando a operao AND entre a mscara e o octeto obtemos o valor $valor;
?>
Em uma aula futura vamos criar um programa que permite fazer diversos clculos de rede usando
o PHP, e para isso faremos uso extensivo desse tipo de operador.
Significado
>>
<<
P g i n a | 39
Operadores Relacionais
Os operadores relacionais (ou de comparao) permitem efetuar comparaes entre valores
contidos em variveis ou constantes entre si, resultando sempre em um valor booleano (lgico, 0
ou 1, verdadeiro ou falso).
Valores diferentes de zero so considerados como valores verdadeiros e o valor zero considerado
como valor falso.
Na tabela a seguir temos os operadores relacionais usados em PHP:
Operador
Significado
==
Igual a
!=
Diferente de
===
!==
No idntico a
>
Maior do que
>=
Maior ou igual a
<
Menor do que
<=
Menor ou igual a
P g i n a | 40
?>
Operadores Lgicos
Os operadores lgicos permitem realizar comparaes entre expresses, retornando como
resultado um valor verdadeiro (1) ou um valor falso (0). Quando usamos operadores relacionais
podemos tambm combinar suas operaes com operadores lgicos. Os operadores lgicos
disponveis em PHP esto listados na tabela abaixo:
Operador
Significado
AND
OR
OU
XOR
OU Exclusivo
&&
||
OU
Negao (NOT)
P g i n a | 41
P g i n a | 42
P g i n a | 43
Com o condicional composto, podemos ter blocos de cdigo a serem executados tanto para o caso
da expresso condicional retornar verdadeiro, como para o caso da expresso condicional retornar
falso:
Sintaxe:
if (teste_condicional) {
comandos se teste verdadeiro
}
else {
comandos se teste falso
}
Vamos a um exemplo:
<?php
$num = 30;
if ($num < 20) {
echo O nmero menor que 20;
}
else {
echo O nmero no menor que 20;
}
?>
Neste segundo exemplo, alteramos o valor da varivel $num para 30, e acrescentamos o else
estrutura condicional, para que seja possvel avaliar o valor se falso.
Podemos tambm avaliar condies mais complexas, com mais de um teste condicional sequencial,
com o uso de elseif.
Controle Condicional Aninhado
Caso tenhamos a necessidade de avaliar mltiplas condies em um programa, podemos fazer uso
de um condicional aninhado, que permite encadear vrias instrues if. Se o primeiro if retorna
P g i n a | 44
P g i n a | 45
}
else {
echo O nmero exatamente igual a 20;
}
?>
Neste exemplo o primeiro teste condicional resulta em falso, ento o segundo teste condicional, no
elseif, avaliado, resultando em verdadeiro; assim, a mensagem O nmero maior que 20
exibida no navegador.
P g i n a | 46
default:
comandos
}
A varivel (ou expresso) ser comparada com cada um dos valores informados nas
clusulascase at que seja encontrado um valor que corresponda. Neste caso, os comandos
associados ao case sero executados, at chegar clusula break, que encerra a estrutura de
controle.
Se nenhum case corresponder ao valor da varivel ou expresso testada, sero executados os
coamandos associados Ao clusula default (padro). Esta clusula opcional, porm.
A clusula break tambm opcional, mas na maioria dos casos voc ir utiliz-la, pois sem o break
todos os comandos a partir da correspondncia de valores so executados at a ltima clusula
case que contenha um break, ou at o final da estrutura case e nao somente os comandos do
case correspondente varivel ou expresso testada.
Exemplo:
<?php
$diaSemana = 5;
switch ($diaSemana) {
case 1:
print (Domingo);
break;
case 2:
print (Segunda-feira);
break;
case 3:
print (Tera-feira);
break;
P g i n a | 47
case 4:
print (Quarta-feira);
break;
case 5:
print (Quinta-feira);
break;
case 6:
print (Sexta-feira);
break;
case 7:
print (Sbado);
break;
default:
echo Dia errado informado;
}
?>
Ser mostrado no navegador o dia Quinta-feira, pois o case de valor 5, contido na varivel
testada ($diaSemana).
No prximo artigo trataremos sobre a instruo break mais detalhadamente.
11 - Estruturas de Repetio
Uma estrutura de repetio permite repetir um comando ou bloco de comandos diversas vezes,
automaticamente, de modo a permitir que cdigo seja reutilizado e eliminando a necessidade de
reescrever diversas vezes os mesmos comandos que precisam ser repetidos.
P g i n a | 48
Nesta aula vamos estudar as estruturas de repetio While e Do .. While. Nas prximas aulas
vamos abordar as estruturas de repetio For e Foreach.
Estrutura de Repetio While
A estrutura de repetio while permite executar repetidas vezes um bloco de comandos enquanto
uma condio testada retorna verdadeiro. Quando a condio testada retorna falso, a repetio
dos comandos (chamada de loop) encerrada e o programa segue seu fluxo normal de execuo.
Sintaxe:
While (expresso_testada) {
Bloco de comandos
}
Exemplo: Vamos criar um programa que imprima na tela os nmeros de 1 a 20:
<?php
$num = 1;
while ($num < 31) {
echo $num <br/>;
$num++;
}
?>
Note o uso da instruo $num++, que usada para incrementar o valor da varivel testada. Caso
no utilizemos essa instruo de incremento, o valor da varivel permanecer sempre em 1 (valor
inicial dela), e o programa nunca encerrar, pois a condio testada sempre retornar verdadeiro.
Teremos ento o famoso loop infinito, que na maioria dos casos um erro de programao.
Fique atento a esse detalhe!
Estrutura de Repetio Do .. While
A estrutura do .. while difere da estrutura while apenas pelo fato de que a estrutura do .. while
sempre executar o bloco de comandos associado ao menos uma vez, enquanto a estrutura while
executa o bloco de comandos zero ou mais vezes se logo no primeiro teste condicional ele j
retornar falso, nenhum comando executado.
P g i n a | 49
Ento, caso voc precise que o bloco de comandos seja executado ao menos uma vez em uma
estrutura de repetio, use o comando do .. while.
Sintaxe:
do {
Comandos
} while (expresso_testada);
Exemplo:
<?php
$num = 10;
while ($num < 10) {
echo Executado pelo while: $num <br/>;
$num++;
}
do {
echo Executado pelo do..while: $num <br/>;
} while ($num < 10);
?>
Neste exemplo, ao testarmos o valor da varivel $num, que vale 10, com o comando while, temos
um valor falso logo de incio, e portanto o bloco de comandos associado no ser executado.
Porm, ao testarmos a mesma varivel com do .. while, o bloco de comandos executado a
primeira vez e s ento a expresso ser avaliada, retornando falso e interrompendo o loop.
Na prxima aula veremos as estruturas de repetio for e foreach.
P g i n a | 50
A estrutura for realiza a repetio do bloco de comandos de forma mais refinada do que as
estruturas while, permitindo que o desenvolvedor programe a estrutura para que efetue o loop um
nmero pr-definido de vezes, e alm disso tambm permite que se escolha um valor de
incremento diferente na prpria declarao da estrutura, sem a necessidade de implementar esses
parmetros dentro do bloco de cdigos.
Sintaxe:
for (var_controle; teste_varivel; incremento) {
Bloco de comandos
}
Em que:
Var_controle uma varivel que possui um valor inicial, o qual ser avaliado apenas uma vez. o
ponto de partida da contagem de loops a serem realizados. Geralmente inicializamos essa varivel
dentro da prpria estrutura do for.
Teste_varivel um teste a ser realizado a cada iterao do loop, e caso retorne falso, o loop
encerrado. Geralmente um valor limite para a varivel de controle, o qual ao ser atingido aps
incrementos ou decrementos sucessivos, encerra o loop.
Incremento o valor que deve ser adicionado ou subtrtado da varivel de controle para que ela,
aps um nmero determinado de iteraes, possa atingir o valor limite que testado no parmetro
teste_varivel.
Vamos a um exemplo. Queremos imprimir na tela os nmeros de 1 a 15, um em cada linha:
<?php
for ($num = 1; $num <=15; $num++) {
print ($num <br/>);
}
?>
Note que nesse caso no precisamos declarar e atribuir a varivel antes de usar a estrutura for
(claro que podemos faz-lo se necessrio!). O comando print() ser executado 15 vezes, pois a
varivel $num inicializada com 1 e incrementada de 1 em 1 at chegar em 15.
P g i n a | 51
P g i n a | 52
Exemplo 02: Vamos criar outro array e visualizar seus valores e chaves com o comando foreach:
<?php
// criando um array para testes:
$vetor = array(SP => So Paulo,RJ => Rio de Janeiro,PE => Recife,
AM => Manaus,GO => Goinia,SC => Florianpolis);
// Visualizando o contedo do array e suas chaves:
foreach ($vetor as $estado => $capital) {
print(A capital de $estado $capital <br/>);
}
?>
Veja o resultado abaixo:
Se o array passado para o comando foreach for multidimensional, o contedo retornado tambm
ser um array. Veremos como tratar esse caso ao estudarmos mais a fundo os arrays em PHP.
P g i n a | 53
13 - Instruo break
A instruo break permite interromper a execuo dos
comandos for, foreach, while,do..while e switch em qualquer ponto do bloco de comandos. Desta
forma, podemos avaliar uma expresso e de acordo com o seu resultado, encerrar o loop
imediatamente.
Vamos a um exemplo de seu uso. Neste exemplo, o lao for tenta imprimir os nmeros de 1 a 50 na
tela, porm ao chegar no nmero 35 o loop interrompido pelo uso da instruo break.:
<?php
for ($x=1; $x <= 30; $x++) {
print(O valor de x $x <br/>);
if ($x == 15) {
break;
}
}
?>
P g i n a | 54
Se houverem estruturas de controle aninhadas em seu cdigo, podemos passar para a instruo
break um valor que indicar quantos nveis devem ser encerrados. Veja o exemplo a seguir:
<?php
for ($y=1; $y <=10; $y++) {
for ($x=1; $x <= 10; $x++) {
if ($y == 5) {
print (Loop encerrado);
break 2;
}
print($x);
if ($x % 10 == 0){
print (<br/>);
}
}
}
?>
Resultado:
Instruo continue
A instruo continue, assim como a instruo break, permite que a execuo do loop seja
interrompida. Porm, diferentemente do que acontece com a instruo break, o loop no
encerrado apenas a iterao atual interrompida, a partir do ponto onde se encontra a
instruo, e o loop prossegue na prxima iterao.
Exemplo:
<?php
for ($x=1; $x <= 10; $x++) {
if (($x == 4) || ($x == 6)) {
P g i n a | 55
continue;
}
print(O valor de x $x <br/>);
}
?>
Da mesma forma que ocorre com a instruo break, se houverem estruturas de controle aninhadas
em seu cdigo, podemos passar para a instruo continue um valor que indicar quantos nveis
devem ser afetados. Veja o exemplo a seguir:
<?php
for ($y=1; $y <=10; $y++) {
for ($x=1; $x <= 10; $x++) {
if ($y == 5) {
print (Nesta linha no so mostrados os nmeros <br/>);
continue 2;
}
print($x);
if ($x % 10 == 0){
print (<br/>);
}
}
}
?>
Veja o resultado a seguir :
P g i n a | 56
Criando um array
Podemos criar arrays usando dois mtodos distintos no PHP: com o construtor Array() e por criao
implcita.
Usando o construtor Array():
<?php
// Criando um array vazio:
$vetor = Array();// Criando um array unidimensional:
$vetor2 =Array(Fbio,28,12,150.60);//Criando um array de duas dimenses (matriz):
$matriz = Array(1=>Array(a,b,c),2=>Array(d,e,f),3=>Array(g,h,i));
?>
P g i n a | 57
Quando criamos arrays implicitamente, no declaramos o array antes de us-lo. Assim, o array
criado automaticamente quando referenciado. Usamos neste caso os caracteres [] (colchetes) em
vez dos parnteses:
<?php
$vetor[] = Fbio;
$vetor2[5] = Azul;
$vetor3[] = Array(1,2,3);
?>
P g i n a | 58
Nos exemplos acima, usamos a funo print_r() do PHP, a qual permite mostrar todos os
elementos do array e seus respectivos ndices, de uma s vez.
Note que ao tentarmos acessar o array aps ter sido removido foi gerado um erro na sada da tela:
P g i n a | 59
15 - Formulrios HTML
Um formulrio web uma pgina (ou parte de uma pgina) que contm elementos usados para
coletar informaes fornecidas pelo usurio, como caixas de texto, listas de seleo de opes,
checkboxes e botes de ao.
Um formulrio delimitado pelos marcadores <form> e </form>. Abaixo temos a sintaxe bsica
para criao de um formulrio HTML simples:
<form name=NOME action=scriptmethod=mtodo_envio enctype=tipo>
elementos do formulrio
</form>
Onde:
name o nome do formulrio, que pode ser usado para referenci-lo em una funo, por
exemplo.
action indica o script que dever efetuar o processamento dos dados inseridos no
formulrio. Em nosso caso, ser um script em PHP.
method o mtodo de envio dos dados para o servidor web onde est o script de
processamento. Pode ser GET ou POST.
enctype permite definir o formato com que os dados sero codificados antes de serem
enviados ao servidor http. Somente vlido quando o mtodo de envio for POST.
P g i n a | 60
P g i n a | 61
P g i n a | 62
<option value=C++>C++</option>
<option value=Java>Java</option>
<option value=PHP>PHP</option>
<option value=Python>Python</option>
<option value=Ruby>Ruby</option>
</select><br/>
<br/>
Selecione um arquivo de seu computador para upload:<br/>
<input type=file name=arquivo/><br/>
<br/>
<input type=submit name=submit value=Enviar /><br/>
<input type=reset name=reset value=Resetar /><br/>
</form>
</body>
</html>
O cdigo anterior produz a seguinte pgina web:
P g i n a | 63
Ao clicarmos no boto Enviar os dados do formulrio so enviados para processamento pelo script
indicado no parmetro ACTION da tag <form>. Em nosso exemplo, a pgina apresentar um erro,
pois ainda no codificamos o script, de nome processa.php, mas possvel ver na barra de
endereos do navegador o script sendo chamado:
isso a! Nesta lio revisamos a criao de formulrios web simples para coleta de informaes
fornecidas pelo usurio. Na prxima lio vamos aprender a codificar o script PHP que vai
receber essas informaes e process-las no servidor.
At mais!
P g i n a | 64
P g i n a | 65
na tela ou gravar em um banco de dados. Por exemplo, para atribuir esse valor a uma varivel
chamada nome no script:
$nome = $_POST[nome];
Cuidado para no se confundir: $nome uma varivel criada no script de processamento,
enome o nome do campo criado no formulrio, que contm a informao transmitida ao
servidor, via superglobal $_POST.
No caso dos checkboxes e caixas de seleo, que nos do a opo de selecionar mais de um item ao
mesmo tempo, precisamos utilizar um loop para varrer seu contedo e resgatar os dados
presentes. O exemplo abaixo mostra como obter os dados das linguagens de programao
selecionadas pelo usurio ao clicar nos checkboxes correspondentes:
// Verificando se os checkboxes foram selecionados
if(isset($_POST[linguagens])) {
echo As linguagens de programao escolhidas foram:<br/>;
// Efetuar loop pelo array de linguagens:
foreach($_POST[linguagens] as $linguagem) {
echo $linguagem . <br/>;
}
}
else {
echo Nenhuma linguagem de programao escolhida!<br/>;
}
Usamos a funo isset() para verificar se a varivel em questo foi definida isto ,
selinguagens[] foi criada quando o formulrio foi enviado, retornando o valor verdadeiro caso essa
varivel exista. Caso o usurio no tenha clicado em nenhum checkbox, linguagens[] no ser
definida e a funo isset() retornar falso. Note que no precisamos incluir os colchetes [] ao
avaliar a varivel com isset().
Se a varivel foi definida, ento podemos utilizar um lao foreach() para varrer seu contedo (pois
linguagens[] um array tambm) e retornar cada item individualmente. Desta forma:
foreach($_POST[linguagens] as $linguagem) {
echo $linguagem . <br/>;
P g i n a | 66
}
Assim, retornamos os elementos individuais presentes em linguagens[], que so as linguagens
selecionadas pelo usurio ao clicar nos checkboxes. Usamos a mesma tcnica para retornar os
dados enviados a partir do campo SELECT do formulrio:
if(isset($_POST[tecnologias])) {
echo Voc selecionou as seguintes tecnologias:<br/>;
// Loop foreach para retornar as tecnologias selecionadas:
foreach($_POST[tecnologias] as $tecnologia) {
echo $tecnologia . <br/>;
}
}
else {
echo Nenhuma tecnologia selecionada. Que pena! <br/>;
}
Se voc quiser visualizar os dados presentes no array (por exemplo, para debugar o script), pode
usar a funo print_r():
print_r($_POST);
Veja o resultado retornado aps preencher o formulrio e envi-lo:
Entre colchetes esto os nomes dos campos do formulrio, e associados a eles seus respectivos
valores (informados pelo usurio). Note que os campos linguagens e tecnologias tambm so
arrays, podendo carregar mais de uma informao em cada um.
Na caixa a seguir voc pode ver a listagem completa do cdigo do script processa.php, usado em
nossos exemplos:
<!doctype html>
<html lang=pt=br>
<head>
<title>Acesso</title>
P g i n a | 67
</head>
<body>
<?php
$nome = $_POST[nome];
$sobrenome = $_POST[sobrenome];
$sexo = $_POST[sexo];
$comentarios = $_POST[comentarios];
$senha = $_POST[senha];
echo Seu nome . $nome . . $sobrenome . <br/>;
echo O sexo informado foi . $sexo . <br/>;
echo A senha digitada . $senha . <br/>;
echo Voc comentou o seguinte: <br> . $comentarios . <br/>;
// Verificando os checkboxes
if(isset($_POST[linguagens])) {
echo As linguagens de programao escolhidas foram:<br/>;
// Efetuar loop pelo array de linguagens:
foreach($_POST[linguagens] as $linguagem) {
echo $linguagem . <br/>;
}
}
else {
echo Nenhuma linguagem de programao escolhida!<br/>;
}
//
// Verificando as tecnologias do campo SELECT:
if(isset($_POST[tecnologias])) {
echo Voc selecionou as seguintes tecnologias:<br/>;
// Loop foreach para retornar as tecnologias selecionadas:
foreach($_POST[tecnologias] as $tecnologia) {
echo $tecnologia . <br/>;
P g i n a | 68
}
}
else {
echo Nenhuma tecnologia selecionada. Que pena! <br/>;
}
//
// Mostrando todos os itens do array associativo $_POST:
print_r($_POST);
?>
</body>
</html>
Aps entrar com dados no formulrio e clicar em Enviar, os dados so enviados ao servidor e ento
processados, e o resultado pode ser visto abaixo (nenhum arquivo foi selecionado):
isso a! Na prxima lio iremos estudar mais algumas funes muito teis em PHP. At l!
P g i n a | 69
P g i n a | 70
Vamos precisar tambm de um banco de dados criado no MySQL para nossos testes. Vamos criar
um banco de nome banco_teste, e um usurio de nome fabio, que ser utilizado para efetuar a
conexo ao banco criado. Tambm iremos dar permisso total a esse usurio sobre o banco de
dados. Para tal, conecte-se ao MySQL pelo prompt de comandos (ou terminal, se estiver no Linux),
e execute a sequncia de comandos a seguir:
CREATE DATABASE banco_teste;
USE banco_teste;
CREATE TABLE Cadastro (NomeCliente VARCHAR (20), SobrenomeCliente VARCHAR (30), SEXO CHAR(1));
CREATE USER fabio@localhost;
GRANT ALL ON banco_teste.* TO fabio@localhost;
SET PASSWORD FOR fabio@localhost = PASSWORD(123);
Dados necessrios para a criao do script de processamento em PHP:
IP ou hostname do servidor MySQL;
Nome do Banco de Dados a acessar;
Nome de usurio do banco de dados;
Senha do usurio.
Vejamos agora como efetuar a conexo ao banco de dados criado. Para isso crie um novo
documento PHP, que salvaremos com o nome de processa.php, e ento siga os procedimentos a
seguir para criar o cdigo deste arquivo.
P g i n a | 71
Vamos criar a string de conexo e armazen-la em uma varivel de nome $strcon, usando os dados
a seguir:
Hostname do servidor MySQL: localhost
Nome do Banco de Dados a acessar: banco_teste
Nome de usurio do banco de dados: fabio
Senha do usurio: 123
Cdigo:
$strcon = mysqli_connect(localhost,fabio,123,banco_teste) or die(Erro ao conectar ao
banco de dados requisitado);
Aps executar essa instruo, a varivel $strcon deve conter os dados necessrios para conexo ao
banco de dados. Usamos a funo die() que ser executada caso haja algum erro durante a
execuo de mysqli_connect(), exibindo a mensagem No foi possvel conectar ao MySQL como
aviso.
Veja como ficar o cdigo no arquivo processa.php para a realizao de nosso primeiro teste, que
a conexo ao banco de dados criado:
<?php
$nome = $_POST[NomeCliente];
$sobrenome = $_POST[SobrenomeCliente];
$sexo = $_POST[Sexo];
$strcon = mysqli_connect(localhost,fabio,123,banco_teste);
if (!$strcon) {
die(No foi possvel conectar ao MySQL);
}
echo Conexo realizada com sucesso!;
mysqli_close($strcon);
?>
Aps criar os documentos (formulrio e arquivo processa.php), teste-os abrindo o formulrio em
um navegador, preenchendo os dados e clicando no boto Enviar Se a conexo tiver xito, voc
ver a mensagem Conexo realizada com sucesso na pgina. Vamos agora modificar o cdigo
para que possamos inserir dados no banco de dados criado.
Passo 2: Vamos criar a declarao SQL que ser executada no servidor, e armazen-la em uma
varivel. Como exemplo, vou inserir um registro novo na tabela Cadastro do banco de dados (que
contm as colunas NomeCliente, SobrenomeCliente e Sexo ), a partir de informaes coletadas
P g i n a | 72
P g i n a | 73
Funo die()
P g i n a | 74
Essa funo executada caso haja algum problema na execuo das funes mostradas
anteriormente, exibindo uma mensagem de erro, e finalizando o script PHP naquele ponto. Passe
como parmetro para esta funo a mensagem a ser exibida.
isso a! Na prxima lio vamos aprender a realizar consultas no banco de dados. At!
P g i n a | 75
Abaixo voc pode ver o script completo do arquivo consulta.php, que recebe os dados a serem
consultados de um formulrio e executa a consulta requisitada:
<?php
// Criando tabela e cabealho de dados:
echo "<table border=1>";
echo "<tr>";
echo "<th>NOME</th>";
echo "<th>SOBRENOME</th>";
echo "<th>SEXO</th>";
echo "</tr>";
// Conectando ao banco de dados:
P g i n a | 76
P g i n a | 77
A seguir temos o cdigo da pgina que contm o formulrio de cadastro de clientes, conforme
exibida na figura anterior:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<title> Testando conexo ao banco de dados </title>
</head>
<body>
<h3>Formulrio de Cadastro de Clientes</h3><br>
<form name="Cadastro" action="cadastrar.php" method="POST">
<label>Nome do Cliente: </label>
<input type="text" name="NomeCliente" size="30"><br>
<label>Sobrenome do Cliente: </label>
<input type="text" name="SobrenomeCliente" size="45"><br>
<label>Sexo do Cliente: </label>
<select name="Sexo">
<option value="M">Masculino</option>
<option value="F">Feminino</option>
<option value="N">No Declarado</option>
</select><br>
<input type="submit" name="enviar" value="Enviar">
</form>
</body>
</html>
P g i n a | 78
Ao clicar no boto Enviar, os dados so enviados para processamento por um script PHP que
batizaremos de cadastrar.php para execuo do cadastro.
Vamos ao cdigo exemplo do script cadastrar.php:
Aps preencher o cadastro e clicar no boto enviar, os dados sero enviados do formulrio para o
script cadastra.php, e se no houver nenhum problema, sero gravados no banco de dados, e a
seguinte mensagem ser mostrada na pgina:
P g i n a | 79
Excelente! Temos agora um script que pode ser utilizado para cadastrar dados em um banco de
dados MySQL. Esse script pode ser bem refinado ainda, com a incluso de testes de validao de
campos, verificao de erros diversos de conexo e gravao no banco, e outras melhorias que
vamos mostrar nos prximos tutoriais.
Porm, no momento o mais importante aprender a realizar consultas no banco de dados, a fim
de verificar os dados que foram gravados e obter informaes especficas armazenadas no MySQL.
Esse o assunto de nossa prxima lio.