Você está na página 1de 41

PHP

PHP e a WWW
Funcionamento do PHP
PHP com Apache e MySQL
XAMPP

PHP e a WWW

Pginas estticas / Pginas dinmicas

O PHP permite a criao de pginas dinmicas.

Informao dinmica
O que fazer quando a informao que est no website
muda constantemente, como por exemplo as
cotaes da bolsa?
Neste caso, os documentos estticos em HTML no
so a melhor soluo.
necessrio criar HTML dinmico para que no
momento em que o cliente contacta o servidor lhe
seja enviada a informao actualizada.

PHP
uma linguagem de programao

vocacionada para o desenvolvimento de


aplicaes orientadas para a www.

Existem 2 tipos de linguagens web:


- Baseadas no cliente (browser) (JavaScript,
ActiveX, Java Applets, etc)
- Baseadas no servidor.
(PHP, ASP, etc)

PHP
O cdigo PHP embebido no cdigo HTML dando

origem a um script contendo instrues especficas.


O servidor l o cdigo PHP e interpreta os

comandos.

Exemplo 1
<?php /*php_1.php */?>
<html>
<head>
<title> Resultado </title>
</head>
<body>
<?php $X=5; $Y=3; $Z=$X+$Y;
echo Total ;
echo = $Z;
?>
</body>
</html>

Formulrios HTML
Botes
Radio buttons
Seleccion lists
Input boxes
Checkbox
Etc

Formulrios HTML

method - Especifica o modo como a informao

transmitida. Pode ser GET ou POST.


action - Indica o nome e a localizao do script PHP

que ir processar a informao que foi introduzida no


formulrio.

Mtodos de transmisso
O protocolo HTTP (HiperText Transfer Protocol) utiliza
vrios mtodos de manipulao e organizao dos
dados.
Actualmente, os dois mtodos mais utilizados para
submeter dados de formulrios so o GET e o POST.
Ambos os mtodos transferem dados do browser para
o servidor, a maior diferena entre eles a maneira
como essa informao transmitida.

GET
O browser acrescenta ao URL, especificado no atributo
ACTION, um "?" e os valores codificados;
Os dados no so encriptados, logo informaes que
exigem segurana no devem ser manipuladas por
este mtodo;
Suporta apenas at 128 caracteres, logo til para
valores pequenos.

POST
Os dados introduzidos num formulrio fazem parte do
corpo da mensagem enviada para o servidor;
Pode encriptar os dados;
possvel transferir uma grande quantidade de dados.
Este o mtodo aconselhado.

Exemplo 2
Situao em que so usados dois ficheiros:

form.html - o local onde o utilizador far os inputs.


php_2.php - Contm os comandos PHP que iro
processar os dados inseridos no formulrio.

Exemplo 2
<html>
<head>
<title> formulrio PHP </title>
</head>
<body>
<form enctype="multipart/form-data" method="POST" action="php_2.php">
<p> Nome <input type="text" name="nome" size=30> </p>
<p> Idade <input type="text" name="idade" size=2> </p>
<p> Qual o carro que mais gostas?
<select name="marca">
<option> Ferrari </option>
<option> Mercedes </option>
<option> BMW </option>
</select> </p>
<p> <input type="submit" value="OK"> </p>
</form>
</body>
</html>

Exemplo 2
<?php /*php_2.php*/ ?>
Nota: Ateno juno de
<html>
texto com variveis numa
<head>
instruo de escrita
<title> Resultado </title>
</head>
<body>
<?php
echo "O meu nome ".$_POST['nome']. " ,tenho " .$_POST['idade'].
" anos e gosto de carros da marca "
.$_POST['marca'];
?>
</body>
</html>

O que preciso?
Um cliente (browser)
Um servidor Web (ex.: Apache)
Um servidor de bases de dados (ex.: MySQL)
Uma ferramenta que permita ligar tudo isto

(ex.: PHP)

3
PHP

2
Cliente

BD

Servidor web

1 - O cliente solicita a pgina ao servidor web. Este,


verificando que existe um script PHP, chama o mdulo PHP
para efectuar o processamento.
2 - Se no script existirem comandos que abrem uma ligao
a uma base de dados, o PHP trata de efectuar essa
ligao.
3 - Os dados pretendidos so ento extraidos da base de
dados, sendo enviados pelo PHP ao servidor web em
formato HTML.
4 - O servidor web envia os dados ao cliente, sendo estes
visualizados numa pgina HTML devidamente formatada.

Porque utilizar o Apache?


o lder do mercado;
o mais seguro;
No tem concorrentes quanto riqueza de recursos,

estabilidade, performance, ...

Porque utilizar o MySQL?


Baixa exigncia de recursos de hardware;
Simplicidade de administrao;
o mais veloz do mercado;
Foi optimizado para as aplicaes tpicas da Web,

onde ocorrem mais consultas do que actualizaes.

Porque usar PHP, Apache e


MySQL?
Porque fornecem tudo o que necessitamos

para construir aplicaes e web sites


sofisticados, e de maneira mais simples do
que outras alternativas.

Principalmente porque so software livre!

Tenho que utilizar os trs em


conjunto?
No, esta apenas uma combinao

popular na Internet. Outras alternativas


seriam:
Apache com Perl, Python, ASP, Java, ...
PHP com IIS, PWS, Xitami, ...
PHP com PostgreSQL, Interbase, Oracle, DB2 ...
MySQL com Perl, Phyton, ASP, Java, ...

Software
Xampp -O XAMPP um servidor Web multiplataforma
constitudo por um servidor HTTP Apache.
X- Sistema operativo (atualmente suportado por
windows, Linux, SunSolaris e MacOs.
A-Apache
M-MySQL
P-PHP
P-PERL

wamp - Windows, Apache, MySQL e PHP


lamp - Linux, Apache, MySQL e PHP

PHP

Tipos de dados
Variveis e constantes
Operadores
Estruturas de controlo

Operadores, tipos de dados e


alguns caracteres especiais
Operadores
Aritmticos

Operadores lgicos

+ - * / %
+= -= *= /= %=
++ --

! NOT
&& AND
|| OR

Tipos de dados
Booleanos
Inteiros, Strings, Array, Object
Nmeros reais (floating point)

Operadores
relacionais
== != < <=
> >= === !==
=== (igualdade restrita)

Alguns caracteres especiais


\n

Muda de linha

\t

Tabulao horizontal

\r

Volta incio da linha

PHP

PHP

Variveis

$var=1234; //inteiro
$var=-1234; //inteiro
$var= 1.234 //real
$var= 1.2e3
$var=5;
$var2= O valor da varivel $var;
Em PHP o tipo de dados das variveis no
definido pelo programador.

PHP

Arrays
0

$arr= array(5,20,32,400,500,62,47,58);
echo $arr[1]; // resulta em 20
Array multidimensional:
$arr=array(1,2, array(Carlos, array(7,9) ) , xa);
echo $arr[0]; //resulta em 1
echo $arr[2][0]; // resulta em Carlos
echo $arr[2][1][1]; // resulta em 9

PHP

Estruturas de controlo
if(condio)
<bloco de instrues>
[else
<bloco de instrues>]

while (condio)
<bloco de instrues>;

switch (selector) {
case valor1: <bloco> break;
case valor2: <bloco> break;

[default: <bloco>; ] }
do <bloco de instrues>
while (condio);

for (inicializao; condio; incremento)


<bloco de instrues>;

PHP

Exemplo
<table border=1>
<?php
for($i=1; $i<6; $i++)
{
echo '<tr>';
$q=$i*$i*$i;
echo "<td> $i </td>";
echo "<td> $q </td>";
echo '</tr>';
}
?>
</table>

i3

PHP

SQL / MySQL
Ligao a base de dados
Seleco e visualizao de registos
Adicionar, Eliminar, Pesquisar e Editar registos

Acesso a bases de dados


com PHP
1. - Captar os dados
2. - Estabelecer a ligao
3. - Aplicar um comando SQL
4. - Preparar os dados obtidos

Principais funes com suporte ao


MySQL
improved

mysqli_connect - Estabelece uma ligao ao servidor


ex.: $ligax = mysqli_connect('localhost', 'root', password');
mysqli_select_db - Selecciona uma base de dados
ex.: mysqli_select_db($ligax, 'vendas');
mysqli_query - Interroga uma base de dados
ex.: mysqli_query($ligax, $insere);
mysqli_num_rows - Devolve n. de registos resultantes de uma
consulta.
ex.: $nregistos = mysqli_num_rows($result);
mysqli_fetch_assoc - Guarda num array o resultado de uma
consulta.
ex.:

for ($i=0; $i <$nregistos; $i++) {


$registo = mysqli_fetch_assoc($result);
echo '<tr> <td>' .$registo['CodCli']. '</td>';
echo
'<td>' .$registo['Nome']. '</td>';
echo
'<td>' .$registo['Morada']. '<td>
</tr>'; }

Exemplo

Servidor

BD vendas

Browser
PHP

Clientes

Encomendas

Fornecedores

Artigos

Ficheiro ligacao.php
$host = 'localhost';
$user = 'root';
$pwd = '';
$db = dados';
$ligax=mysqli_connect($host, $user, $pwd) or
die ('No conseguiu fazer a conexo ao servidor');
mysqli_select_db($ligax,$db);
<?php include (ligacao.php);?>

Listar dados de uma BD

LISTAR

<html>
<head> <title> Listar Clientes </title> </head>
<body> <h2> Lista de clientes: </h2> <br>
<?php
$ligax = mysqli_connect('localhost', 'root', '');
if (!$ligax) {echo '<p> Falha na ligao.';}
mysqli_select_db($ligax, 'vendas');
$consulta = "Select * From Clientes";
$result = mysqli_query($ligax, $consulta);
$nregistos = mysqli_num_rows($result);
echo "N de registos encontrados: $nregistos ";
?>
<br> <table border="1">
<tr><td> Codigo: <td> Nome: <td> Morada: </tr>
<?php
for ($i=0; $i <$nregistos; $i++) {
$registo = mysqli_fetch_assoc($result);
echo '<tr>';
echo '<td>'.$registo['CodCli'].'</td>';
echo '<td>'.$registo['Nome'].'</td>';
echo '<td>'.$registo['Morada'].'<td>';
echo '</tr>'; echo '</p>';
}
?>
</table> <br> <a href="index.htm">Voltar entrada</a>
</body>
</html>

Pesquisar dados numa BD

PESQUISAR

Cdigo php para pesquisar dados da tabela

<html> <head> <title>Mostrar</title> </head>


<body> <h3>Mostrar cliente procurado</h3>
<?php /*pesquisa.php*/
$nomeproc = $_POST['nome'];
if (!$nomeproc)
{echo "Volte atrs e escreva o nome.";}
echo "<p>Nome procurado: $nomeproc. </p>";
$ligax = mysqli_connect('localhost', 'root','');
if (!$ligax){echo "<p> Falha na ligao."; exit; }
mysqli_select_db($ligax, 'vendas');
$procura = "Select * from clientes
where nome like %".$nomeproc."% ";
$result = mysqli_query($ligax, $procura);
$nregistos = mysqli_num_rows($result);
echo "N de registos encontrados: $nregistos";
?>
<table border="1">
<tr><td> Codigo: <td> Nome: <td> Morada: </tr>
<?php
for ($i=0; $i <$nregistos; $i++) {
$registo = mysqli_fetch_assoc($result);
echo '<tr> <td>' .$registo['CodCli']. '</td>';
echo
'<td>' .$registo['Nome']. '</td>';
echo
'<td>' .$registo['Morada']. '<td> </tr>'; }
?> </table>
<p> <a href="listar.php"> Listar registos </a>
</body></html>

Adicionar dados a uma BD

ADICIONAR

<html>
<head> <title> Inserir </title> </head>
<body> <h2> Novo cliente </h2>
<?php /*inserir.php*/
$cod = $_POST['codcli'];
$nome = $_POST['nome'];
$morada = $_POST['morada'];
echo 'Dados recebidos: <br />';
echo 'Cdigo: '.$cod.'<br />';
echo 'Nome: '.$nome.'<br />';
echo 'Morada: '.$morada.'<br />';
$ligax = mysqli_connect('localhost', 'root', '');
if (!$ligax) {echo '<p> Erro: Falha na ligao.'; exit;}
mysqli_select_db($ligax, 'vendas');
$insere = INSERT INTO clientes ( CodCli, Nome, Morada )
VALUES ( ".$cod. , ".$nome. , ".$morada. )";
$result = mysqli_query($ligax, $insere);
if ($result==1) echo "<p>Dados inseridos<br>";
else "<p>Dados no inseridos<br>";
?>
<p> <a href="index.htm">Voltar entrada</a>
<p> <a href="listar.php">Listar clientes</a>
</body>
</html>

Eliminar dados numa BD

ELIMINAR

<html>
<head> <title> Remover </title> </head>
<body> <h2> Remover cliente </h2>
<?php
$codrem = $_POST['codcli'];
if (!$codrem) {echo 'Volte atrs e escreva o cdigo do cliente a remover.'; }
echo "Cliente a remover: $codrem. <p>";
$ligax = mysqli_connect('localhost', 'root','');
if (!$ligax){echo "<p> Falha na ligao."; exit; }
mysqli_select_db($ligax, 'vendas');
$consulta = "Select * From Clientes";
$result = mysqli_query($ligax, $consulta);
$nr_antes = mysqli_num_rows($result);
$remove = "delete from clientes
where codcli = ".$codrem." ' ";
$result = mysqli_query($ligax, $remove);
if ($result==0) echo "<p>No removido<br>";
$consulta = "Select * From Clientes";
$result = mysqli_query($ligax, $consulta);
$nr_depois = mysqli_num_rows($result);
$nr_removidos = $nr_antes - $nr_depois;
echo 'N de registos removidos: '.$nr_removidos;
?>
<p> <a href="listar.php"> Listar registos </a>
</body> </html>

Exemplos de validaes em PHP


if ($pass!=$conf_pass || $pass=="") { $flag=true; $flag_pass=true;

}
if (!preg_match ("/^[0-9]{4}[\-][0-9]{3}$/",$cod_postal)) { $flag=true;

$flag_cod_postal=true;
}
if (!preg_match ("/^[0-9]{4}$/",$ano_nasc)) { $flag=true;

$flag_ano_nasc=true;
}
if (!preg_match ("/^[0-9]{9,12}$/",$telefone)) { $flag=true;

$flag_telefone=true;
}

Você também pode gostar