You are on page 1of 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)

1
PHP

2 Cliente Servidor web

BD

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 Operadores relacionais == != < <= > >= === !== === (igualdade restrita)

PHP

Tipos de dados Booleanos Inteiros, Strings, Array, Object Nmeros reais (floating point) \n \t \r

Alguns caracteres especiais


Muda de linha Tabulao horizontal Volta incio da linha

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 1 2 3 4 5 6 7

$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>] switch (selector) { case valor1: <bloco> break; case valor2: <bloco> break; [default: <bloco>; ] } do <bloco de instrues> while (condio);

while (condio) <bloco de instrues>;

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.
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>'; }

ex.:

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; }