You are on page 1of 67

Programao Web com PHP

O que PHP?

PHP uma linguagem de


programao multiparadigma,
com tipagem dinmica e fraca,
voltada para o desenvolvimento
de websites dinmicos;

O que da pra fazer


com PHP?

PHP uma linguagem voltada para o


desenvolvimento de websites dinmicos;
Com PHP, podemos criar websites capazes
de:
Enviar e-mail utilizando servios de e-mail
(Sendmail, Postfix);
Fazer diversas operaes em banco de
dados;
Trabalhar com dados enviados por
formulrio;
Trabalhar com cookies e sesses HTTP;

Como a web funciona?

Cliente x Servidor

Na web, como em qualquer arquitetura


Cliente x Servidor, o funcionamento baseiase em requisio de um cliente (Internet
Explorer, Firefox, Safari, Opera, etc.) a um
servidor (Apache, Internet Information
Service, Glassfish, etc.) e resposta de um
servidor a um cliente;
Quando h acesso a banco de dados, o
servidor trabalha de forma diferenciada,
pois a implementao de um servidor web
um servio diferente implementao de
um servidor de banco de dados;

Cliente x Servidor

Na web, o cliente o navegador (Firefox,


por exemplo). O navegador funciona como
um interpretador (compilador x
interpretador, lembra a diferena?);
O navegador capaz de interpretar
apenas HTML, Javascript e CSS!
PHP interpretado no servidor e no no
cliente. O servidor aciona o interpretador
PHP, que faz as operaes necessrias
(acesso a banco de dados, por exemplo),
retorna uma resposta ao servidor web;

Cliente x Servidor

O servidor web interpreta a resposta,


transforma a mesma em HTML e envia ao
cliente;
O cliente (navegador) interpreta o HTML e
exibe na tela o resultado da interpretao.

Cliente x Servidor
cadastrarUsuario.php

1
6
A, esse HTML eu sei que tu
entende!
A vi, to com
esse arquivo aqui,
interpreta ele pra
mim?

Ae, interpretei e virou esse


HTML a! Agora contigo
brother!

2
5

3
4

Firmeza, ta inserido!

E a MySQL, beleza? O
Apache pediu pra eu
interpretar um arquivo, da
eu preciso inserir um dados
na tabela usuario. Toma a
os dados e insere, beleza?

Onde, quando e por


que usar PHP?

Bom, que PHP utilizado para


desenvolvimento de websites dinmicos
ns j sabemos, mas onde, quando e por
que usar PHP?
Pela sua facilidade de uso e de
aprendizagem, o uso de PHP constante
em sites simples, sendo geralmente a porta
de entrada no desenvolvimento web para
auto-didatas;
O propsito do PHP ser utilizado para
sites e no em grandes e confiveis
sistemas web;

Onde, quando e por


que usar PHP?

PHP uma resposta rpida para problemas


pequenos;
Ningum vai usar Java ou .NET para fazer
um site dinmico que acessa um banco de
dados com trs tabelinhas;
Se voc precisa de muita velocidade,
poder utilizar um dos frameworks MVC
para PHP;

PHP na Prtica

Tags

Quanto utilizamos HTML, tudo tag!

<html>
<head>
<title>Ttulo da
Pgina</title>
</head>
<body>
Texto da pgina.
</body>
</html>

Tags

Temos tag para o documento HTML, tag


para o ttulo da pgina...;
Temos tag para colocar nosso cdigo PHP!
Todo o nosso cdigo ficara entre as tags do
PHP, que so <?php ?>.
<html>
<head>
<title>Ttulo da Pgina</title>
</head>
<body>
<?php
// Cdigo PHP aqui!
?>
</body>
</html>

Sintaxe: Escrevendo
na tela

Sempre comeamos escrevendo nosso Ol


mundo default, n?!
Para escrevermos na tela em PHP
utilizamos o seguinte comando:
<?php
echo "Ol mundo!";
?>

echo no PHP semelhante ao print no python.

Prtica

Faa um arquivo PHP que escreva na tela


Meu primeiro exemplo PHP.

Faa um programa que escreva na tela


Meu primeiro exemplo PHP em negrito.

Variveis

Variveis so definidas utilizando um cifro


($);
Em PHP, variveis possuem tipagem
dinmica e fraca;
Tipagem dinmica significa que uma
varivel assume um tipo de acordo com o
valor que lhe atribudo;
Tipagem fraca significa que voc pode
trabalhar de forma livre com as variveis;

Variveis

A varivel n1 do tipo
inteiro.

$n1 = 10;
$n2 = "5";
$n3 = $n1 + $n2;

A varivel n2 do tipo
string.
Qual o tipo da varivel n3?

Utilizando controle
de fluxo

Para controle de deciso temos o if... else


if... else e o switch... case;
Para controle de repetio, temos o for, o
foreach, o while e o do... while;

if
if($numero < 20){
echo "$numero menor que 20";
} else {
echo "$numero maior que 20";
}

if(condio){
<faz alguma coisa quando condio verdadeira>
} else {
<faz alguma coisa quando condio falsa>
}

switch
Voc pode usar strings!

switch($nome){
case "Jos":
echo "Ol senhor Jos!";
break;
case "Maria":
echo "Ol senhora Maria!";
break;
default:
echo "Ol $nome!";
}

ATENO!

while
while($numero < 200){
$numero++;
}

while(condio){
<faz alguma coisa enquanto condio for verdadeira>
}

do... while
do{
$numero++;
} while($numero < 200);

do {
<faz alguma coisa e verifica se condio
verdadeira.
Em seguida, repete alguma coisa enquanto
condio for verdadeira>
} while(condio);

for
for($i = 1; $i <= 80; $i++){
echo "$i<br />";
}

for(posio inicial, condio, passo){


<faz alguma coisa enquanto condio for verdadeira.
}

foreach

Veremos o foreach mais adiante;

Prtica

Desenvolva um algoritmo que leia um


nmero x e imprima na tela todos os
mpares entre 1 e x.

Estruturas de Dados em
PHP

Estruturas de Dados

PHP suporta apenas uma estrutura de


dados: o array/vetor;
Mas no se engane com o array do PHP;
O array do PHP consegue ser a
implementao de praticamente todas as
estruturas de dados: vetor, matriz, lista,
pilha, fila, tabela hash, etc.;

Array

Arrays possuem alocao 100% dinmica;


Arrays podem possuir ndices numricos
(inteiros), alfanumricos e alfabticos
(strings) ou mesmo objetos personalizados
Arrays associativos;
Arrays podem ser acessado apenas
utilizando funes, simulando listas, pilhas
ou filas;

Array
Declarando um array.
$vetor = array(1, 2, 3);
foreach($vetor as $numero){
echo "$numero<br />";
}

foreach(array as variavel){
<acessa cada elemento de array unicamente,
armazenando seu contedo temporariamente
em variavel>
}

Array
$vetor = array(1, 2, 3);
$tamanho = sizeof($vetor);
for($i = 0; $i < $tamanho; $i++){
echo "$vetor[$i]";
}

Trabalhando com
Formulrios

Formulrios

Criar um formulrio que simula o sistema


de venda de uma loja de esportes;
O formulrio enviar os dados via
requisio POST para a pgina PHP
pedido.php;
Esta pgina processar a requisio e
enviar uma resposta.

Formulrios

Formulrios

Os dados enviados em um formulrio so


armazenados em um array! (:
Voc pode acessar facilmente estes dados
atravs deste array;
Existem trs arrays especiais capazes de
tratar estes dados enviados por
formulrios: $_GET (para requisies do
tipo GET), $_POST (para requisies do tipo
POST) e $_REQUEST (para ambos os tipos
de requisio);

Formulrios

Primeiramente, escreveremos em nossa


pgina uma mensagem informando que o
pedido foi processado;
Depois pegaremos as quantidades
informadas em nosso array $_POST
(lembre-se que fizemos uma requisio do
tipo POST);
Declararemos uma varivel para
representar o custo de cada uma das bolas;
Multiplicaremos o valor da quantidade de
cada bola pelo seu respectivo preo;
Mostraremos na tela o valor total de cada
item e o valor total da compra.

Formulrios

Formulrios

Formulrios
<?php
echo "<h2>Seu pedido foi processado com sucesso.</h2>";
$BvQtd = $_POST['BvQtd'];
$BfQtd = $_POST['BfQtd'];
$BhQtd = $_POST['BhQtd'];
$PRECOBV = 25;
$PRECOBV = 10;
$PRECOBH = 20);
$valorBV = $BvQtd * $PRECOBV;
$valorBF = $BfQtd * $PRECOBF;
$valorBH = $BhQtd * $PRECOBH;
$valorTotal = $valorBV + $valorBF + $valorBH;
echo "$BvQtd bolas de volei lhe custaram R$ $valorBV<br
/>";
echo "$BfQtd bolas de futebol lhe custaram R$
$valorBF<br />";
echo "$BhQtd bolas de handebol lhe custaram R$ $valorBH<br
/>";
echo "Sua compra lhe custou R$ $valorTotal<br />";
?>

Formulrios

Vamos utilizar controle de fluxo para


determinar que se um item no foi
preenchido ou foi preenchido com valor 0,
este item no dever aparecer na pgina
PHP que processa o formulrio;

Formulrios

Formulrios

Funes

Funes

Definir funes em PHP simples;


A palavra chave que define funes bem
sugestiva: function;
A sintaxe bem declarativa.

Funes
function escreverNaTela($texto){
echo $texto;
}
function maiorValor($n1, $n2){
if($n1 > $n2){
return $n1;
} else {
return $n2;
}
}

Valor padro para


argumentos

possvel definir uma valor padro para


um ou mais argumentos de uma funo;

function contar($limite = 100){


for($i = 0; $i < $limite; $i++){
echo "$i<br />";
}
}

Valor ou Referncia?

Assim como C++ e C# e ao contrrio de C


e Java, PHP possui passagem de
parmetros por referncias;
A forma de fazer praticamente igual
forma feita em C++ (se for feito como se
faz em C++ funciona, porm h uma outra
forma de fazer);
Utiliza-se o & na declarao da funo;
O & tambm pode ser utilizado no
momento em que voc chama a funo;
Para gerar um cdigo melhor,
aconselhvel usar o & na assinatura da
funo.

Valor ou Referncia?
function setarComDez(&$val){
$val = 10;
}
function setarComVinte($val){
$val = 20;
}
setarComDez($x);
setarComVinte(&$y);

Warning: Call-time pass-by-reference has


been deprecated;

Prtica

Defina uma funo que receba uma


varivel e um valor. Essa funo dever
configurar esta varivel com este valor sem
retornar valor algum.

Acessando Banco de
Dados MySQL

PHP & MySQL

PHP e MySQL formam uma dupla


extremamente famosa da internet;
Acessar um banco de dados MySQL
utilizando PHP no difcil;
Utilizamos uma funo que abre uma
conexo com um servidor e a partir deste
momento podemos lidar facilmente com
esta conexo, inserindo, atualizando,
apagando ou obtendo dados do banco.

PHP & MySQL

Vamos conhecer as funes do PHP para


trabalhar com MySQL, sem entrar em
detalhes sobre os scripts utilizados para
acessar o banco de dados.

Bibliotecas

Trabalharemos com a biblioteca mysql


utilizada por padro com o PHP;
O ideal seria utilizarmos a biblioteca mysqli
(MySQL Improved), porm ela trabalha
com objetos, e no conheceremos
orientao a objetos aqui;
Esta biblioteca para conexes possui
melhor desempenho e maior segurana;
O importante o conceito sobre a conexo,
sabendo como funciona conexo com banco
de dados usando PHP e MySQL usando a
biblioteca mysql, voc facilmente migra
para a biblioteca mysqli.

Conectando-se ao
banco de dados

Para conectar-se ao banco de dados,


utilizamos a funo mysql_connect;

Senha do usurio.

Porta onde se
conectar no servidor.

$conexao = mysql_connect
("localhost", "php", "php", "minicurso", 3306);

Servidor ao qual estamos nos conectando.


Senha do usurio.
Usurio utilizado para obter conexo.

Testando a conexo

A funo mysql_connect retorna um


identificador ou false;
Atravs de um if conseguimos descobrir se
estamos conectados ao banco de dados!
if($conexao){
echo "Eba, conectei no banco!";
} else {
echo Ops, deu erro!";
}

Prtica

Crie uma funo que retorne uma conexo


com o banco de dados. Determine valores
padres para todos os atributos, tornandoos opcionais.

Testando a conexo

Esquema do Banco de
Dados
clientes

(1, 1)

(0, n)

compras
(0, n)

(1, 1)

produtos

O que faremos?

Teremos dois clientes inseridos no banco de


dados: Maria e Jos;
Teremos dois produtos inseridos no banco
de dados: Camisa e Tnis;
Criaremos um pequeno site capaz de
realizar compras! (:

Do que precisamos?

Precisamos de um select box que possua


todos os clientes;
Precisamos de um select box que possua
todos os produtos;
Precisamos de um campo de entrada para
que a quantidade desejada seja informada;

Do que precisamos?

Para colocar todos os clientes em um select


box, precisamos de peg-los no banco de
dados antes;
Para colocar todos os produtos em um
select box, precisamos de peg-los no
banco de dados antes;

Recuperando dados do
banco

Para recuperarmos dados de um banco de


dados utilizando SQL, executamos a funo
mysql_query();
Vamos us-la duas vezes para selecionar
nossos clientes e nossos produtos;

$rsClientes = mysql_query("SELECT * FROM clientes");


$rsProdutos = mysql_query("SELECT * FROM produtos");

Trabalhando com
rowsets

Quando executamos uma consulta que nos


retorna algum dado do banco, a biblioteca
mysql nos prov um rowset (conjunto de
linhas, traduzindo);
Para pegarmos uma linha deste conjunto,
utilizamos a funo mysql_fetch_assoc,
passando o rowset como parmetro;
Como nosso rowset possui vrios valores
de retorno, devemos ento utilizar um
while para percorrer todo o rowset, linha a
linha.
Vamos colocar todos os nossos clientes em
um array;
Faremos a mesma coisa com produtos;

Trabalhando com
rowsets
$clientes = array();
$i = 0;
while($cliente = mysql_fetch_assoc($rsClientes)){
$clientes[$i] = $cliente;
$i++;
}
$produtos = array();
$i = 0;
while($produto = mysql_fetch_assoc($rsProdutos)){
$produtos[$i] = $produto;
$i++;
}

Misturando PHP com


HTML

Criaremos nosso select box e utilizaremos o


foreach para colocar todos os elementos no
nosso select box;

Misturando PHP com


HTML

Inserindo a compra

Agora fcil!
Precisamos apenas inserir a compra no
banco de dados;
Vamos obter as informaes do formulrio
e ento vamos inserir a compra no banco
de dados!

Inserindo a Compra

You might also like